chore(deps): update dependency rack to v2 [security] #4
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:
'~>1.5.2'
->'~>2.2.8', '>= 2.2.8.1'
GitHub Vulnerability Alerts
CVE-2022-30123
There is a possible shell escape sequence injection vulnerability in the Lint
and CommonLogger components of Rack. This vulnerability has been assigned the
CVE identifier CVE-2022-30123.
Versions Affected: All.
Not affected: None
Fixed Versions: 2.0.9.1, 2.1.4.1, 2.2.3.1
Impact
Carefully crafted requests can cause shell escape sequences to be written to
the terminal via Rack's Lint middleware and CommonLogger middleware. These
escape sequences can be leveraged to possibly execute commands in the victim's
terminal.
Impacted applications will have either of these middleware installed, and
vulnerable apps may have something like this:
Or
All users running an affected release should either upgrade or use one of the
workarounds immediately.
Workarounds
Remove these middleware from your application
CVE-2022-30122
There is a possible denial of service vulnerability in the multipart parsing component of Rack. This vulnerability has been assigned the CVE identifier CVE-2022-30122.
Versions Affected: >= 1.2
Not affected: < 1.2
Fixed Versions: 2.0.9.1, 2.1.4.1, 2.2.3.1
Impact
Carefully crafted multipart POST requests can cause Rack's multipart parser to take much longer than expected, leading to a possible denial of service vulnerability.
Impacted code will use Rack's multipart parser to parse multipart posts. This includes directly using the multipart parser like this:
But it also includes reading POST data from a Rack request object like this:
All users running an affected release should either upgrade or use one of the workarounds immediately.
Workarounds
There are no feasible workarounds for this issue.
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-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-2018-16471
There is a possible XSS vulnerability in Rack before 2.0.6 and 1.6.11. Carefully crafted requests can impact the data returned by the
scheme
method onRack::Request
. Applications that expect the scheme to be limited to 'http' or 'https' and do not escape the return value could be vulnerable to an XSS attack. Note that applications using the normal escaping mechanisms provided by Rails may not impacted, but applications that bypass the escaping mechanisms, or do not use them may be vulnerable.CVE-2019-16782
There's a possible information leak / session hijack vulnerability in Rack. Attackers may be able to find and hijack sessions by using timing attacks targeting the session id. Session ids are usually stored and indexed in a database that uses some kind of scheme for speeding up lookups of that session id. By carefully measuring the amount of time it takes to look up a session, an attacker may be able to find a valid session id and hijack the session.
The session id itself may be generated randomly, but the way the session is indexed by the backing store does not use a secure comparison.
Impact
The session id stored in a cookie is the same id that is used when querying the backing session storage engine. Most storage mechanisms (for example a database) use some sort of indexing in order to speed up the lookup of that id. By carefully timing requests and session lookup failures, an attacker may be able to perform a timing attack to determine an existing session id and hijack that session.
Releases
The 1.6.12 and 2.0.8 releases are available at the normal locations.
Workarounds
There are no known workarounds.
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 Will Leinweber for reporting this!
CVE-2020-8184
A reliance on cookies without validation/integrity check security vulnerability exists in rack < 2.2.3, rack < 2.1.4 that makes it possible for an attacker to forge a secure or host-only cookie prefix.
CVE-2020-8161
A directory traversal vulnerability exists in rack < 2.2.0 that allows an attacker perform directory traversal vulnerability in the Rack::Directory app that is bundled with Rack which could result in information disclosure.
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.
Release Notes
rack/rack (rack)
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
What's Changed
New Contributors
Full Changelog: rack/rack@v2.2.7...v2.2.8
v2.2.7
Compare Source
What's Changed
New Contributors
Full Changelog: rack/rack@v2.2.6.4...v2.2.7
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
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
Fixed
Rack::Request#ip
to handle emptyforwarded_for
. (#1577, [@ioquatix])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
v2.1.4.1
Compare Source
v2.1.4
Compare Source
v2.1.3
Compare Source
v2.1.2
Compare Source
Rack::Builder#use
with keyword arguments (@kamipo)SessionHash#transform_keys
, no longer needed (@pavel)v2.1.1
Compare Source
Rack::Chunked
fromRack::Server
default middleware. (#1475, [@ioquatix])SessionId#to_s
. ([@jeremyevans])v2.1.0
Compare Source
Added
SameSite=None
cookie value. (@hennikul)Early Hints(103)
to status codes. (@egtra)Too Early(425)
to status codes. (@y-yagi)Bandwidth Limit Exceeded(509)
to status codes. (@CJKinni)ip_filter
. (@svcastaneda)rackup
. (@tenderlove)X-Accel-Mappings
header. (@yoshuki)sync: false
option toRack::Deflater
. (Eric Wong)Builder#freeze_app
to freeze application and all middleware instances. ([@jeremyevans])Rack::MockResponse
. (@petercline)Changed
X-Accel-Redirect
to percent-encoded path. (@diskkid)Rack::Static
upon initialization. (@rosenfeld)ShowExceptions
work with binary data. (@axyjo)X-Forwarded-For
with optional port. (@dpritchett)Time#httpdate
format for Expires, as proposed by RFC 7231. (@nanaya)Utils.status_code
raise an error when the status symbol is invalid instead of500
. (@adambutler)Request::SCHEME_WHITELIST
toRequest::ALLOWED_SCHEMES
.Multipart::Parser.get_filename
accept files with+
in their name. (@lucaskanashiro)frozen_string_literals
. (@pat)MockRequest#env_for
to rely on the input optionally responding to#size
instead of#length
. (@janko)Rack::File
->Rack::Files
and add deprecation notice. (@postmodern)Removed
to_ary
from Response (@tenderlove)Rack::Session::Memcache
in favor ofRack::Session::Dalli
from dalli gem (@fatkodima)Fixed
Documentation
Session::Abstract::ID
documentation. (tonytonyjan)HISTORY.md
andNEWS.md
withCHANGELOG.md
. (@twitnithegirl)v2.0.9.4
Compare Source
What's Changed
Full Changelog: rack/rack@v2.0.9.3...v2.0.9.4
v2.0.9.3
Compare Source
v2.0.9.2
Compare Source
v2.0.9.1
Compare Source
v2.0.9
Compare Source
SessionId#to_s
. ([@jeremyevans])SameSite=None
cookie value. (@hennikul)v2.0.8
Compare Source
Security
v2.0.7
Compare Source
Fixed
#eof?
on Rack input inMultipart::Parser
, as this breaks the specification. (@matthewd)v2.0.6
Compare Source
Fixed
Multipart::Parser
to avoid pathological parsing. (@tenderlove)#accepts_html
in theShowExceptions
middleware. (@tomelm)Request#scheme
to prevent a possible XSS attack. (@PatrickTulskie)v2.0.5
Compare Source
Fixed
MethodOverride
middleware instead of breaking. (@mclark)v2.0.4
Compare Source
Changed
Lock
middleware passes the originalenv
object. (@lugray)Multipart::Parser
when uploading large files. (@tompng)Multipart::Parser
for better performance. (@jkowens)Multipart::Parser
when uploading large files. (@tompng)Queue
. (@devmchakan)Fixed
ETag
middleware. (@matthewd)Documentation
v2.0.3
Compare Source
Changed
env
values are ASCII 8-bit encoded. (@eileencodes)Fixed
Session::Abstract::ID
. (@jnraine)v2.0.2
Compare Source
Added
Session::Abstract::SessionHash#fetch
to accept a block with a default value. (@yannvanhalewyn)Builder#freeze_app
to freeze application and all middleware. ([@jeremyevans])Changed
Fixed
NULL
bytes in multipart filenames. (@casperisfine)doc
group. (@tonytonyjan)Multipart::Parser
in theMethodOverride
middleware instead of letting them bubble up. (@carlzulauf)Utils#bytesize
method from theFile
middleware. (@brauliomartinezlm)Removed
deflate
encoding support to reduce caching overhead. (@devmchakan)Documentation
Deflater
documentation. (@mwpastore)v2.0.1
Compare Source
Changed
v1.6.13
Compare Source
v1.6.12
Compare Source
Security
v1.6.11
Compare Source
v1.6.10
Compare Source
v1.6.9
Compare Source
v1.6.8
Compare Source
v1.6.7
Compare Source
v1.6.6
Compare Source
v1.6.5
Compare Source
v1.6.4
Compare Source
v1.6.3
Compare Source
v1.6.2
Compare Source
v1.6.1
Compare Source
Security
v1.6.0
Compare Source
v1.5.5
Compare Source
v1.5.4
Compare Source
v1.5.3
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.