CVE-2025-49007
NoneCVSS
—
EPSS
0.6%
Published
Jun 4, 2025
CISA due date
—
Cloudanix analysis
A problem in how some Ruby web servers read certain file-upload headers lets attackers slow websites down or make them unavailable by sending specially crafted data.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Crafted Content-Disposition headers trigger catastrophic backtracking during parsing in Rack versions 3.1.0 through 3.1.15, consuming excessive CPU time on multipart request handling and enabling denial of service.
Why it matters to the business
Web applications using Rack for file uploads or multipart forms can experience prolonged response times or complete unavailability, leading to service disruption for Rails-based sites and increased operational costs during sustained attacks.
How an attack unfolds
An attacker sends a single HTTP request containing a maliciously constructed Content-Disposition header to any endpoint that processes multipart form data. The Rack parser enters a slow path that consumes CPU resources for an extended period, potentially exhausting server capacity when multiple such requests are issued.
How to fix it
Upgrade Rack to version 3.1.16 or later, which includes the fix committed in df2f3f2804373acafc429ed9f0770847a9c6b226. Applications should restart after the update and verify multipart handling continues to function.
How to confirm the fix worked
Confirm the installed Rack gem version is at least 3.1.16, test multipart form submissions with known benign inputs, and monitor request processing latency under load to ensure no regression to slow parsing behavior.
Typical attack path
- Identify a target endpoint accepting multipart/form-data POST requests
- Craft a Content-Disposition header value that induces excessive parsing time
- Transmit the request repeatedly or in volume to amplify resource consumption
- Observe service degradation or outage as CPU is exhausted
How to detect it
Examine web server and application logs for multipart requests with unusually long processing times or high CPU usage on Rack worker processes; correlate with request timestamps showing repeated submissions from the same sources.
What your security team should do
- Immediately upgrade all Rack installations to 3.1.16 or newer
- Review and prioritize patching of internet-facing Rails applications first
- Implement request rate limiting on multipart endpoints as a temporary control
- Add monitoring for unusually long request durations in application logs
The record
Rack is a modular Ruby web server interface. Starting in version 3.1.0 and prior to version 3.1.16, there is a denial of service vulnerability in the Content-Disposition parsing component of Rack. This is very similar to the previous security issue CVE-2022-44571. Carefully crafted input can cause Content-Disposition header parsing in Rack to take an unexpected amount of time, possibly resulting in a denial of service attack vector. This header is used typically used in multipart parsing. Any applications that parse multipart posts using Rack (virtually all Rails applications) are impacted. Version 3.1.16 contains a patch for the vulnerability.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| RubyGems | rack | 3.1.0 | 3.1.16 |
| Chainguard | logstash-8 | 0 | 8.18.2-r1 |
| Chainguard | logstash-8-bitnami-compat | 0 | 8.18.2-r1 |
| Chainguard | logstash-8-compat | 0 | 8.18.2-r1 |
| Chainguard | logstash-8-env2yaml | 0 | 8.18.2-r1 |
| Chainguard | logstash-8-iamguarded-compat | 0 | 8.18.2-r1 |
| Chainguard | logstash-8-with-output-opensearch | 0 | 8.18.2-r1 |
| Chainguard | ruby3.2-rails-7.1 | 0 | 7.1.5.1-r8 |
| Chainguard | ruby3.2-rails-7.1-compat | 0 | 7.1.5.1-r8 |
| Chainguard | ruby3.2-rails-7.2 | 0 | 7.2.2.1-r8 |
| Chainguard | ruby3.2-rails-7.2-compat | 0 | 7.2.2.1-r8 |
| Chainguard | ruby3.2-rails-8.0 | 0 | 8.0.2-r5 |
| Chainguard | ruby3.2-rails-8.0-compat | 0 | 8.0.2-r5 |
| Chainguard | ruby3.3-rails-7.1 | 0 | 7.1.5.1-r8 |
| Chainguard | ruby3.3-rails-7.1-compat | 0 | 7.1.5.1-r8 |
| Chainguard | ruby3.3-rails-7.2 | 0 | 7.2.2.1-r8 |
| Chainguard | ruby3.3-rails-7.2-compat | 0 | 7.2.2.1-r8 |
| Chainguard | ruby3.3-rails-8.0 | 0 | 8.0.2-r5 |
| Chainguard | ruby3.3-rails-8.0-compat | 0 | 8.0.2-r5 |
| Chainguard | ruby3.4-rails-7.1 | 0 | 7.1.5.1-r8 |
| Chainguard | ruby3.4-rails-7.1-compat | 0 | 7.1.5.1-r8 |
| Chainguard | ruby3.4-rails-7.2 | 0 | 7.2.2.1-r8 |
| Chainguard | ruby3.4-rails-7.2-compat | 0 | 7.2.2.1-r8 |
| Chainguard | ruby3.4-rails-8.0 | 0 | 8.0.2-r5 |
| Chainguard | ruby3.4-rails-8.0-compat | 0 | 8.0.2-r5 |
| Debian:13 | ruby-rack | 0 | No fix |
| Mageia:9 | ruby-rack | 0 | 2.2.21-1.mga9 |
| Wolfi | logstash-8 | 0 | 8.18.2-r1 |
| Wolfi | logstash-8-bitnami-compat | 0 | 8.18.2-r1 |
| Wolfi | logstash-8-compat | 0 | 8.18.2-r1 |
| Wolfi | logstash-8-env2yaml | 0 | 8.18.2-r1 |
| Wolfi | logstash-8-iamguarded-compat | 0 | 8.18.2-r1 |
| Wolfi | logstash-8-with-output-opensearch | 0 | 8.18.2-r1 |
| Wolfi | ruby3.2-rails-8.0 | 0 | 8.0.2-r5 |
| Wolfi | ruby3.2-rails-8.0-compat | 0 | 8.0.2-r5 |
| Wolfi | ruby3.3-rails-8.0 | 0 | 8.0.2-r5 |
| Wolfi | ruby3.3-rails-8.0-compat | 0 | 8.0.2-r5 |
| Wolfi | ruby3.4-rails-8.0 | 0 | 8.0.2-r5 |
| Wolfi | ruby3.4-rails-8.0-compat | 0 | 8.0.2-r5 |
| gem | rack | 3.1.0 | 3.1.16 |
Related vulnerabilities
- CVE-2026-25500 Rack is a modular Ruby web server interface. Also affects rack
- CVE-2026-22860 Rack is a modular Ruby web server interface. Also affects rack
- CVE-2025-61919 Rack is vulnerable to a memory-exhaustion DoS through unbounded URL-encoded body parsing Also affects rack
- CVE-2025-61780 Rack has a Possible Information Disclosure Vulnerability Also affects rack
- CVE-2025-61770 Rack's unbounded multipart preamble buffering enables DoS (memory exhaustion) Also affects rack
- CVE-2025-61771 Rack: Multipart parser buffers large non‑file fields entirely in memory, enabling DoS… Also affects rack
- CVE-2025-61772 Rack's multipart parser buffers unbounded per-part headers, enabling DoS (memory… Also affects rack
- CVE-2025-59830 Rack has an unsafe default in Rack::QueryParser allows params_limit bypass via… Also affects rack