Rack: Multipart boundary ambiguity guard
Affects rackSource GCVE Database
Mentioned vulnerabilities
Not known to be exploited · CVSS 3.7 Low : upgrade to 2.2.25 when convenient.
Data as of 10 Nov 2026, 20:05 UTC
Thin evidence
One scorer or none| CNA (GitHub_M) | CVSS 3.1 | 3.7 |
|---|
- Patch
- Available – fixed in 2.2.25, 3.1.23, 3.2.8
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:NExploitation evidence
Disclosed: evidence found.
CVE published 9 Nov 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 10 Nov 2026.
What to do
Upgrade rack to 2.2.25; rack to 3.1.23; rack to 3.2.8.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| RubyGemsrack | Affected
| Fixed in
|
| RubyGemsrack | Affected
| Fixed in
|
| RubyGemsrack | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
Description
## Summary The guard added for CVE-2026-26961 (GHSA-vgpv-f759-9wx3), which rejects multipart requests with more than one `boundary` parameter, only inspects the part of the `Content-Type` header after the boundary it extracts. A `Content-Type` whose first `boundary` parameter is empty or begins with a quote, semicolon, or comma is skipped by the extraction pattern, so a second `boundary` parameter is accepted silently and Rack parses the body with a boundary that a conforming parser would not derive from the header. ## Details `Rack::Multipart::Parser.parse_boundary` extracts the boundary with a regular expression that uses a lazy prefix and a value class excluding `"`, `;`, and `,`. For a header such as `multipart/form-data; boundary=";boundary=AaB03x"` or `multipart/form-data; boundary=; boundary=AaB03x`, the pattern skips the first `boundary=` and anchors on the second, and the subsequent check for another `boundary=` in the remaining text finds nothing. Rack then uses `AaB03x`. RFC 9110 parses the first header as a single parameter whose value is `;boundary=AaB03x`, which is not a legal boundary under RFC 2046, so the only conformant outcome is rejection. Inspecting intermediaries that implement the standard grammar, such as ModSecurity, see a different boundary or no multipart body at all. The fix counts `boundary=` occurrences across the entire header value and rejects the request when there is more than one. ## Impact As with CVE-2026-26961, an attacker can craft a multipart request that a web application firewall or other inspecting proxy in front of a Rack application interprets differently from Rack, so form fields and file uploads reach the application without inspection. Rack itself grants no capability beyond that of a well-formed request with the same body. All supported versions, including 2.2, are affected. ## Mitigation * Update to a patched version of Rack. * Reject requests whose `Content-Type` contains more than one `boundary` parameter at the reverse proxy.
References
- github.com/rack/rack/security/advisories/GHSA-p8x9-v4hv-2w4g (opens in a new tab)
- nvd.nist.gov/vuln/detail/CVE-2026-125108 (opens in a new tab)
- github.com/rack/rack/commit/19a1a19cb4da97d61c8d5effeb2e927c44370ae9 (opens in a new tab)
- github.com/rack/rack/commit/a29512324265790a5536b830490075d0d79323be (opens in a new tab)
- github.com/rack/rack/commit/d5e928b803da30b8e40171dbd4be39bed7daa6fa (opens in a new tab)
- github.com/rack/rack (opens in a new tab)
- github.com/rack/rack/releases/tag/v2.2.25 (opens in a new tab)
- github.com/rack/rack/releases/tag/v3.1.23 (opens in a new tab)
- github.com/rack/rack/releases/tag/v3.2.8 (opens in a new tab)
- github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/GHSA-p8x9-v4hv-2w4g.yml (opens in a new tab)