Skip to main content
CVE-2026-125108VulnerabilityPublished

Rack: Multipart boundary ambiguity guard

Affects rackSource GCVE Database

0
Compare

Mentioned vulnerabilities

Authoritative record:CVE-2026-125108· Low 3.7

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

CVSS 3.1 base score
3.7Low
How severe the flaw is on the 0–10 CVSS scale.

Thin evidence

One scorer or none
CVSS scores by source
CNA (GitHub_M)CVSS 3.13.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:N

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 9 Nov 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq 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

ProductAffectedFixed in
RubyGemsrackAffected
  • <2.2.25
Fixed in
  • 2.2.25
RubyGemsrackAffected
  • >=3.0.0 <3.1.23
Fixed in
  • 3.1.23
RubyGemsrackAffected
  • >=3.2.0 <3.2.8
Fixed in
  • 3.2.8

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

Community reviews

Loading reviews…