ETK-2026-3098Zero's internal tracking ID, independent of the CVE number.
waiting for further signalsZero needs more public information before it can validate it.description
Rack applications that parse multipart requests can retain excessive request data in the multipart parser's internal buffer. An unauthenticated attacker can send a valid multipart request that exhausts worker memory; the application must accept and parse multipart input.
mitigation
Upgrade Rack to 2.2.25, 3.1.23, or 3.2.8, as appropriate for the deployed branch. Also cap request body size at the proxy or application boundary and set RACK_MULTIPART_PARSER_BYTESIZE_LIMIT to the maximum multipart upload size required.
fixed in 2.2.25, 3.1.23, 3.2.8
outcome
Contextual, not validated: no deterministic check could cover this one, and no technique passed our review.
source signals
Public signals that triggered or updated the pipeline. These are inputs for the deltas above.
- 2026-10-30 02:18Zghsa: trigger signal, started the run
this entry in the feed
GET /api/v1/feed/ETK-2026-3098
{ "etk_id": "ETK-2026-3098", "cve_id": null, "display_id": "ETK-2026-3098", "ghsa_id": "GHSA-5v64-555j-wjxm", "euvd_id": null, "status": "published", "anchor_state": "awaiting_cve", "title": "Memory exhaustion in Rack multipart request parsing", "summary": "Rack applications that parse multipart requests can retain excessive request data in the multipart parser's internal buffer. An unauthenticated attacker can send a valid multipart request that exhausts worker memory; the application must accept and parse multipart input.", "mitigation": "Upgrade Rack to 2.2.25, 3.1.23, or 3.2.8, as appropriate for the deployed branch. Also cap request body size at the proxy or application boundary and set RACK_MULTIPART_PARSER_BYTESIZE_LIMIT to the maximum multipart upload size required.", "vendor": "rubygems", "product": "rubygems:rack", "affected": [ { "affected_notes": [], "affected_ranges": [ "< 2.2.25" ], "ecosystem": "rubygems", "fixed_versions": [ "2.2.25" ], "package_name": "rack", "purl": "pkg:gem/rack" }, { "affected_notes": [], "affected_ranges": [ ">= 3.0, < 3.1.23" ], "ecosystem": "rubygems", "fixed_versions": [ "3.1.23" ], "package_name": "rack", "purl": "pkg:gem/rack" }, { "affected_notes": [], "affected_ranges": [ ">= 3.2, < 3.2.8" ], "ecosystem": "rubygems", "fixed_versions": [ "3.2.8" ], "package_name": "rack", "purl": "pkg:gem/rack" } ], "cwes": [ 400 ], "cvss_score": 7.5, "cvss_src": "cna_vendor", "cvss_vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "epss_score": null, "epss_percentile": null, "epss_asof": null, "automation": "contextual", "check": false, "check_confidence_basis": null, "exploit": false, "pipeline_minutes": 22.37815325, "t0_at": null, "signals": { "trigger_signal": { "at": "2026-10-30T02:18:55+00:00", "days": -1.45167260625, "is_lower_bound": true, "measured_at": "2026-10-31T13:09:19.545146+00:00", "url": "https://github.com/rack/rack/security/advisories/GHSA-5v64-555j-wjxm" } } }
published 2026-10-30 17:16Z
last change 2026-10-31 13:03Z
Need the technical details behind an entry?
Every entry here shows what we attempted and when. The technical details, the generated exploit that fired it and the evidence behind the verdict are not public. Tell us about your use case and we’ll get back to you about extended API access.