Skip to main content

Rack CVE-2025-61770

HIGH
Uncontrolled Resource Consumption (CWE-400)
2025-10-07 security-advisories@github.com
7.5
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify endpoint parsing multipart form-data
  2. Delivery
    Craft request with huge pre-boundary preamble
  3. Exploit
    Rack buffers preamble unbounded in memory
  4. Execution
    Repeat across concurrent connections
  5. Persist
    Exhaust worker memory, trigger OOM/GC thrash
  6. Impact
    Worker crash or service slowdown

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The target application must accept and parse multipart/form-data requests through Rack::Multipart::Parser (i.e. any endpoint handling HTML form or file uploads) on an affected version (< 2.2.19, 3.1.x < 3.1.17, or 3.2.x < 3.2.2). No authentication, user interaction, or non-default configuration is required for the parse path itself. The practical severity is LIMITED by deployment-level factors: the maximum damage scales directly with the request-body size the front-end proxy/web server permits and with worker concurrency, so a strict upstream body-size cap (e.g. in nginx/HAProxy) sharply reduces impact; per-process memory limits further bound the effect to controlled worker restarts rather than host-wide OOM.

Impact

This is a genuine but moderate-priority availability issue, not a top-tier emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5) is internally consistent with the description: a remote, unauthenticated attacker can send malformed multipart/form-data over the network with low complexity and no user interaction, impacting only availability (CWE-400 resource exhaustion). The SSVC/real-world signals temper the raw score: EPSS is just 0.93% (60th percentile), there is no CISA KEV listing, and no public exploit has been identified - so despite the 'network/no-auth' profile this is not currently seeing broad opportunistic exploitation. Technical impact is partial rather than total system compromise: the flaw causes transient memory spikes and GC pressure, and only 'potential' OOM worker termination, so the A:H rating is arguably generous (A:L is defensible since impact scales with configured request-size limits and concurrency rather than guaranteeing a crash). Weighing the signals together: confirmed, easily-reachable, unauthenticated DoS vector against a foundational library (raising priority) versus confidentiality/integrity untouched, no active exploitation, and straightforward proxy-level mitigation (lowering it). Net: patch promptly as routine hardening, especially on internet-facing Ruby apps that accept file uploads, but this does not warrant out-of-band emergency response absent a KEV change.

Exploit ScenarioDerived

An attacker sends a multipart/form-data POST to any endpoint that parses uploads via Rack (e.g. a login, upload, or form handler), prefixing the request with a multi-megabyte preamble of junk bytes before the first valid boundary; Rack::Multipart::Parser buffers the entire preamble in memory with no cap. Repeating this across concurrent connections, sized up to the server's allowed request-body limit, drives worker memory exhaustion, GC thrashing, and potential OOM crashes. No public exploit code is identified, though the vendor's regression tests demonstrate the triggering request structure.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.9% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 19, 2026

Memory exhaustion in Rack's multipart/form-data parser allows unauthenticated remote attackers to crash or severely degrade Ruby web workers by sending a request body whose preamble (bytes before the first MIME boundary) is arbitrarily large. Any application running an affected version (< 2.2.19, 3.1.x < 3.1.17, or 3.2.x < 3.2.2) that accepts multipart uploads or HTML form posts is exposed; the blast radius scales with the request-body size the front-end proxy permits and with worker concurrency, and manifests as OOM kills, garbage-collection stalls, or process restarts. No public exploit code exists and there is no evidence of active exploitation (no CISA KEV listing); EPSS is a modest 0.93% (60th percentile), consistent with a genuine but moderate-priority availability issue rather than an emergency.

RemediationAI

Vendor-released patch: upgrade Rack to 2.2.19, 3.1.17, or 3.2.2 depending on your release line (the fix commits are 589127f4ac8b5cf11cf88fb0cd116ffed4d2181e, d869fed663b113b95a74ad53e1b5cae6ab31f29e, and e08f78c656c9394d6737c022bde087e0f33336fd, documented in GHSA-p543-xpfm-54cp); since Rack is usually a transitive dependency, run bundle update rack and confirm the locked version, and take the same upgrade to close CVE-2025-61771 and CVE-2025-61772. If the upgrade cannot be shipped immediately, apply compensating controls in this order: cap the total request body size at the edge (nginx client_max_body_size 1m;, HAProxy or an ALB/API-gateway equivalent) - this is the single most effective mitigation because impact scales directly with permitted body size, though it will reject or truncate legitimate large uploads; set per-process memory limits (ulimit -v / container memory limits / Puma worker RSS watchdogs) so that a hostile request causes a bounded, supervised worker restart rather than a host-wide OOM kill, accepting brief 5xx responses during restarts; restrict or temporarily disable multipart upload endpoints and require authentication on them, trading functionality for exposure reduction; and alert on rapid RSS growth or Rack::Multipart::Error rates in workers to catch probing early. Once patched, keep upstream body-size limits in place as defense in depth, since the parser's effective ceiling can still reach roughly the size of its 1 MB read buffer.

Affected Packages

rubygems rack fix: 2.2.19, 3.1.17, 3.2.2

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in rubygems

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Rack::Multipart::Parser is the component Ruby web applications rely on to decode multipart/form-data bodies. While searching for the first boundary delimiter, the parser appends every incoming chunk to a shared string buffer (@sbuf.concat(content)) and repeatedly calls @sbuf.scan_until(@body_regex); when the boundary has not yet appeared it simply keeps buffering, with no trim and no cap on the preamble. This is CWE-400 (Uncontrolled Resource Consumption): the amount of memory allocated is entirely attacker-controlled up to the size the HTTP server or proxy is willing to stream. RFC 2046 § 5.1.1 treats preamble content as discardable, so the fix is both a hard cap and a semantic correction - the upstream commits (589127f4ac8b5cf11cf88fb0cd116ffed4d2181e and related) add a private BOUNDARY_START_LIMIT of 16 KiB and a MIME_HEADER_BYTESIZE_LIMIT of 64 KiB, raising Rack::Multipart::Error ("multipart boundary not found within limit" / "multipart mime part header too large") instead of growing the buffer. Note in the diff comments that the effective ceiling is the greater of the new constant and the existing 1 MB read buffer, so a hostile client can still force roughly that much transient allocation per in-flight request. The same 2.2.19 / 3.1.17 / 3.2.2 releases also fix related parser memory issues tracked as CVE-2025-61771 (large non-file fields buffered wholly in memory) and CVE-2025-61772 (unbounded per-part headers), so the three should be treated as one patch event.

Know when Rack gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (github) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Remote unauthenticated multipart request with no interaction drives memory exhaustion (AV:N/AC:L/PR:N/UI:N); only availability is affected, no confidentiality or integrity impact.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Red Hat 7.5 HIGH

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

DescriptionCVE.org

Rack is a modular Ruby web server interface. In versions prior to 2.2.19, 3.1.17, and 3.2.2, Rack::Multipart::Parser buffers the entire multipart preamble (bytes before the first boundary) in memory without any size limit. A client can send a large preamble followed by a valid boundary, causing significant memory use and potential process termination due to out-of-memory (OOM) conditions. Remote attackers can trigger large transient memory spikes by including a long preamble in multipart/form-data requests. The impact scales with allowed request sizes and concurrency, potentially causing worker crashes or severe slowdown due to garbage collection. Versions 2.2.19, 3.1.17, and 3.2.2 enforce a preamble size limit (e.g., 16 KiB) or discard preamble data entirely. Workarounds include limiting total request body size at the proxy or web server level and monitoring memory and set per-process limits to prevent OOM conditions.

Executive ViewAI

Why It Matters

Rack's multipart/form-data parser can be driven into memory exhaustion, allowing crafted uploads or form posts to crash or severely degrade Ruby web workers in applications that accept multipart requests. The issue affects Rack versions before 2.2.19, 3.1.x before 3.1.17, and 3.2.x before 3.2.2, making it a service-availability risk for customer-facing and internal Ruby applications, with impact scaled by proxy request-size limits and worker concurrency. Vendor patches are available, and no public exploit identified at time of analysis and no CISA KEV listing was present.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.9%
Top 40% exploitable
Prevalence
High
Rack is the foundational interface under Rails/Sinatra and most Ruby web apps
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.9%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

39
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Affected Products (CPE)CVE.org

cpe:2.3:a:rack:rack:*:*:*:*:*:ruby:*:*
cpe:2.3:a:rack:rack:*:*:*:*:*:ruby:*:*
cpe:2.3:a:rack:rack:*:*:*:*:*:ruby:*:*

More in Rack

View all
CVE-2026-22860 HIGH POC
7.5 Feb 18

Directory traversal in Rack versions prior to 2.2.22, 3.1.20, and 3.2.5 allows unauthenticated remote attackers to list

CVE-2024-26141 HIGH POC
7.5 Feb 29

Rack is a modular Ruby web server interface. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable,

CVE-2024-25126 HIGH POC
7.5 Feb 29

Rack is a modular Ruby web server interface. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable,

CVE-2020-8184 HIGH POC
7.5 Jun 19

A reliance on cookies without validation/integrity check security vulnerability exists in rack < 2.2.3, rack < 2.1.4 tha

CVE-2022-30123 CRITICAL
10.0 Dec 05

A sequence injection vulnerability exists in Rack <2.0.9.1, <2.1.4.1 and <2.2.3.1 which could allow is a possible shell

CVE-2025-25184 MEDIUM POC
5.7 Feb 12

Rack provides an interface for developing web applications in Ruby. Rated medium severity (CVSS 5.7), this vulnerability

CVE-2026-25500 MEDIUM POC
5.4 Feb 18

Rack's Directory module fails to sanitize filenames when generating HTML directory listings, allowing attackers to craft

CVE-2026-39324 CRITICAL
9.3 Apr 07

Session authentication bypass in Rack::Session::Cookie 2.0.0 through 2.1.1 allows unauthenticated remote attackers to fo

CVE-2020-8161 HIGH
8.6 Jul 02

A directory traversal vulnerability exists in rack < 2.2.0 that allows an attacker perform directory traversal vulnerabi

CVE-2013-0263 MEDIUM
5.1 Feb 08

Rack::Session::Cookie in Rack 1.5.x before 1.5.2, 1.4.x before 1.4.5, 1.3.x before 1.3.10, 1.2.x before 1.2.8, and 1.1.x

CVE-2023-27530 HIGH
7.5 Mar 10

A DoS vulnerability exists in Rack <v3.0.4.2, <v2.2.6.3, <v2.1.4.3 and <v2.0.9.3 within in the Multipart MIME parsing co

CVE-2025-61772 HIGH
7.5 Oct 07

Memory exhaustion denial of service in the Ruby Rack web server interface (versions prior to 2.2.19, 3.1.17, and 3.2.2)

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy