-
Notifications
You must be signed in to change notification settings - Fork 3
Update dependency rack to v2.2.13 [SECURITY] #191
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
renovate
wants to merge
1
commit into
master
Choose a base branch
from
renovate/rubygems-rack-vulnerability
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@rultor please, try to merge |
@renovate[bot] @yegor256 Oops, I failed. You can see the full log here (spent 2min)
|
1636787
to
07d527b
Compare
07d527b
to
74996e4
Compare
74996e4
to
48d248c
Compare
48d248c
to
b119d1f
Compare
b119d1f
to
182cc40
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
'2.1.4.1'
->'2.2.13'
GitHub Vulnerability Alerts
CVE-2022-44570
There is a possible denial of service vulnerability in the Range header parsing component of Rack. This vulnerability has been assigned the CVE identifier CVE-2022-44570.
Versions Affected: >= 1.5.0 Not affected: None. Fixed Versions: 2.0.9.2, 2.1.4.2, 2.2.6.2, 3.0.0.1
Impact
Carefully crafted input can cause the Range header parsing component in Rack to take an unexpected amount of time, possibly resulting in a denial of service attack vector. Any applications that deal with Range requests (such as streaming applications, or applications that serve files) may be impacted.
Releases
The fixed releases are available at the normal locations.
Workarounds
There are no feasible workarounds for this issue.
Patches
To aid users who aren’t able to upgrade immediately we have provided patches for the two supported release series. They are in git-am format and consist of a single changeset.
CVE-2022-44572
There is a denial of service vulnerability in the multipart parsing component of Rack. This vulnerability has been assigned the CVE identifier CVE-2022-44572.
Versions Affected: >= 2.0.0 Not affected: None. Fixed Versions: 2.0.9.2, 2.1.4.2, 2.2.6.1, 3.0.0.1
Impact
Carefully crafted input can cause RFC2183 multipart boundary parsing in Rack to take an unexpected amount of time, possibly resulting in a denial of service attack vector. Any applications that parse multipart posts using Rack (virtually all Rails applications) are impacted.
Releases
The fixed releases are available at the normal locations.
Workarounds
There are no feasible workarounds for this issue.
Patches
To aid users who aren’t able to upgrade immediately we have provided patches for the two supported release series. They are in git-am format and consist of a single changeset.
CVE-2022-44571
There is a denial of service vulnerability in the Content-Disposition parsing component of Rack. This vulnerability has been assigned the CVE identifier CVE-2022-44571.
Versions Affected: >= 2.0.0 Not affected: None. Fixed Versions: 2.0.9.2, 2.1.4.2, 2.2.6.1, 3.0.0.1
Impact
Carefully crafted input can cause Content-Disposition header parsing in Rack to take an unexpected amount of time, possibly resulting in a denial of service attack vector. This header is used typically used in multipart parsing. Any applications that parse multipart posts using Rack (virtually all Rails applications) are impacted.
Releases
The fixed releases are available at the normal locations.
Workarounds
There are no feasible workarounds for this issue.
Patches
To aid users who aren’t able to upgrade immediately we have provided patches for the two supported release series. They are in git-am format and consist of a single changeset.
CVE-2023-27530
There is a possible DoS vulnerability in the Multipart MIME parsing code in Rack. This vulnerability has been assigned the CVE identifier CVE-2023-27530.
Versions Affected: All. Not affected: None Fixed Versions: 3.0.4.2, 2.2.6.3, 2.1.4.3, 2.0.9.3
Impact
The Multipart MIME parsing code in Rack limits the number of file parts, but does not limit the total number of parts that can be uploaded. Carefully crafted requests can abuse this and cause multipart parsing to take longer than expected.
All users running an affected release should either upgrade or use one of the workarounds immediately.
Workarounds
A proxy can be configured to limit the POST body size which will mitigate this issue.
CVE-2023-27539
There is a denial of service vulnerability in the header parsing component of Rack. This vulnerability has been assigned the CVE identifier CVE-2023-27539.
Versions Affected: >= 2.0.0 Not affected: None. Fixed Versions: 2.2.6.4, 3.0.6.1
Impact
Carefully crafted input can cause header parsing in Rack to take an unexpected amount of time, possibly resulting in a denial of service attack vector. Any applications that parse headers using Rack (virtually all Rails applications) are impacted.
Workarounds
Setting Regexp.timeout in Ruby 3.2 is a possible workaround.
CVE-2024-26146
Possible Denial of Service Vulnerability in Rack Header Parsing
There is a possible denial of service vulnerability in the header parsing
routines in Rack. This vulnerability has been assigned the CVE identifier
CVE-2024-26146.
Versions Affected: All.
Not affected: None
Fixed Versions: 2.0.9.4, 2.1.4.4, 2.2.8.1, 3.0.9.1
Impact
Carefully crafted headers can cause header parsing in Rack to take longer than
expected resulting in a possible denial of service issue. Accept and Forwarded
headers are impacted.
Ruby 3.2 has mitigations for this problem, so Rack applications using Ruby 3.2
or newer are unaffected.
Releases
The fixed releases are available at the normal locations.
Workarounds
There are no feasible workarounds for this issue.
Patches
To aid users who aren't able to upgrade immediately we have provided patches for
the two supported release series. They are in git-am format and consist of a
single changeset.
Credits
Thanks to svalkanov for reporting this and
providing patches!
CVE-2024-26141
Possible DoS Vulnerability with Range Header in Rack
There is a possible DoS vulnerability relating to the Range request header in
Rack. This vulnerability has been assigned the CVE identifier CVE-2024-26141.
Versions Affected: >= 1.3.0.
Not affected: < 1.3.0
Fixed Versions: 3.0.9.1, 2.2.8.1
Impact
Carefully crafted Range headers can cause a server to respond with an
unexpectedly large response. Responding with such large responses could lead
to a denial of service issue.
Vulnerable applications will use the
Rack::File
middleware or theRack::Utils.byte_ranges
methods (this includes Rails applications).Releases
The fixed releases are available at the normal locations.
Workarounds
There are no feasible workarounds for this issue.
Patches
To aid users who aren't able to upgrade immediately we have provided patches for
the two supported release series. They are in git-am format and consist of a
single changeset.
Credits
Thank you ooooooo_q for the report and
patch
CVE-2024-25126
Summary
The above regexp is subject to ReDos. 50K blank characters as a prefix to the header will take over 10s to split.
PoC
A simple HTTP request with lots of blank characters in the content-type header:
Impact
It's a very easy to craft ReDoS. Like all ReDoS the impact is debatable.
CVE-2025-25184
Summary
Rack::CommonLogger
can be exploited by crafting input that includes newline characters to manipulate log entries. The supplied proof-of-concept demonstrates injecting malicious content into logs.Details
When a user provides the authorization credentials via
Rack::Auth::Basic
, if success, the username will be put inenv['REMOTE_USER']
and later be used byRack::CommonLogger
for logging purposes.The issue occurs when a server intentionally or unintentionally allows a user creation with the username contain CRLF and white space characters, or the server just want to log every login attempts. If an attacker enters a username with CRLF character, the logger will log the malicious username with CRLF characters into the logfile.
Impact
Attackers can break log formats or insert fraudulent entries, potentially obscuring real activity or injecting malicious data into log files.
Mitigation
CVE-2025-27111
Summary
Rack::Sendfile
can be exploited by crafting input that includes newline characters to manipulate log entries.Details
The
Rack::Sendfile
middleware logs unsanitized header values from theX-Sendfile-Type
header. An attacker can exploit this by injecting escape sequences (such as newline characters) into the header, resulting in log injection.Impact
This vulnerability can distort log files, obscure attack traces, and complicate security auditing.
Mitigation
Rack::Sendfile
.CVE-2025-27610
Summary
Rack::Static
can serve files under the specifiedroot:
even ifurls:
are provided, which may expose other files under the specifiedroot:
unexpectedly.Details
The vulnerability occurs because
Rack::Static
does not properly sanitize user-supplied paths before serving files. Specifically, encoded path traversal sequences are not correctly validated, allowing attackers to access files outside the designated static file directory.Impact
By exploiting this vulnerability, an attacker can gain access to all files under the specified
root:
directory, provided they are able to determine then path of the file.Mitigation
Rack::Static
, orroot:
points at a directory path which only contains files which should be accessed publicly.It is likely that a CDN or similar static file server would also mitigate the issue.
Release Notes
rack/rack (rack)
v2.2.13
Compare Source
Security
Rack::Static
.v2.2.12
Compare Source
Security
Rack::Sendfile
.v2.2.11
Compare Source
Security
Rack::CommonLogger
.v2.2.10
Compare Source
v2.2.9
Compare Source
v2.2.8.1
Compare Source
What's Changed
Full Changelog: rack/rack@v2.2.8...v2.2.8.1
v2.2.8
Compare Source
v2.2.7
Compare Source
v2.2.6.4
Compare Source
v2.2.6.3
Compare Source
v2.2.6.2
Compare Source
v2.2.6.1
Compare Source
v2.2.6
Compare Source
v2.2.5
Compare Source
Fixed
Rack::URLMap
uses non-deprecated form ofRegexp.new
. (#1998, @weizheheng)v2.2.4
Compare Source
Rack::ETag
middleware. (#1919, @ioquatix)v2.2.3.1
Compare Source
Security
v2.2.3
Compare Source
Security
v2.2.2
Compare Source
Fixed
Rack::Request#host
value. (#1591, [@ioquatix])Rack::Handler::Thin
implementation. (#1583, [@jeremyevans])v2.2.1
Compare Source
Security
Rack::Sendfile
.v2.2.0
Compare Source
SPEC Changes
rack.session
request environment entry must respond toto_hash
and return unfrozen Hash. ([@jeremyevans])Added
rackup
supports multiple-r
options and will require all arguments. ([@jeremyevans])Server
supports an array of paths to require for the:require
option. (@khotta)Files
supports multipart range requests. (@fatkodima)Multipart::UploadedFile
supports an IO-like object instead of using the filesystem, using:filename
and:io
options. ([@jeremyevans])Multipart::UploadedFile
supports keyword arguments:path
,:content_type
, and:binary
in addition to positional arguments. ([@jeremyevans])Static
supports a:cascade
option for calling the app if there is no matching file. ([@jeremyevans])Session::Abstract::SessionHash#dig
. ([@jeremyevans])Response.[]
andMockResponse.[]
for creating instances using status, headers, and body. ([@ioquatix])Rack::Response
. (#1555, [@ioquatix])Changed
Request#params
no longer rescues EOFError. ([@jeremyevans])Directory
uses a streaming approach, significantly improving time to first byte for large directories. ([@jeremyevans])Directory
no longer includes a Parent directory link in the root directory index. ([@jeremyevans])QueryParser#parse_nested_query
uses original backtrace when reraising exception with new class. ([@jeremyevans])ConditionalGet
follows RFC 7232 precedence if both If-None-Match and If-Modified-Since headers are provided. ([@jeremyevans]).ru
files supports thefrozen-string-literal
magic comment. (@eregon)Etag
will continue sending ETag even if the response should not be cached. Streaming no longer works without a workaround, see #1619. (@henm)Request#host_with_port
no longer includes a colon for a missing or empty port. (@AlexWayfer)Files
handling of range requests no longer return a body that supportsto_path
, to ensure range requests are handled correctly. ([@jeremyevans])Multipart::Generator
only includesContent-Length
for files with paths, andContent-Disposition
filename
if theUploadedFile
instance has one. ([@jeremyevans])Request#ssl?
is true for thewss
scheme (secure websockets). ([@jeremyevans])Rack::HeaderHash
is memoized by default. (#1549, [@ioquatix])Rack::Directory
allow directory traversal inside root directory. (#1417, @ThomasSevestre)Rack::Request
.#host
and#host_with_port
have been changed to correctly return IPv6 addresses formatted with square brackets, as defined by RFC3986. (#1561, [@ioquatix])Rack::Builder
parsing options on first#\
line is deprecated. (#1574, [@ioquatix])Removed
Directory#path
as it was not used and always returned nil. ([@jeremyevans])BodyProxy#each
as it was only needed to work around a bug in Ruby <1.9.3. ([@jeremyevans])URLMap::INFINITY
andURLMap::NEGATIVE_INFINITY
, in favor ofFloat::INFINITY
. (@ch1c0t)Rack::File
. It will be deprecated again in rack 2.2 or 3.0. (@rafaelfranca)Rack::Files#response_body
as the implementation was broken. (#1153, [@ioquatix])SERVER_ADDR
which was never part of the original SPEC. (#1573, [@ioquatix])Fixed
Directory
correctly handles root paths containing glob metacharacters. ([@jeremyevans])Cascade
uses a new response object for each call if initialized with no apps. ([@jeremyevans])BodyProxy
correctly delegates keyword arguments to the body object on Ruby 2.7+. ([@jeremyevans])BodyProxy#method
correctly handles methods delegated to the body object. ([@jeremyevans])Request#host
andRequest#host_with_port
handle IPv6 addresses correctly. (@AlexWayfer)Lint
checks when response hijacking thatrack.hijack
is called with a valid object. ([@jeremyevans])Response#write
correctly updatesContent-Length
if initialized with a body. ([@jeremyevans])CommonLogger
includesSCRIPT_NAME
when logging. (@Erol)Utils.parse_nested_query
correctly handles empty queries, using an empty instance of the params class instead of a hash. ([@jeremyevans])Directory
correctly escapes paths in links. (@yous)Request#delete_cookie
and relatedUtils
methods handle:domain
and:path
options in same call. ([@jeremyevans])Request#delete_cookie
and relatedUtils
methods do an exact match on:domain
and:path
options. ([@jeremyevans])Static
no longer adds headers when a gzipped file request has a 304 response. (@chooh)ContentLength
setsContent-Length
response header even for bodies not responding toto_ary
. ([@jeremyevans])Thin::Controllers::Controller
. ([@jeremyevans]):BindAddress
option. ([@jeremyevans])ShowExceptions
handles invalid POST data. ([@jeremyevans])Lint
checks response is array with 3 elements, per SPEC. ([@jeremyevans]):SSLEnable
option when using WEBrick handler. (Gregor Melhorn);
as delimiter when parsing cookies. (@mrageh)Utils::HeaderHash#clear
clears the name mapping as well. (@raxoft)nil
Rack::Files.new
, which notably fixes Rails' currentActiveStorage::FileServer
implementation. ([@ioquatix])Documentation
v2.1.4.4
Compare Source
What's Changed
Full Changelog: rack/rack@v2.1.4.3...v2.1.4.4
v2.1.4.3
Compare Source
v2.1.4.2
Compare Source
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.