Skip to content

Commit 7bd6128

Browse files
Update dependency rack to v3.2.3 [SECURITY] (#678)
This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [rack](https://redirect.github.com/rack/rack) ([changelog](https://redirect.github.com/rack/rack/blob/main/CHANGELOG.md)) | `3.2.2` -> `3.2.3` | [![age](https://developer.mend.io/api/mc/badges/age/rubygems/rack/3.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/rubygems/rack/3.2.2/3.2.3?slim=true)](https://docs.renovatebot.com/merge-confidence/) | ### GitHub Vulnerability Alerts #### [CVE-2025-61780](https://redirect.github.com/rack/rack/security/advisories/GHSA-r657-rxjc-j557) ## Summary A possible information disclosure vulnerability existed in `Rack::Sendfile` when running behind a proxy that supports `x-sendfile` headers (such as Nginx). Specially crafted headers could cause `Rack::Sendfile` to miscommunicate with the proxy and trigger unintended internal requests, potentially bypassing proxy-level access restrictions. ## Details When `Rack::Sendfile` received untrusted `x-sendfile-type` or `x-accel-mapping` headers from a client, it would interpret them as proxy configuration directives. This could cause the middleware to send a "redirect" response to the proxy, prompting it to reissue a new internal request that was **not subject to the proxy's access controls**. An attacker could exploit this by: 1. Setting a crafted `x-sendfile-type: x-accel-redirect` header. 2. Setting a crafted `x-accel-mapping` header. 3. Requesting a path that qualifies for proxy-based acceleration. ## Impact Attackers could bypass proxy-enforced restrictions and access internal endpoints intended to be protected (such as administrative pages). The vulnerability did not allow arbitrary file reads but could expose sensitive application routes. This issue only affected systems meeting all of the following conditions: * The application used `Rack::Sendfile` with a proxy that supports `x-accel-redirect` (e.g., Nginx). * The proxy did **not** always set or remove the `x-sendfile-type` and `x-accel-mapping` headers. * The application exposed an endpoint that returned a body responding to `.to_path`. ## Mitigation * Upgrade to a fixed version of Rack which requires explicit configuration to enable `x-accel-redirect`: ```ruby use Rack::Sendfile, "x-accel-redirect" ``` * Alternatively, configure the proxy to always set or strip the headers (you should be doing this!): ```nginx proxy_set_header x-sendfile-type x-accel-redirect; proxy_set_header x-accel-mapping /var/www/=/files/; ``` * Or in Rails applications, disable sendfile completely: ```ruby config.action_dispatch.x_sendfile_header = nil ``` #### [CVE-2025-61919](https://redirect.github.com/rack/rack/security/advisories/GHSA-6xw4-3v39-52mm) ## Summary `Rack::Request#POST` reads the entire request body into memory for `Content-Type: application/x-www-form-urlencoded`, calling `rack.input.read(nil)` without enforcing a length or cap. Large request bodies can therefore be buffered completely into process memory before parsing, leading to denial of service (DoS) through memory exhaustion. ## Details When handling non-multipart form submissions, Rack’s request parser performs: ```ruby form_vars = get_header(RACK_INPUT).read ``` Since `read` is called with no argument, the entire request body is loaded into a Ruby `String`. This occurs before query parameter parsing or enforcement of any `params_limit`. As a result, Rack applications without an upstream body-size limit can experience unbounded memory allocation proportional to request size. ## Impact Attackers can send large `application/x-www-form-urlencoded` bodies to consume process memory, causing slowdowns or termination by the operating system (OOM). The effect scales linearly with request size and concurrency. Even with parsing limits configured, the issue occurs *before* those limits are enforced. ## Mitigation * Update to a patched version of Rack that enforces form parameter limits using `query_parser.bytesize_limit`, preventing unbounded reads of `application/x-www-form-urlencoded` bodies. * Enforce strict maximum body size at the proxy or web server layer (e.g., Nginx `client_max_body_size`, Apache `LimitRequestBody`). --- ### Release Notes <details> <summary>rack/rack (rack)</summary> ### [`v3.2.3`](https://redirect.github.com/rack/rack/compare/v3.2.2...v3.2.3) [Compare Source](https://redirect.github.com/rack/rack/compare/v3.2.2...v3.2.3) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "" in timezone Asia/Tokyo, Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/line/line-bot-sdk-ruby). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNDMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE0My4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbImRlcGVuZGVuY3kgdXBncmFkZSJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 parent 06934c6 commit 7bd6128

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ GEM
5858
prism (1.5.1)
5959
public_suffix (6.0.1)
6060
racc (1.8.1)
61-
rack (3.2.2)
61+
rack (3.2.3)
6262
rackup (2.2.1)
6363
rack (>= 3)
6464
rainbow (3.1.1)

0 commit comments

Comments
 (0)