{"id":"CVE-2025-61771","aliases":["ALSA-2025:19719","ALSA-2025:20962","ALSA-2025:21036","CLSA-2026-1790243751","CLSA-2026-1790610331","CLSA-2026-1790610419","CLSA-2026-1792688250","DEBIAN-CVE-2025-61771","DLA-4357-1","DSA-6048-1","EUVD-2025-32056","GHSA-w9pc-fmgc-vxvw","MGASA-2025-0334","RHSA-2025:19512","RHSA-2025:19513","RHSA-2025:19647","RHSA-2025:19719","RHSA-2025:19734","RHSA-2025:19800","RHSA-2025:19948","RHSA-2025:20962","RHSA-2025:21036","RHSA-2025:21696","RLSA-2025:19512","RLSA-2025:19719","RLSA-2025:20962","UBUNTU-CVE-2025-61771","openSUSE-SU-2025:15621-1","openSUSE-SU-2026:10286-1"],"status":"published","title":"Rack's multipart parser buffers large non‑file fields entirely in memory, enabling DoS (memory exhaustion)","description":"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.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00561,"percentile":0.46944,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-400"],"published":"2025-10-07T14:42:53Z","modified":"2026-10-29T11:32:28Z","fixes":[{"ecosystem":"RubyGems","package":"rack","fixed_in":["2.2.19","3.1.17","3.2.2"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"ruby-rack","fixed_in":["2.2.20-0+deb12u1"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"ruby-rack","fixed_in":["3.1.18-1~deb13u1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"ruby-rack","fixed_in":["3.1.18-1"],"sources":["osv"]},{"ecosystem":"Ubuntu:22.04:LTS","package":"ruby-rack","fixed_in":["2.1.4-5ubuntu1.2"],"sources":["osv"]},{"ecosystem":"Ubuntu:24.04:LTS","package":"ruby-rack","fixed_in":["2.2.7-1ubuntu0.5"],"sources":["osv"]},{"ecosystem":"Ubuntu:25.10","package":"ruby-rack","fixed_in":["3.1.16-0.1ubuntu0.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"RubyGems","package":"rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.19"}]}]},{"source":"ghsa","ecosystem":"RubyGems","package":"rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.1"},{"fixed":"3.1.17"}]}]},{"source":"ghsa","ecosystem":"RubyGems","package":"rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.2"},{"fixed":"3.2.2"}]}]},{"source":"osv","ecosystem":"AlmaLinux:8","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.18-2.el8_10.7.alma.1"}]}],"bundled":5},{"source":"osv","ecosystem":"AlmaLinux:8","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.18-2.el8_10.7.alma.1"}]}],"bundled":5},{"source":"osv","ecosystem":"AlmaLinux:9","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.11.10-1.el9_7.1"}]}],"bundled":5},{"source":"osv","ecosystem":"AlmaLinux:9","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.11.10-1.el9_7.1"}]}],"bundled":5},{"source":"osv","ecosystem":"AlmaLinux:10","package":"cockpit-ha-cluster","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.12.1-1.el10_1.1"}]}],"bundled":5},{"source":"osv","ecosystem":"TuxCare:CentOS-Stream:8","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.18-2.el8.tuxcare.els1"}]}],"bundled":10},{"source":"osv","ecosystem":"TuxCare:CentOS-Stream:8","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.18-2.el8.tuxcare.els1"}]}],"bundled":10},{"source":"osv","ecosystem":"TuxCare:CentOS:8.4","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.8-1.el8.tuxcare.els1"}]}],"bundled":10},{"source":"osv","ecosystem":"TuxCare:CentOS:8.4","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.8-1.el8.tuxcare.els1"}]}],"bundled":10},{"source":"osv","ecosystem":"TuxCare:CentOS:8.5","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.8-1.el8.tuxcare.els1"}]}],"bundled":10},{"source":"osv","ecosystem":"TuxCare:CentOS:8.5","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.8-1.el8.tuxcare.els1"}]}],"bundled":10},{"source":"osv","ecosystem":"TuxCare:OracleLinux:7","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.9.169-3.0.1.el7_9.3.tuxcare.els1"}]}],"bundled":4},{"source":"osv","ecosystem":"TuxCare:OracleLinux:7","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.9.169-3.0.1.el7_9.3.tuxcare.els1"}]}],"bundled":4},{"source":"osv","ecosystem":"Debian:12","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.20-0+deb12u1"}]}],"versions":["2.2.13-1~deb12u1","2.2.6.4-1","2.2.6.4-1+deb12u1","2.2.7-1","2.2.7-1.1"]},{"source":"osv","ecosystem":"Debian:13","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.1.18-1~deb13u1"}]}],"versions":["3.1.16-0.1"]},{"source":"osv","ecosystem":"Debian:14","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.1.18-1"}]}],"versions":["3.1.16-0.1","3.1.18-1~deb13u1"]},{"source":"osv","ecosystem":"Debian:11","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.4-3+deb11u4"}]}],"versions":["2.1.4-3","2.1.4-3+deb11u1","2.1.4-3+deb11u2","2.1.4-3+deb11u3"],"bundled":8},{"source":"osv","ecosystem":"Debian:12","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.20-0+deb12u1"}]}],"versions":["2.2.13-1~deb12u1","2.2.6.4-1","2.2.6.4-1+deb12u1","2.2.7-1","2.2.7-1.1"],"bundled":5},{"source":"osv","ecosystem":"Debian:13","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.1.18-1~deb13u1"}]}],"versions":["3.1.16-0.1"],"bundled":5},{"source":"osv","ecosystem":"RubyGems","package":"rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.19"}]}],"versions":["0.1.0","0.2.0","0.3.0","0.4.0","0.9.0","0.9.1","1.0.0","1.0.1","1.1.0","1.1.1","1.1.1.pre","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.2.0","1.2.1","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.2.8","1.3.0","1.3.0.beta","1.3.0.beta2","1.3.1","1.3.10","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.8","1.3.9","1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5","1.4.6","1.4.7","1.5.0","1.5.0.beta.1","1.5.0.beta.2","1.5.1","1.5.2","1.5.3","1.5.4","1.5.5","1.6.0","1.6.0.beta","1.6.0.beta2","1.6.1","1.6.10","1.6.11","1.6.12","1.6.13","1.6.2","1.6.3","1.6.4","1.6.5","1.6.6","1.6.7","1.6.8","1.6.9","2.0.0.alpha","2.0.0.rc1","2.0.1","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8","2.0.9","2.0.9.1","2.0.9.2","2.0.9.3","2.0.9.4","2.1.0","2.1.1","2.1.2","2.1.3","2.1.4","2.1.4.1","2.1.4.2","2.1.4.3","2.1.4.4","2.2.0","2.2.1","2.2.10","2.2.11","2.2.12","2.2.13","2.2.14","2.2.15","2.2.16","2.2.17","2.2.18","2.2.2","2.2.3","2.2.3.1","2.2.4","2.2.5","2.2.6","2.2.6.1","2.2.6.2","2.2.6.3","2.2.6.4","2.2.7","2.2.8","2.2.8.1","2.2.9"]},{"source":"osv","ecosystem":"RubyGems","package":"rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.1"},{"fixed":"3.1.17"}]}],"versions":["3.1.0","3.1.1","3.1.10","3.1.11","3.1.12","3.1.13","3.1.14","3.1.15","3.1.16","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.1.7","3.1.8","3.1.9"]},{"source":"osv","ecosystem":"RubyGems","package":"rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"3.2"},{"fixed":"3.2.2"}]}],"versions":["3.2.0","3.2.1"]},{"source":"osv","ecosystem":"Mageia:9","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.21-1.mga9"}]}],"bundled":8},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:9::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.9-2.el9_6.2"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:9::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.9-2.el9_6.2"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:9::resilientstorage","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.9-2.el9_6.2"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:9::resilientstorage","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.9-2.el9_6.2"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:10.0","package":"cockpit-ha-cluster","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.12.0-3.el10_0.3"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:10.0","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.12.0-3.el10_0.3"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:10.0","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.12.0-3.el10_0.3"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_e4s:8.8::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.15-4.el8_8.9"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_e4s:8.8::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.15-4.el8_8.9"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_tus:8.8::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.15-4.el8_8.9"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_tus:8.8::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.15-4.el8_8.9"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:8::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.18-2.el8_10.7"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:8::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.18-2.el8_10.7"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:8::resilientstorage","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.18-2.el8_10.7"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:8::resilientstorage","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.18-2.el8_10.7"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_e4s:8.6::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.12-6.el8_6.10"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_e4s:8.6::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.12-6.el8_6.10"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_tus:8.6::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.12-6.el8_6.10"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_tus:8.6::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.12-6.el8_6.10"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_e4s:9.0::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.1-10.el9_0.9"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_e4s:9.0::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.1-10.el9_0.9"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_e4s:9.0::resilientstorage","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.1-10.el9_0.9"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_e4s:9.0::resilientstorage","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.1-10.el9_0.9"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_aus:8.4::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.8-1.el8_4.8"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_aus:8.4::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.8-1.el8_4.8"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_eus_long_life:8.4::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.8-1.el8_4.8"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:rhel_eus_long_life:8.4::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.8-1.el8_4.8"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:9::highavailability","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.10-1.el9_7.1"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:9::highavailability","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.10-1.el9_7.1"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:9::resilientstorage","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.10-1.el9_7.1"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:9::resilientstorage","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.10-1.el9_7.1"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:10.1","package":"cockpit-ha-cluster","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.12.1-1.el10_1.1"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:10.1","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.12.1-1.el10_1.1"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:10.1","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.12.1-1.el10_1.1"}]}],"bundled":5},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:7::server","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.9.169-3.el7_9.5"}]}],"bundled":3},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:7::server","package":"pcs-debuginfo","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.9.169-3.el7_9.5"}]}],"bundled":3},{"source":"osv","ecosystem":"Red Hat:enterprise_linux:7::server","package":"pcs-snmp","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.9.169-3.el7_9.5"}]}],"bundled":3},{"source":"osv","ecosystem":"Rocky Linux:9","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.9-2.el9_6.2"}]}],"bundled":5},{"source":"osv","ecosystem":"Rocky Linux:8","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.10.18-2.el8_10.7"}]}],"bundled":5},{"source":"osv","ecosystem":"Rocky Linux:9","package":"pcs","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0:0.11.10-1.el9_7.1"}]}],"bundled":5},{"source":"osv","ecosystem":"Ubuntu:Pro:14.04:LTS","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.2-1","1.5.2-1ubuntu0.1~esm1","1.5.2-3+deb8u3ubuntu1~esm2","1.5.2-3+deb8u3ubuntu1~esm3","1.5.2-3+deb8u3ubuntu1~esm4","1.5.2-3+deb8u3ubuntu1~esm6","1.5.2-3+deb8u3ubuntu1~esm7","1.5.2-3+deb8u3ubuntu1~esm8","1.5.2-3+deb8u3ubuntu1~esm9","1.5.2-3+deb8u3ubuntu1~esm10","1.5.2-3+deb8u3ubuntu1~esm11"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.5.2-4","1.6.4-2","1.6.4-3","1.6.4-3ubuntu0.1","1.6.4-3ubuntu0.2","1.6.4-3ubuntu0.2+esm1","1.6.4-3ubuntu0.2+esm2","1.6.4-3ubuntu0.2+esm4","1.6.4-3ubuntu0.2+esm5","1.6.4-3ubuntu0.2+esm6","1.6.4-3ubuntu0.2+esm7","1.6.4-3ubuntu0.2+esm8","1.6.4-3ubuntu0.2+esm9","1.6.4-3ubuntu0.2+esm10"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.6.4-4","1.6.4-4ubuntu0.1","1.6.4-4ubuntu0.2","1.6.4-4ubuntu0.2+esm1","1.6.4-4ubuntu0.2+esm2","1.6.4-4ubuntu0.2+esm4","1.6.4-4ubuntu0.2+esm5","1.6.4-4ubuntu0.2+esm6","1.6.4-4ubuntu0.2+esm7","1.6.4-4ubuntu0.2+esm8","1.6.4-4ubuntu0.2+esm9","1.6.4-4ubuntu0.2+esm10"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.0.6-3","2.0.7-2","2.0.7-2ubuntu0.1","2.0.7-2ubuntu0.1+esm1","2.0.7-2ubuntu0.1+esm2","2.0.7-2ubuntu0.1+esm3","2.0.7-2ubuntu0.1+esm4","2.0.7-2ubuntu0.1+esm5","2.0.7-2ubuntu0.1+esm6","2.0.7-2ubuntu0.1+esm7","2.0.7-2ubuntu0.1+esm8","2.0.7-2ubuntu0.1+esm9","2.0.7-2ubuntu0.1+esm10"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.1.4-5ubuntu1.2"}]}],"versions":["2.1.4-3","2.1.4-4","2.1.4-5","2.1.4-5ubuntu1","2.1.4-5ubuntu1.1"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.7-1ubuntu0.5"}]}],"versions":["2.2.4-3","2.2.7-1","2.2.7-1ubuntu0.1","2.2.7-1ubuntu0.2","2.2.7-1ubuntu0.3","2.2.7-1ubuntu0.4"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"ruby-rack","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.1.16-0.1ubuntu0.1"}]}],"versions":["2.2.7-1.1","3.1.16-0.1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"rubygem-rack-2.2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.19-1.1"}]}],"bundled":3},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"rubygem-rack-2.2","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.2.22-1.1"}]}],"bundled":27}],"products":[{"vendor":"rack","product":"rack"}],"references":[{"url":"https://github.com/rack/rack/security/advisories/GHSA-w9pc-fmgc-vxvw","tags":["x_refsource_CONFIRM","Vendor Advisory","advisory","web","article","report"]},{"url":"https://github.com/rack/rack/commit/589127f4ac8b5cf11cf88fb0cd116ffed4d2181e","tags":["x_refsource_MISC","Patch","fix","web","article","report"]},{"url":"https://github.com/rack/rack/commit/d869fed663b113b95a74ad53e1b5cae6ab31f29e","tags":["x_refsource_MISC","Patch","fix","web","article","report"]},{"url":"https://github.com/rack/rack/commit/e08f78c656c9394d6737c022bde087e0f33336fd","tags":["x_refsource_MISC","Patch","fix","web","article","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-61771","tags":["advisory"]},{"url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/rack/CVE-2025-61771.yml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-w9pc-fmgc-vxvw"},{"url":"https://access.redhat.com/errata/RHSA-2025:19719","tags":["advisory"]},{"url":"https://access.redhat.com/security/cve/CVE-2025-59830","tags":["report"]},{"url":"https://access.redhat.com/security/cve/CVE-2025-61770","tags":["report"]},{"url":"https://access.redhat.com/security/cve/CVE-2025-61771","tags":["report"]},{"url":"https://access.redhat.com/security/cve/CVE-2025-61772","tags":["report"]},{"url":"https://access.redhat.com/security/cve/CVE-2025-61919","tags":["report"]},{"url":"https://bugzilla.redhat.com/2398167","tags":["report"]},{"url":"https://bugzilla.redhat.com/2402174","tags":["report"]},{"url":"https://bugzilla.redhat.com/2402175","tags":["report"]},{"url":"https://bugzilla.redhat.com/2402200","tags":["report"]},{"url":"https://bugzilla.redhat.com/2403180","tags":["report"]},{"url":"https://errata.almalinux.org/8/ALSA-2025-19719.html","tags":["advisory"]},{"url":"https://access.redhat.com/errata/RHSA-2025:20962","tags":["advisory"]},{"url":"https://errata.almalinux.org/9/ALSA-2025-20962.html","tags":["advisory"]},{"url":"https://access.redhat.com/errata/RHSA-2025:21036","tags":["advisory"]},{"url":"https://errata.almalinux.org/10/ALSA-2025-21036.html","tags":["advisory"]},{"url":"https://errata.tuxcare.com/els_os/centos-stream8els/CLSA-2026-1790243751.html","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-49761","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-52804","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-46727","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-47287","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-59830","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-61770","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-61772","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2025-61919","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-31958","tags":["advisory"]},{"url":"https://errata.tuxcare.com/els_os/centos8.4els/CLSA-2026-1790610331.html","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-25126","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-26141","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2024-26146","tags":["advisory"]},{"url":"https://errata.tuxcare.com/els_os/centos8.5els/CLSA-2026-1790610419.html","tags":["advisory"]},{"url":"https://errata.tuxcare.com/els_os/oraclelinux7els/CLSA-2026-1792688250.html","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/61xxx/CVE-2025-61771.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2025-61771","tags":["advisory"]},{"url":"https://github.com/rack/rack","tags":["package"]},{"url":"https://advisories.mageia.org/MGASA-2025-0334.html","tags":["advisory"]},{"url":"https://bugs.mageia.org/show_bug.cgi?id=34755","tags":["report"]},{"url":"https://rack.github.io/rack/3.2/CHANGELOG_md.html","tags":["web"]},{"url":"https://access.redhat.com/errata/RHSA-2025:19512","tags":["advisory"]},{"url":"https://access.redhat.com/security/updates/classification/#important","tags":["article"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2398167","tags":["report"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2402174","tags":["report"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2402175","tags":["report"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2402200","tags":["report"]},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2403180","tags":["report"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_19512.json","tags":["advisory"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-59830","tags":["advisory"]},{"url":"https://github.com/rack/rack/commit/54e4ffdd5affebcb0c015cc6ae74635c0831ed71","tags":["article"]},{"url":"https://github.com/rack/rack/security/advisories/GHSA-625h-95r8-8xpm","tags":["article"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-61770","tags":["advisory"]},{"url":"https://github.com/rack/rack/security/advisories/GHSA-p543-xpfm-54cp","tags":["article"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-61771","tags":["advisory","report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-61772","tags":["advisory"]},{"url":"https://github.com/rack/rack/security/advisories/GHSA-wpv5-97wm-hp9c","tags":["article"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2025-61919","tags":["advisory"]},{"url":"https://github.com/rack/rack/commit/4e2c903991a790ee211a3021808ff4fd6fe82881","tags":["article"]},{"url":"https://github.com/rack/rack/commit/cbd541e8a3d0c5830a3c9a30d3718ce2e124f9db","tags":["article"]},{"url":"https://github.com/rack/rack/commit/e179614c4a653283286f5f046428cbb85f21146f","tags":["article"]},{"url":"https://github.com/rack/rack/security/advisories/GHSA-6xw4-3v39-52mm","tags":["article"]},{"url":"https://access.redhat.com/errata/RHSA-2025:19513","tags":["advisory"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_19513.json","tags":["advisory"]},{"url":"https://access.redhat.com/errata/RHSA-2025:19647","tags":["advisory"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_19647.json","tags":["advisory"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_19719.json","tags":["advisory"]},{"url":"https://access.redhat.com/errata/RHSA-2025:19734","tags":["advisory"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_19734.json","tags":["advisory"]},{"url":"https://access.redhat.com/errata/RHSA-2025:19800","tags":["advisory"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_19800.json","tags":["advisory"]},{"url":"https://access.redhat.com/errata/RHSA-2025:19948","tags":["advisory"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_19948.json","tags":["advisory"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_20962.json","tags":["advisory"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_21036.json","tags":["advisory"]},{"url":"https://access.redhat.com/errata/RHSA-2025:21696","tags":["advisory"]},{"url":"https://security.access.redhat.com/data/csaf/v2/advisories/2025/rhsa-2025_21696.json","tags":["advisory"]},{"url":"https://errata.rockylinux.org/RLSA-2025:19512","tags":["advisory"]},{"url":"https://errata.rockylinux.org/RLSA-2025:19719","tags":["advisory"]},{"url":"https://errata.rockylinux.org/RLSA-2025:20962","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2025-61771","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-7960-1","tags":["advisory"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2025-61770","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-61771","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-61772","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2013-0262","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2013-0263","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2015-3225","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2018-16471","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2019-16782","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-8184","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-30122","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-30123","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-44570","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-44571","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-44572","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-27530","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-27539","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-25126","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-26141","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-26146","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-25184","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27111","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-27610","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-46727","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-59830","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-61919","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-22860","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-25500","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2025-61771","title":"Rack's multipart parser buffers large non‑file fields entirely in memory, enabling DoS (memory exhaustion)","description":"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.","status":"published","published":"2025-10-07T14:42:53.366Z","modified":"2025-10-07T17:52:09.399Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T14:32:44.763463Z"}],"euvd":[{"id":"EUVD-2025-32056","description":"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.","status":"published","published":"2025-10-07T14:42:53Z","modified":"2025-10-07T17:52:09Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T20:31:35.432127Z"}],"ghsa":[{"id":"GHSA-w9pc-fmgc-vxvw","title":"Rack: Multipart parser buffers large non‑file fields entirely in memory, enabling DoS (memory exhaustion)","description":"## Summary\n\n`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).\n\n## Details\n\nDuring multipart parsing, file parts are streamed to temporary files, but non-file parts are buffered into memory:\n\n```ruby\nbody = String.new  # non-file → in-RAM buffer\n@mime_parts[mime_index].body \u003c\u003c content\n```\n\nThere is no size limit on these in-memory buffers. As a result, any large text field—while technically valid—will be loaded fully into process memory before being added to `params`.\n\n## Impact\n\nAttackers 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.\n\n## Mitigation\n\n* **Upgrade:** Use a patched version of Rack that enforces a reasonable size cap for non-file fields (e.g., 2 MiB).\n* **Workarounds:**\n  * Restrict maximum request body size at the web-server or proxy layer (e.g., Nginx `client_max_body_size`).\n  * Validate and reject unusually large form fields at the application level.","status":"published","published":"2025-10-07T17:27:07Z","modified":"2025-10-13T15:29:52Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T14:39:00.807341Z"}],"nvd":[{"id":"CVE-2025-61771","description":"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.","status":"published","published":"2025-10-07T15:16:03.123Z","modified":"2026-10-19T16:10:00.26Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"secondary"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T14:11:35.93863Z"}],"osv":[{"id":"CVE-2025-61771","title":"Rack's multipart parser buffers large non‑file fields entirely in memory, enabling DoS (memory exhaustion)","description":"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.","status":"published","published":"2025-10-07T14:42:53.366Z","modified":"2026-10-28T02:31:07.863495096Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T15:44:51.516975Z"},{"id":"DEBIAN-CVE-2025-61771","description":"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.","status":"published","published":"2025-10-07T15:16:03.123Z","modified":"2026-10-23T17:47:46.78952384Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:45:47.697959Z"},{"id":"GHSA-w9pc-fmgc-vxvw","title":"Rack: Multipart parser buffers large non‑file fields entirely in memory, enabling DoS (memory exhaustion)","description":"## Summary\n\n`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).\n\n## Details\n\nDuring multipart parsing, file parts are streamed to temporary files, but non-file parts are buffered into memory:\n\n```ruby\nbody = String.new  # non-file → in-RAM buffer\n@mime_parts[mime_index].body \u003c\u003c content\n```\n\nThere is no size limit on these in-memory buffers. As a result, any large text field—while technically valid—will be loaded fully into process memory before being added to `params`.\n\n## Impact\n\nAttackers 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.\n\n## Mitigation\n\n* **Upgrade:** Use a patched version of Rack that enforces a reasonable size cap for non-file fields (e.g., 2 MiB).\n* **Workarounds:**\n  * Restrict maximum request body size at the web-server or proxy layer (e.g., Nginx `client_max_body_size`).\n  * Validate and reject unusually large form fields at the application level.","status":"published","published":"2025-10-07T17:27:07Z","modified":"2026-09-10T03:50:30.32644673Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-400"],"updated_at":"2026-11-02T15:46:58.401149Z"},{"id":"RHSA-2025:19512","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-04T10:04:02Z","modified":"2026-09-26T10:02:56Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.096024Z"},{"id":"RHSA-2025:19513","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-04T10:04:02Z","modified":"2026-09-26T10:02:56Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.096024Z"},{"id":"RHSA-2025:19647","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-05T10:05:01Z","modified":"2026-09-26T10:02:57Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.096024Z"},{"id":"RHSA-2025:19719","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-05T10:05:03Z","modified":"2026-09-26T10:02:57Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.096024Z"},{"id":"RHSA-2025:19734","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-05T10:05:06Z","modified":"2026-09-26T10:02:58Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.096024Z"},{"id":"RHSA-2025:19800","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-06T10:06:09Z","modified":"2026-09-26T10:02:58Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.096024Z"},{"id":"RHSA-2025:19948","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-10T10:03:42Z","modified":"2026-09-26T10:03:00Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.096024Z"},{"id":"RHSA-2025:20962","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-12T10:28:19Z","modified":"2026-09-26T10:03:01Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.589982Z"},{"id":"RHSA-2025:21036","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-12T10:28:31Z","modified":"2026-09-26T10:03:01Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.589982Z"},{"id":"RHSA-2025:21696","title":"Red Hat Security Advisory: pcs security update","status":"published","published":"2025-11-19T10:08:57Z","modified":"2026-09-26T10:03:05Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:16.589982Z"},{"id":"RLSA-2025:19512","title":"Important: pcs security update","description":"The pcs packages provide a command-line configuration system for the Pacemaker and Corosync utilities.\n\nSecurity Fix(es):\n\n* rubygem-rack: Rack QueryParser has an unsafe default allowing params_limit bypass via semicolon-separated parameters (CVE-2025-59830)\n\n* rack: Rack's unbounded multipart preamble buffering enables DoS (memory exhaustion) (CVE-2025-61770)\n\n* rack: Rack's multipart parser buffers large non?file fields entirely in memory, enabling DoS (memory exhaustion) (CVE-2025-61771)\n\n* rack: Rack memory exhaustion denial of service (CVE-2025-61772)\n\n* rubygem-rack: Unbounded read in `Rack::Request` form parsing can lead to memory exhaustion (CVE-2025-61919)\n\nFor more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.","status":"published","published":"2025-11-06T09:06:17.598112Z","modified":"2025-11-06T09:48:59.239427Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:25.216873Z"},{"id":"RLSA-2025:19719","title":"Important: pcs security update","description":"The pcs packages provide a command-line configuration system for the Pacemaker and Corosync utilities.\n\nSecurity Fix(es):\n\n* rubygem-rack: Rack QueryParser has an unsafe default allowing params_limit bypass via semicolon-separated parameters (CVE-2025-59830)\n\n* rack: Rack's unbounded multipart preamble buffering enables DoS (memory exhaustion) (CVE-2025-61770)\n\n* rack: Rack's multipart parser buffers large non?file fields entirely in memory, enabling DoS (memory exhaustion) (CVE-2025-61771)\n\n* rack: Rack memory exhaustion denial of service (CVE-2025-61772)\n\n* rubygem-rack: Unbounded read in `Rack::Request` form parsing can lead to memory exhaustion (CVE-2025-61919)\n\nFor more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.","status":"published","published":"2025-11-05T09:00:57.474063Z","modified":"2025-11-05T09:48:03.231746Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:25.216873Z"},{"id":"RLSA-2025:20962","title":"Important: pcs security update","description":"The pcs packages provide a command-line configuration system for the Pacemaker and Corosync utilities.\n\nSecurity Fix(es):\n\n* rubygem-rack: Rack QueryParser has an unsafe default allowing params_limit bypass via semicolon-separated parameters (CVE-2025-59830)\n\n* rack: Rack's unbounded multipart preamble buffering enables DoS (memory exhaustion) (CVE-2025-61770)\n\n* rack: Rack's multipart parser buffers large non?file fields entirely in memory, enabling DoS (memory exhaustion) (CVE-2025-61771)\n\n* rack: Rack memory exhaustion denial of service (CVE-2025-61772)\n\n* rubygem-rack: Unbounded read in `Rack::Request` form parsing can lead to memory exhaustion (CVE-2025-61919)\n\nFor more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.","status":"published","published":"2025-11-21T18:14:11.535898Z","modified":"2025-11-21T18:49:07.134894Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:53:25.216873Z"},{"id":"UBUNTU-CVE-2025-61771","description":"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.","status":"published","published":"2025-10-07T15:16:00Z","modified":"2026-04-17T10:11:51.432396Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T16:55:50.817402Z"},{"id":"ALSA-2025:19719","title":"Important: pcs security update","description":"The pcs packages provide a command-line configuration system for the Pacemaker and Corosync utilities.  \n\nSecurity Fix(es):  \n\n  * rubygem-rack: Rack QueryParser has an unsafe default allowing params_limit bypass via semicolon-separated parameters (CVE-2025-59830)\n  * rack: Rack's unbounded multipart preamble buffering enables DoS (memory exhaustion) (CVE-2025-61770)\n  * rack: Rack's multipart parser buffers large non?file fields entirely in memory, enabling DoS (memory exhaustion) (CVE-2025-61771)\n  * rack: Rack memory exhaustion denial of service (CVE-2025-61772)\n  * rubygem-rack: Unbounded read in `Rack::Request` form parsing can lead to memory exhaustion (CVE-2025-61919)\n\n\nFor more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.\n","status":"published","published":"2025-11-04T00:00:00Z","modified":"2026-10-29T11:02:22.753089332Z","updated_at":"2026-11-02T15:27:53.448565Z"},{"id":"ALSA-2025:20962","title":"Important: pcs security update","description":"The pcs packages provide a command-line configuration system for the Pacemaker and Corosync utilities.  \n\nSecurity Fix(es):  \n\n  * rubygem-rack: Rack QueryParser has an unsafe default allowing params_limit bypass via semicolon-separated parameters (CVE-2025-59830)\n  * rack: Rack's unbounded multipart preamble buffering enables DoS (memory exhaustion) (CVE-2025-61770)\n  * rack: Rack's multipart parser buffers large non?file fields entirely in memory, enabling DoS (memory exhaustion) (CVE-2025-61771)\n  * rack: Rack memory exhaustion denial of service (CVE-2025-61772)\n  * rubygem-rack: Unbounded read in `Rack::Request` form parsing can lead to memory exhaustion (CVE-2025-61919)\n\n\nFor more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.\n","status":"published","published":"2025-11-11T00:00:00Z","modified":"2026-10-29T11:32:28.478886022Z","updated_at":"2026-11-02T15:27:53.448565Z"},{"id":"ALSA-2025:21036","title":"Important: pcs security update","description":"The pcs packages provide a command-line configuration system for the Pacemaker and Corosync utilities.  \n\nSecurity Fix(es):  \n\n  * rubygem-rack: Rack QueryParser has an unsafe default allowing params_limit bypass via semicolon-separated parameters (CVE-2025-59830)\n  * rack: Rack's unbounded multipart preamble buffering enables DoS (memory exhaustion) (CVE-2025-61770)\n  * rack: Rack's multipart parser buffers large non?file fields entirely in memory, enabling DoS (memory exhaustion) (CVE-2025-61771)\n  * rack: Rack memory exhaustion denial of service (CVE-2025-61772)\n  * rubygem-rack: Unbounded read in `Rack::Request` form parsing can lead to memory exhaustion (CVE-2025-61919)\n\n\nFor more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.\n","status":"published","published":"2025-11-11T00:00:00Z","modified":"2026-10-29T11:30:04.203427522Z","updated_at":"2026-11-02T15:27:53.448565Z"},{"id":"CLSA-2026-1790243751","title":"pcs: Fix of 10 CVEs","description":"- CVE-2025-46727: unbounded query parsing in bundled rack; a body of repeated\n  keys was parsed in full, exhausting memory. Capped by rack's new query\n  bytesize and parameter-count limits, which pcsd turns into an HTTP 400\n- CVE-2025-59830: the same unbounded query parse reached through ';' separated\n  query strings, which rack's parameter counter did not count\n- CVE-2025-61770: multipart parsing in bundled rack read the whole request body\n  searching for a boundary that never arrived\n- CVE-2025-61771: multipart parsing in bundled rack retained an unbounded\n  non-file field in memory\n- CVE-2025-61772: multipart mime part headers in bundled rack were read with no\n  size limit\n- CVE-2025-61919: Rack::Request#POST read the entire request body before any\n  limit applied, so a 64 MB body was fully buffered\n- CVE-2024-49761: quadratic regular expression in bundled rexml\n  BaseParser#unnormalize; a long run of zeros in a hex character reference made\n  the parser hang\n- CVE-2024-52804: quadratic cookie unquoting in bundled tornado\n  _unquote_cookie, which rescanned the value from each escape\n- CVE-2025-47287: malformed multipart/form-data in bundled tornado logged a\n  warning per bad part instead of rejecting the request, flooding the log\n- CVE-2026-31958: unbounded part count and part header size in bundled tornado\n  multipart parsing\n- Stop forwarding client HTTP headers from the Tornado front end to the Ruby\n  part of pcsd, which only ever needed the cookie and the content type","status":"published","published":"2026-09-24T09:56:11Z","modified":"2026-10-26T09:43:44.481328861Z","updated_at":"2026-11-02T15:43:48.28229Z"},{"id":"CLSA-2026-1790610331","title":"pcs: Fix of 10 CVEs","description":"- Update bundled rubygem rack to 2.2.20\n- CVE-2024-25126: fix ReDoS in Rack::MediaType content type parsing\n- CVE-2024-26141: fix response amplification from crafted Range headers\n- CVE-2024-26146: fix ReDoS in Accept and Forwarded header parsing\n- CVE-2025-46727: fix unbounded parameter count in Rack::QueryParser\n- CVE-2025-59830: fix params_limit bypass via semicolon-separated parameters\n- CVE-2025-61770: fix unbounded multipart preamble buffering\n- CVE-2025-61771: fix unbounded buffering of non-file multipart fields\n- CVE-2025-61772: fix unbounded multipart part header buffering\n- CVE-2025-61919: fix unbounded form body read in Rack::Request#POST\n- Handle Rack::QueryParser::QueryLimitError in pcsd, returning 400 instead of 500\n- CVE-2026-31958: cap multipart part count and part header size in bundled tornado\n- Disable multipart request parsing in pcsd, which does not use it\n- Drop i686 from ExclusiveArch: the bundled web UI needs npm at build time and\n  npm has no i686 build, so the i686 buildroot cannot be created","status":"published","published":"2026-09-28T15:45:52Z","modified":"2026-10-26T09:31:44.061952334Z","updated_at":"2026-11-02T15:43:48.65893Z"},{"id":"CLSA-2026-1790610419","title":"pcs: Fix of 10 CVEs","description":"- Update bundled rubygem rack to 2.2.20\n- CVE-2024-25126: fix ReDoS in Rack::MediaType content type parsing\n- CVE-2024-26141: fix response amplification from crafted Range headers\n- CVE-2024-26146: fix ReDoS in Accept and Forwarded header parsing\n- CVE-2025-46727: fix unbounded parameter count in Rack::QueryParser\n- CVE-2025-59830: fix params_limit bypass via semicolon-separated parameters\n- CVE-2025-61770: fix unbounded multipart preamble buffering\n- CVE-2025-61771: fix unbounded buffering of non-file multipart fields\n- CVE-2025-61772: fix unbounded multipart part header buffering\n- CVE-2025-61919: fix unbounded form body read in Rack::Request#POST\n- Handle Rack::QueryParser::QueryLimitError in pcsd, returning 400 instead of 500\n- CVE-2026-31958: cap multipart part count and part header size in bundled tornado\n- Disable multipart request parsing in pcsd, which does not use it\n- Drop i686 from ExclusiveArch: the bundled web UI needs npm at build time and\n  npm has no i686 build, so the i686 buildroot cannot be created","status":"published","published":"2026-09-28T15:47:19Z","modified":"2026-10-26T09:31:51.622041107Z","updated_at":"2026-11-02T15:43:48.65893Z"},{"id":"CLSA-2026-1792688250","title":"pcs: Fix of 4 CVEs","description":"- Fix CVE-2025-46727: limit number and bytesize of query parameters in bundled\n  rubygem rack\n- Fix CVE-2025-61919: bound the read of urlencoded request bodies in bundled\n  rubygem rack\n- Fix CVE-2025-61771: limit multipart data retained in memory in bundled\n  rubygem rack\n- Fix CVE-2025-61772: limit the multipart part header size in bundled\n  rubygem rack\n- Skip the pcs tests that need pacemaker \u003e= 1.1.23 when the build root has\n  an older one (CloudLinux 7)","status":"published","published":"2026-10-22T16:57:42Z","modified":"2026-10-26T09:43:43.49893166Z","updated_at":"2026-11-02T15:43:54.981307Z"},{"id":"DLA-4357-1","title":"ruby-rack - security update","status":"published","published":"2025-11-01T00:00:00Z","modified":"2025-11-01T21:35:12.919574Z","updated_at":"2026-11-02T15:46:12.7027Z"},{"id":"DSA-6048-1","title":"ruby-rack - security update","status":"published","published":"2025-11-03T00:00:00Z","modified":"2025-11-03T22:17:32.07714Z","updated_at":"2026-11-02T15:46:18.296714Z"},{"id":"MGASA-2025-0334","title":"Updated ruby-rack packages fix security vulnerabilities","description":"Unbounded-Parameter DoS in Rack::QueryParser. (CVE-2025-46727)\nReDoS Vulnerability in Rack::Multipart handle_mime_head.\n(CVE-2025-49007)\nRack QueryParser has an unsafe default allowing params_limit bypass via\nsemicolon-separated parameters. (CVE-2025-59830)\nRack's unbounded multipart preamble buffering enables DoS (memory\nexhaustion). (CVE-2025-61770)\nRack's multipart parser buffers large non‑file fields entirely in\nmemory, enabling DoS (memory exhaustion). (CVE-2025-61771)\nRack's multipart parser buffers unbounded per-part headers, enabling DoS\n(memory exhaustion). (CVE-2025-61772)\nRack is vulnerable to a memory-exhaustion DoS through unbounded\nURL-encoded body parsing. (CVE-2025-61919)\nRack has Possible Information Disclosure Vulnerability. (CVE-2025-61780)\n","status":"published","published":"2025-12-29T20:41:12Z","modified":"2026-04-16T04:43:56.798658566Z","updated_at":"2026-11-02T15:49:43.178336Z"},{"id":"openSUSE-SU-2025:15621-1","title":"ruby3.4-rubygem-rack-2.2-2.2.19-1.1 on GA media","description":"These are all security issues fixed in the ruby3.4-rubygem-rack-2.2-2.2.19-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2025-10-09T00:00:00Z","modified":"2026-03-23T04:54:01.108282Z","updated_at":"2026-11-02T16:58:37.810934Z"},{"id":"openSUSE-SU-2026:10286-1","title":"ruby4.0-rubygem-rack-2.2-2.2.22-1.1 on GA media","description":"These are all security issues fixed in the ruby4.0-rubygem-rack-2.2-2.2.22-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-03-04T00:00:00Z","modified":"2026-03-23T04:54:39.054152Z","updated_at":"2026-11-02T16:58:38.101535Z"}]}}
