Skip to main content
← All vulnerabilities
CVE-2025-61771GHSA-W9PC-FMGC-VXVW

Rack's multipart parser buffers large non‑file fields entirely in memory, enabling DoS (memory exhaustion)

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 2.2.19, 3.1.17, 3.2.2
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: none
  • Automatable: yes
  • Technical impact: partial

Summary

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` stores non-file form fields (parts without a `filename`) entirely in memory as Ruby `String` objects. A single large text field in a multipart/form-data request (hundreds of megabytes or more) can consume equivalent process memory, potentially leading to out-of-memory (OOM) conditions and denial of service (DoS). Attackers can send large non-file fields to trigger excessive memory usage. Impact scales with request size and concurrency, potentially leading to worker crashes or severe garbage-collection overhead. All Rack applications processing multipart form submissions are affected. Versions 2.2.19, 3.1.17, and 3.2.2 enforce a reasonable size cap for non-file fields (e.g., 2 MiB). Workarounds include restricting maximum request body size at the web-server or proxy layer (e.g., Nginx `client_max_body_size`) and validating and rejecting unusually large form fields at the application level.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: none · Automatable: yes · Technical impact: partial

  3. Record last updated

Affected versions

  • rack rack

    fixed in 2.2.19; From 3.1 · fixed in 3.1.17; From 3.2 · fixed in 3.2.2

  • rackRubyGems

    fixed in 2.2.19

  • rackRubyGems

    From 3.1 · fixed in 3.1.17

  • rackRubyGems

    From 3.2 · fixed in 3.2.2

References 4

GitHub · rack/rack