# CVE-2026-125111: Rack: Multipart parsing allows DoS via unbounded scan buffer growth

Status: published. Published: 2026-11-09. Updated: 2026-11-12.

Rack is a modular Ruby web server interface. Prior to 2.2.25, 3.1.23, and 3.2.8, Rack::Multipart::Parser can retain parsed data in its internal StringScanner buffer when reads end inside or immediately after multipart headers. An unauthenticated attacker can align many small parts with rack.multipart.buffer_size boundaries so the buffer grows with the request despite per-field, header, and preamble limits, causing a worker to exhaust memory. The attack requires only a well-formed multipart body and affects applications that parse multipart requests. This issue is fixed in versions 2.2.25, 3.1.23, and 3.2.8.

## Remediation

- fix: rack (rubygems): GitHub reports patched versions 2.2.25. Check the advisory for the affected release branch. (source: GitHub GHSA-5v64-555j-wjxm) — https://github.com/rack/rack/security/advisories/GHSA-5v64-555j-wjxm
- fix: rack (rubygems): GitHub reports patched versions 3.1.23. Check the advisory for the affected release branch. (source: GitHub GHSA-5v64-555j-wjxm) — https://github.com/rack/rack/security/advisories/GHSA-5v64-555j-wjxm
- fix: rack (rubygems): GitHub reports patched versions 3.2.8. Check the advisory for the affected release branch. (source: GitHub GHSA-5v64-555j-wjxm) — https://github.com/rack/rack/security/advisories/GHSA-5v64-555j-wjxm
- fix: rack (RubyGems): OSV reports a fixed version 2.2.25. Check the advisory for supported release branches. (source: OSV GHSA-5v64-555j-wjxm) — https://github.com/advisories/GHSA-5v64-555j-wjxm
- fix: rack (RubyGems): OSV reports a fixed version 3.1.23. Check the advisory for supported release branches. (source: OSV GHSA-5v64-555j-wjxm) — https://github.com/advisories/GHSA-5v64-555j-wjxm
- fix: rack (RubyGems): OSV reports a fixed version 3.2.8. Check the advisory for supported release branches. (source: OSV GHSA-5v64-555j-wjxm) — https://github.com/advisories/GHSA-5v64-555j-wjxm

## Affected products and versions

- rack / rack: < 2.2.25 (affected); >= 3.0, < 3.1.23 (affected); >= 3.2, < 3.2.8 (affected). Source: CNA: GitHub_M
-  / rack (rack): < 2.2.25 (affected, GitHub advisory range). Source: GitHub GHSA-5v64-555j-wjxm
-  / rack (rack): >= 3.0, < 3.1.23 (affected, GitHub advisory range). Source: GitHub GHSA-5v64-555j-wjxm
-  / rack (rack): >= 3.2, < 3.2.8 (affected, GitHub advisory range). Source: GitHub GHSA-5v64-555j-wjxm
-  / rack (rack): 0.1.0 (affected, RubyGems); 0.2.0 (affected, RubyGems); 0.3.0 (affected, RubyGems); 0.4.0 (affected, RubyGems); 0.9.0 (affected, RubyGems); 0.9.1 (affected, RubyGems); 1.0.0 (affected, RubyGems); 1.0.1 (affected, RubyGems); 1.1.0 (affected, RubyGems); 1.1.1 (affected, RubyGems); 1.1.1.pre (affected, RubyGems); 1.1.2 (affected, RubyGems); 1.1.3 (affected, RubyGems); 1.1.4 (affected, RubyGems); 1.1.5 (affected, RubyGems); 1.1.6 (affected, RubyGems); 1.2.0 (affected, RubyGems); 1.2.1 (affected, RubyGems); 1.2.2 (affected, RubyGems); 1.2.3 (affected, RubyGems); 1.2.4 (affected, RubyGems); 1.2.5 (affected, RubyGems); 1.2.6 (affected, RubyGems); 1.2.7 (affected, RubyGems); 1.2.8 (affected, RubyGems); 1.3.0 (affected, RubyGems); 1.3.0.beta (affected, RubyGems); 1.3.0.beta2 (affected, RubyGems); 1.3.1 (affected, RubyGems); 1.3.10 (affected, RubyGems); 1.3.2 (affected, RubyGems); 1.3.3 (affected, RubyGems); 1.3.4 (affected, RubyGems); 1.3.5 (affected, RubyGems); 1.3.6 (affected, RubyGems); 1.3.7 (affected, RubyGems); 1.3.8 (affected, RubyGems); 1.3.9 (affected, RubyGems); 1.4.0 (affected, RubyGems); 1.4.1 (affected, RubyGems); 1.4.2 (affected, RubyGems); 1.4.3 (affected, RubyGems); 1.4.4 (affected, RubyGems); 1.4.5 (affected, RubyGems); 1.4.6 (affected, RubyGems); 1.4.7 (affected, RubyGems); 1.5.0 (affected, RubyGems); 1.5.0.beta.1 (affected, RubyGems); 1.5.0.beta.2 (affected, RubyGems); 1.5.1 (affected, RubyGems); 1.5.2 (affected, RubyGems); 1.5.3 (affected, RubyGems); 1.5.4 (affected, RubyGems); 1.5.5 (affected, RubyGems); 1.6.0 (affected, RubyGems); 1.6.0.beta (affected, RubyGems); 1.6.0.beta2 (affected, RubyGems); 1.6.1 (affected, RubyGems); 1.6.10 (affected, RubyGems); 1.6.11 (affected, RubyGems); 1.6.12 (affected, RubyGems); 1.6.13 (affected, RubyGems); 1.6.2 (affected, RubyGems); 1.6.3 (affected, RubyGems); 1.6.4 (affected, RubyGems); 1.6.5 (affected, RubyGems); 1.6.6 (affected, RubyGems); 1.6.7 (affected, RubyGems); 1.6.8 (affected, RubyGems); 1.6.9 (affected, RubyGems); 2.0.0.alpha (affected, RubyGems); 2.0.0.rc1 (affected, RubyGems); 2.0.1 (affected, RubyGems); 2.0.2 (affected, RubyGems); 2.0.3 (affected, RubyGems); 2.0.4 (affected, RubyGems); 2.0.5 (affected, RubyGems); 2.0.6 (affected, RubyGems); 2.0.7 (affected, RubyGems); 2.0.8 (affected, RubyGems); 2.0.9 (affected, RubyGems); 2.0.9.1 (affected, RubyGems); 2.0.9.2 (affected, RubyGems); 2.0.9.3 (affected, RubyGems); 2.0.9.4 (affected, RubyGems); 2.1.0 (affected, RubyGems); 2.1.1 (affected, RubyGems); 2.1.2 (affected, RubyGems); 2.1.3 (affected, RubyGems); 2.1.4 (affected, RubyGems); 2.1.4.1 (affected, RubyGems); 2.1.4.2 (affected, RubyGems); 2.1.4.3 (affected, RubyGems); 2.1.4.4 (affected, RubyGems); 2.2.0 (affected, RubyGems); 2.2.1 (affected, RubyGems); 2.2.10 (affected, RubyGems); 2.2.11 (affected, RubyGems); 2.2.12 (affected, RubyGems); 2.2.13 (affected, RubyGems); 2.2.14 (affected, RubyGems); 2.2.15 (affected, RubyGems); 2.2.16 (affected, RubyGems); 2.2.17 (affected, RubyGems); 2.2.18 (affected, RubyGems); 2.2.19 (affected, RubyGems); 2.2.2 (affected, RubyGems); 2.2.20 (affected, RubyGems); 2.2.21 (affected, RubyGems); 2.2.22 (affected, RubyGems); 2.2.23 (affected, RubyGems); 2.2.24 (affected, RubyGems); 2.2.3 (affected, RubyGems); 2.2.3.1 (affected, RubyGems); 2.2.4 (affected, RubyGems); 2.2.5 (affected, RubyGems); 2.2.6 (affected, RubyGems); 2.2.6.1 (affected, RubyGems); 2.2.6.2 (affected, RubyGems); 2.2.6.3 (affected, RubyGems); 2.2.6.4 (affected, RubyGems); 2.2.7 (affected, RubyGems); 2.2.8 (affected, RubyGems); 2.2.8.1 (affected, RubyGems); 2.2.9 (affected, RubyGems); Ecosystem version events: introduced 0; fixed 2.2.25. Source: OSV GHSA-5v64-555j-wjxm
-  / rack (rack): 3.0.0 (affected, RubyGems); 3.0.1 (affected, RubyGems); 3.0.10 (affected, RubyGems); 3.0.11 (affected, RubyGems); 3.0.12 (affected, RubyGems); 3.0.13 (affected, RubyGems); 3.0.14 (affected, RubyGems); 3.0.15 (affected, RubyGems); 3.0.16 (affected, RubyGems); 3.0.17 (affected, RubyGems); 3.0.18 (affected, RubyGems); 3.0.2 (affected, RubyGems); 3.0.3 (affected, RubyGems); 3.0.4 (affected, RubyGems); 3.0.4.1 (affected, RubyGems); 3.0.4.2 (affected, RubyGems); 3.0.5 (affected, RubyGems); 3.0.6 (affected, RubyGems); 3.0.6.1 (affected, RubyGems); 3.0.7 (affected, RubyGems); 3.0.8 (affected, RubyGems); 3.0.9 (affected, RubyGems); 3.0.9.1 (affected, RubyGems); 3.1.0 (affected, RubyGems); 3.1.1 (affected, RubyGems); 3.1.10 (affected, RubyGems); 3.1.11 (affected, RubyGems); 3.1.12 (affected, RubyGems); 3.1.13 (affected, RubyGems); 3.1.14 (affected, RubyGems); 3.1.15 (affected, RubyGems); 3.1.16 (affected, RubyGems); 3.1.17 (affected, RubyGems); 3.1.18 (affected, RubyGems); 3.1.19 (affected, RubyGems); 3.1.2 (affected, RubyGems); 3.1.20 (affected, RubyGems); 3.1.21 (affected, RubyGems); 3.1.22 (affected, RubyGems); 3.1.3 (affected, RubyGems); 3.1.4 (affected, RubyGems); 3.1.5 (affected, RubyGems); 3.1.6 (affected, RubyGems); 3.1.7 (affected, RubyGems); 3.1.8 (affected, RubyGems); 3.1.9 (affected, RubyGems); Ecosystem version events: introduced 3.0.0; fixed 3.1.23. Source: OSV GHSA-5v64-555j-wjxm
-  / rack (rack): 3.2.0 (affected, RubyGems); 3.2.1 (affected, RubyGems); 3.2.2 (affected, RubyGems); 3.2.3 (affected, RubyGems); 3.2.4 (affected, RubyGems); 3.2.5 (affected, RubyGems); 3.2.6 (affected, RubyGems); 3.2.7 (affected, RubyGems); Ecosystem version events: introduced 3.2.0; fixed 3.2.8. Source: OSV GHSA-5v64-555j-wjxm

## Severity and prioritization

- CVSS 3.1: 7.5 (high); CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H; source: CNA: GitHub_M

- CVSS 3.1: 7.5 (high); CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H; source: NVD: security-advisories@github.com

- CISA KEV: No listing in collected sources

- EPSS: 0.37% as of 2026-11-12; percentile 30.88%

- SSVC: exploitation none; automatable yes; technical impact partial; source ADP: CISA-ADP

- Weaknesses: CWE-400

## Exploit evidence

No exploit evidence in collected sources. This is not proof of no exploitation.

## References

- https://github.com/rack/rack/security/advisories/GHSA-5v64-555j-wjxm (CNA: GitHub_M; x_refsource_CONFIRM)

- https://github.com/rack/rack/commit/244e75a840cee0823f86d5d01dc374505a8abed8 (CNA: GitHub_M; x_refsource_MISC)

- https://github.com/rack/rack/commit/2eaa5b1026a03a43b6537b1a0b233707ba887702 (CNA: GitHub_M; x_refsource_MISC)

- https://github.com/rack/rack/commit/c9b4698595050838342bd3b5a0fc9ab908065f8f (CNA: GitHub_M; x_refsource_MISC)

- https://github.com/rack/rack/commit/244e75a840cee0823f86d5d01dc374505a8abed8 (security-advisories@github.com)

- https://github.com/rack/rack/commit/2eaa5b1026a03a43b6537b1a0b233707ba887702 (security-advisories@github.com)

- https://github.com/rack/rack/commit/c9b4698595050838342bd3b5a0fc9ab908065f8f (security-advisories@github.com)

- https://github.com/rack/rack/security/advisories/GHSA-5v64-555j-wjxm (security-advisories@github.com)

- https://github.com/rack/rack/security/advisories/GHSA-5v64-555j-wjxm (GitHub Security Advisories; advisory)

- https://github.com/advisories/GHSA-5v64-555j-wjxm (OSV / GitHub Security Advisories; advisory)

- https://osv.dev/vulnerability/GHSA-5v64-555j-wjxm (OSV / GitHub Security Advisories; osv)

## Provenance

- CNA: GitHub_M: https://www.cve.org/CVERecord?id=CVE-2026-125111; retrieved 2026-11-12; source updated 2026-11-12

- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-125111; retrieved 2026-11-10; source updated 2026-11-09

- GitHub Security Advisories: https://github.com/rack/rack/security/advisories/GHSA-5v64-555j-wjxm; retrieved 2026-11-12; source updated 2026-11-09

- OSV / GitHub Security Advisories: https://osv.dev/vulnerability/GHSA-5v64-555j-wjxm; retrieved 2026-11-12; source updated 2026-11-10

- FIRST EPSS: https://api.first.org/data/v1/epss?cve=CVE-2026-125111; retrieved 2026-11-12; source updated Not reported

Revision: 74e5d313addb48aec89bb723e2c16100f129a573ff4ded59ab9a460d771b6eb3

Canonical: https://y2.dev/cve/CVE-2026-125111

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.