CVE-2026-34827
Rack: Algorithmic-Complexity DoS in Rack::Multipart::Parser
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21, and 3.2.0 to before 3.2.6, Rack::Multipart::Parser#handle_mime_head parses quoted multipart parameters such as Content-Disposition: form-data; name="..." using repeated String#index searches combined with String#slice! prefix deletion. For escape-heavy quoted values, this causes super-linear processing. An unauthenticated attacker can send a crafted multipart/form-data request containing many parts with long backslash-escaped parameter values to trigger excessive CPU usage during multipart parsing. This results in a denial of service condition in Rack applications that accept multipart form data. This issue has been patched in versions 3.1.21 and 3.2.6.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
Rack: Algorithmic-Complexity DoS in Rack::Multipart::Parser
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21, and 3.2.0 to before 3.2.6, Rack::Multipart::Parser#handle_mime_head parses quoted multipart parameters such as Content-Disposition: form-data; name="..." using repeated String#index searches combined with String#slice! prefix deletion. For escape-heavy quoted values, this causes super-linear processing. An unauthenticated attacker can send a crafted multipart/form-data request containing many parts with long backslash-escaped parameter values to trigger excessive CPU usage during multipart parsing. This results in a denial of service condition in Rack applications that accept multipart form data. This issue has been patched in versions 3.1.21 and 3.2.6.
- Record
CVE-2026-34827- 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 - Weakness
- CWE-407, CWE-400, CWE-770, CWE-770
- Updated
- 2026-11-02
EUVDEUVD-2026-18474
7.5
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21, and 3.2.0 to before 3.2.6, Rack::Multipart::Parser#handle_mime_head parses quoted multipart parameters such as Content-Disposition: form-data; name="..." using repeated String#index searches combined with String#slice! prefix deletion. For escape-heavy quoted values, this causes super-linear processing. An unauthenticated attacker can send a crafted multipart/form-data request containing many parts with long backslash-escaped parameter values to trigger excessive CPU usage during multipart parsing. This results in a denial of service condition in Rack applications that accept multipart form data. This issue has been patched in versions 3.1.21 and 3.2.6.
- Record
EUVD-2026-18474- 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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-v6x5-cg8r-vv6x
7.5
Rack's multipart header parsing allows Denial of Service via escape-heavy quoted parameters
Summary
Rack::Multipart::Parser#handle_mime_head parses quoted multipart parameters such as Content-Disposition: form-data; name="..." using repeated String#index searches combined with String#slice! prefix deletion. For escape-heavy quoted values, this causes super-linear processing.
An unauthenticated attacker can send a crafted multipart/form-data request containing many parts with long backslash-escaped parameter values to trigger excessive CPU usage during multipart parsing.
This results in a denial of service condition in Rack applications that accept multipart form data.
Details
Rack::Multipart::Parser#handle_mime_head parses quoted parameter values by repeatedly:
- Searching for the next quote or backslash,
- Copying the preceding substring into a new buffer, and
- Removing the processed prefix from the original string with
slice!.
An attacker can exploit this by sending a multipart request with many parts whose name parameters contain long escape-heavy values such as:
name="a\\a\\a\\a\\a\\..."
Under default Rack limits, a request can contain up to 4095 parts. If many of those parts use long quoted values with dense escape characters, the parser performs disproportionately expensive CPU work while remaining within normal request size and part-count limits.
Impact
Any Rack application that accepts multipart/form-data requests may be affected, including file upload endpoints and standard HTML form handlers.
An unauthenticated attacker can send crafted multipart requests that consume excessive CPU time during request parsing. Repeated requests can tie up application workers, reduce throughput, and degrade or deny service availability.
Mitigation
- Update to a patched version of Rack that parses quoted multipart parameters without repeated rescanning and destructive prefix deletion.
- Apply request throttling or rate limiting to multipart upload endpoints.
- Where operationally feasible, restrict or isolate multipart parsing on untrusted high-volume endpoints.
- Record
GHSA-v6x5-cg8r-vv6x- 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 - Weakness
- CWE-400, CWE-407, CWE-770
- Updated
- 2026-11-02
NVD
7.5
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21, and 3.2.0 to before 3.2.6, Rack::Multipart::Parser#handle_mime_head parses quoted multipart parameters such as Content-Disposition: form-data; name="..." using repeated String#index searches combined with String#slice! prefix deletion. For escape-heavy quoted values, this causes super-linear processing. An unauthenticated attacker can send a crafted multipart/form-data request containing many parts with long backslash-escaped parameter values to trigger excessive CPU usage during multipart parsing. This results in a denial of service condition in Rack applications that accept multipart form data. This issue has been patched in versions 3.1.21 and 3.2.6.
- Record
CVE-2026-34827- 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 - Weakness
- CWE-400, CWE-407, CWE-770
- Updated
- 2026-11-02
OSV
7.5
Rack: Algorithmic-Complexity DoS in Rack::Multipart::Parser
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21, and 3.2.0 to before 3.2.6, Rack::Multipart::Parser#handle_mime_head parses quoted multipart parameters such as Content-Disposition: form-data; name="..." using repeated String#index searches combined with String#slice! prefix deletion. For escape-heavy quoted values, this causes super-linear processing. An unauthenticated attacker can send a crafted multipart/form-data request containing many parts with long backslash-escaped parameter values to trigger excessive CPU usage during multipart parsing. This results in a denial of service condition in Rack applications that accept multipart form data. This issue has been patched in versions 3.1.21 and 3.2.6.
- Record
CVE-2026-34827- 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 - Weakness
- CWE-400, CWE-407, CWE-770
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-34827
7.5
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21, and 3.2.0 to before 3.2.6, Rack::Multipart::Parser#handle_mime_head parses quoted multipart parameters such as Content-Disposition: form-data; name="..." using repeated String#index searches combined with String#slice! prefix deletion. For escape-heavy quoted values, this causes super-linear processing. An unauthenticated attacker can send a crafted multipart/form-data request containing many parts with long backslash-escaped parameter values to trigger excessive CPU usage during multipart parsing. This results in a denial of service condition in Rack applications that accept multipart form data. This issue has been patched in versions 3.1.21 and 3.2.6.
- Record
DEBIAN-CVE-2026-34827- 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 - Updated
- 2026-11-02
Show 4 moreShow less
OSVGHSA-v6x5-cg8r-vv6x
7.5
Rack's multipart header parsing allows Denial of Service via escape-heavy quoted parameters
Summary
Rack::Multipart::Parser#handle_mime_head parses quoted multipart parameters such as Content-Disposition: form-data; name="..." using repeated String#index searches combined with String#slice! prefix deletion. For escape-heavy quoted values, this causes super-linear processing.
An unauthenticated attacker can send a crafted multipart/form-data request containing many parts with long backslash-escaped parameter values to trigger excessive CPU usage during multipart parsing.
This results in a denial of service condition in Rack applications that accept multipart form data.
Details
Rack::Multipart::Parser#handle_mime_head parses quoted parameter values by repeatedly:
- Searching for the next quote or backslash,
- Copying the preceding substring into a new buffer, and
- Removing the processed prefix from the original string with
slice!.
An attacker can exploit this by sending a multipart request with many parts whose name parameters contain long escape-heavy values such as:
name="a\\a\\a\\a\\a\\..."
Under default Rack limits, a request can contain up to 4095 parts. If many of those parts use long quoted values with dense escape characters, the parser performs disproportionately expensive CPU work while remaining within normal request size and part-count limits.
Impact
Any Rack application that accepts multipart/form-data requests may be affected, including file upload endpoints and standard HTML form handlers.
An unauthenticated attacker can send crafted multipart requests that consume excessive CPU time during request parsing. Repeated requests can tie up application workers, reduce throughput, and degrade or deny service availability.
Mitigation
- Update to a patched version of Rack that parses quoted multipart parameters without repeated rescanning and destructive prefix deletion.
- Apply request throttling or rate limiting to multipart upload endpoints.
- Where operationally feasible, restrict or isolate multipart parsing on untrusted high-volume endpoints.
- Record
GHSA-v6x5-cg8r-vv6x- 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 - Weakness
- CWE-400, CWE-407, CWE-770
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-34827
7.5
Rack is a modular Ruby web server interface. From versions 3.0.0.beta1 to before 3.1.21, and 3.2.0 to before 3.2.6, Rack::Multipart::Parser#handle_mime_head parses quoted multipart parameters such as Content-Disposition: form-data; name="..." using repeated String#index searches combined with String#slice! prefix deletion. For escape-heavy quoted values, this causes super-linear processing. An unauthenticated attacker can send a crafted multipart/form-data request containing many parts with long backslash-escaped parameter values to trigger excessive CPU usage during multipart parsing. This results in a denial of service condition in Rack applications that accept multipart form data. This issue has been patched in versions 3.1.21 and 3.2.6.
- Record
UBUNTU-CVE-2026-34827- 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 - Updated
- 2026-11-04
OSVMGASA-2026-0226 No score
Updated ruby-rack packages fix security vulnerabilities
CVE-2026-26961 Greedy multipart boundary parsing can cause parser
differentials and WAF bypass. Forwarded header semicolon injection
enables Host and Scheme spoofing.
CVE-2026-34230 Quadratic complexity in
Rack::Utils.select_best_encoding via wildcard Accept-Encoding
header.
CVE-2026-34763 Root directory disclosure via unescaped regex
interpolation in Rack::Directory.
CVE-2026-34785 Rack::Static prefix matching can expose unintended
files under the static root.
CVE-2026-34786 Rack::Static header_rules bypass via URL-encoded path
mismatch.
CVE-2026-34826 Multipart byte range processing allows denial of service
via excessive overlapping ranges.
CVE-2026-34827 Multipart header parsing allows denial of service via
escape-heavy quoted parameters.
CVE-2026-34829 Multipart parsing without Content-Length header allows
unbounded chunked file uploads.
CVE-2026-34830 Rack::Sendfile header-based X-Accel-Mapping regex
injection enables unauthorized X-Accel-Redirect.
CVE-2026-34831 Content-Length mismatch in Rack::Files error
responses.
CVE-2026-34835 Rack::Request accepts invalid Host characters, enabling
host allowlist bypass.
- Record
MGASA-2026-0226- Updated
- 2026-11-02
OSVUSN-8989-1 No score
ruby-rack vulnerabilities
Andrew Lacambra discovered that Rack did not properly parse certain regular expressions. An attacker could possibly use this issue to bypass network security filters. (CVE-2026-26961)
William T. Nelson discovered that Rack did not handle multipart headers correctly. An attacker could possibly use this issue to cause downstream parsing issues or a denial of service. (CVE-2026-26962)
It was discovered that Rack did not handle the Forwarded header correctly. An attacker could possibly use this issue to manipulate header values. (CVE-2026-32762)
It was discovered that Rack could consume excessive CPU when handling certain Accept-Encoding values. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34230)
Haruki Oyama discovered that certain configurations of Rack could erroneously fail to derive the displayed directory path, and expose the full file system path. An attacker could possibly use this issue to disclose deployment details such as layout and usernames. (CVE-2026-34763)
It was discovered that Rack did not properly handle static file paths. An attacker could possibly use this issue to exfiltrate unintentionally served data. (CVE-2026-34785)
Haruki Oyama discovered that Rack did not apply header rules to certain requests for URL-encoded static paths. An attacker could possibly use this issue to bypass security-relevant response headers. (CVE-2026-34786)
It was discovered that Rack did not limit the number of ranges requested in the Range header. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34826)
It was discovered that Rack could consume excessive CPU when parsing certain multipart parameters. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34827)
It was discovered that Rack could consume unbounded disk space when handling requests without a Content-Length header. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34829)
Mehtab Zafar discovered that Rack directly interpreted the X-Accel-Mapping header as a regular expression without escaping. An attacker could possibly use this issue to exfiltrate arbitrary files from internal locations. (CVE-2026-34830)
It was discovered that Rack did not properly handle messages with Unicode. An attacker could possibly use this issue to cause a denial of service. (CVE-2026-34831)
It was discovered that Rack did not properly parse the Host header. An attacker could possibly use this issue to bypass security filters or poison generated links. (CVE-2026-34835)
- Record
USN-8989-1- Updated
- 2026-11-04
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
rackRubyGems |
3.0.0.beta1 up to 3.1.21 | 3.1.21 |
rackRubyGems |
3.2.0 up to 3.2.6 | 3.2.6 |
ruby-rackDebian:13 |
before 3.1.20-0+deb13u2, plus listed versions 3.1.16-0.13.1.18-13.1.18-1~deb13u13.1.20-0+deb13u1 |
3.1.20-0+deb13u2 |
ruby-rackDebian:14 |
before 3.2.6-2, plus listed versions 3.1.16-0.13.1.18-13.1.18-1~deb13u13.2.4-13.2.5-13.2.5-23.2.6-1 |
3.2.6-2 |
rackRubyGems |
3.0.0.beta1 up to 3.1.21, plus listed versions 3.0.03.0.0.rc13.0.13.0.103.0.11 Show 40 moreShow less3.0.123.0.133.0.143.0.153.0.163.0.173.0.183.0.23.0.33.0.43.0.4.13.0.4.23.0.53.0.63.0.6.13.0.73.0.83.0.93.0.9.13.1.03.1.13.1.103.1.113.1.123.1.133.1.143.1.153.1.163.1.173.1.183.1.193.1.23.1.203.1.33.1.43.1.53.1.63.1.73.1.83.1.9 |
3.1.21 |
rackRubyGems |
3.2.0 up to 3.2.6, plus listed versions 3.2.13.2.23.2.33.2.43.2.5 |
3.2.6 |
ruby-rackMageia:9 From an advisory covering 12 CVEs |
before 2.2.23-1.mga9 | 2.2.23-1.mga9 |
ruby-rackUbuntu:Pro:14.04:LTS |
All versions, plus listed versions 1.5.2-11.5.2-1ubuntu0.1~esm11.5.2-3+deb8u3ubuntu1~esm21.5.2-3+deb8u3ubuntu1~esm31.5.2-3+deb8u3ubuntu1~esm4 Show 6 moreShow less1.5.2-3+deb8u3ubuntu1~esm61.5.2-3+deb8u3ubuntu1~esm71.5.2-3+deb8u3ubuntu1~esm81.5.2-3+deb8u3ubuntu1~esm91.5.2-3+deb8u3ubuntu1~esm101.5.2-3+deb8u3ubuntu1~esm11 |
None known |
ruby-rackUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 1.5.2-41.6.4-21.6.4-31.6.4-3ubuntu0.11.6.4-3ubuntu0.2 Show 9 moreShow less1.6.4-3ubuntu0.2+esm11.6.4-3ubuntu0.2+esm21.6.4-3ubuntu0.2+esm41.6.4-3ubuntu0.2+esm51.6.4-3ubuntu0.2+esm61.6.4-3ubuntu0.2+esm71.6.4-3ubuntu0.2+esm81.6.4-3ubuntu0.2+esm91.6.4-3ubuntu0.2+esm10 |
None known |
ruby-rackUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 1.6.4-41.6.4-4ubuntu0.11.6.4-4ubuntu0.21.6.4-4ubuntu0.2+esm11.6.4-4ubuntu0.2+esm2 Show 7 moreShow less1.6.4-4ubuntu0.2+esm41.6.4-4ubuntu0.2+esm51.6.4-4ubuntu0.2+esm61.6.4-4ubuntu0.2+esm71.6.4-4ubuntu0.2+esm81.6.4-4ubuntu0.2+esm91.6.4-4ubuntu0.2+esm10 |
None known |
Show 6 moreShow less
| Package | Affected | Fixed |
|---|---|---|
ruby-rackUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 2.0.6-32.0.7-22.0.7-2ubuntu0.12.0.7-2ubuntu0.1+esm12.0.7-2ubuntu0.1+esm2 Show 8 moreShow less2.0.7-2ubuntu0.1+esm32.0.7-2ubuntu0.1+esm42.0.7-2ubuntu0.1+esm52.0.7-2ubuntu0.1+esm62.0.7-2ubuntu0.1+esm72.0.7-2ubuntu0.1+esm82.0.7-2ubuntu0.1+esm92.0.7-2ubuntu0.1+esm10 |
None known |
ruby-rackUbuntu:22.04:LTS |
All versions, plus listed versions 2.1.4-32.1.4-42.1.4-52.1.4-5ubuntu12.1.4-5ubuntu1.12.1.4-5ubuntu1.2 |
None known |
ruby-rackUbuntu:24.04:LTS |
All versions, plus listed versions 2.2.4-32.2.7-12.2.7-1ubuntu0.12.2.7-1ubuntu0.22.2.7-1ubuntu0.3 Show 4 moreShow less2.2.7-1ubuntu0.42.2.7-1ubuntu0.52.2.7-1ubuntu0.62.2.7-1ubuntu0.7 |
None known |
ruby-rackUbuntu:25.10 |
before 3.1.16-0.1ubuntu0.3, plus listed versions 2.2.7-1.13.1.16-0.13.1.16-0.1ubuntu0.13.1.16-0.1ubuntu0.2 |
3.1.16-0.1ubuntu0.3 |
ruby-rackUbuntu:26.04:LTS |
before 3.2.4-1ubuntu1.1, plus listed versions 3.1.16-0.13.1.18-13.1.18-1build13.2.4-1ubuntu1 |
3.2.4-1ubuntu1.1 |
ruby-rackUbuntu:26.04:LTS From an advisory covering 13 CVEs |
before 3.2.4-1ubuntu1.1, plus listed versions 3.1.16-0.13.1.18-13.1.18-1build13.2.4-1ubuntu1 |
3.2.4-1ubuntu1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| affected, aliases, references | OSV | |
| affected, facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-34827 is a high vulnerability (CVSS 7.5) in Rack, published April 2, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.49%, the 42nd percentile. Fixed in rack 3.1.21.
References
github.com/rack/rack/security/advisories/GHSA-v6x5-cg8r-vv6x
access.redhat.com/security/cve/CVE-2026-34827
bugzilla.redhat.com/show_bug.cgi?id=2454501
security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-34827.json
nvd.nist.gov/vuln/detail/CVE-2026-34827
github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2026-34827.yml
Show 33 moreShow less
github.com/advisories/GHSA-v6x5-cg8r-vv6x
github.com/CVEProject/cvelistV5/tree/main/cves/2026/34xxx/CVE-2026-34827.json
security-tracker.debian.org/tracker/CVE-2026-34827
github.com/rack/rack
advisories.mageia.org/MGASA-2026-0226.html
bugs.mageia.org/show_bug.cgi?id=35446
github.com/rack/rack/security/advisories/GHSA-vgpv-f759-9wx3
github.com/rack/rack/security/advisories/GHSA-qfgr-crr9-7r49
github.com/rack/rack/security/advisories/GHSA-v569-hp3g-36wr
github.com/rack/rack/security/advisories/GHSA-7mqq-6cf9-v2qp
github.com/rack/rack/security/advisories/GHSA-h2jq-g4cq-5ppq
github.com/rack/rack/security/advisories/GHSA-q4qf-9j86-f5mh
github.com/rack/rack/security/advisories/GHSA-x8cg-fq8g-mxfx
github.com/rack/rack/security/advisories/GHSA-8vqr-qjwx-82mw
github.com/rack/rack/security/advisories/GHSA-qv7j-4883-hwh7
github.com/rack/rack/security/advisories/GHSA-q2ww-5357-x388
github.com/rack/rack/security/advisories/GHSA-g2pf-xv49-m2h5
ubuntu.com/security/CVE-2026-34827
cve.org/CVERecord?id=CVE-2026-34827
ubuntu.com/security/notices/USN-8182-1
ubuntu.com/security/notices/USN-8989-1
ubuntu.com/security/CVE-2026-26961
ubuntu.com/security/CVE-2026-26962
ubuntu.com/security/CVE-2026-32762
ubuntu.com/security/CVE-2026-34230
ubuntu.com/security/CVE-2026-34763
ubuntu.com/security/CVE-2026-34785
ubuntu.com/security/CVE-2026-34786
ubuntu.com/security/CVE-2026-34826
ubuntu.com/security/CVE-2026-34829
ubuntu.com/security/CVE-2026-34830
ubuntu.com/security/CVE-2026-34831
ubuntu.com/security/CVE-2026-34835