{"id":"EEF-CVE-2026-59246","summary":"Zero-length HTTP/2 CONTINUATION frames bypass Mint's header-block byte-size cap and exhaust client memory","details":"## Summary\n\nAllocation of resources without limits vulnerability in elixir-mint mint allows a remote HTTP/2 server to exhaust memory on the client host and cause a denial of service.\n\nThe Mint.HTTP2.handle\\_continuation/3 function in lib/mint/http2.ex accumulates the header-block fragment carried by each HTTP/2 CONTINUATION frame into a growing conn.headers\\_being\\_processed nesting, one level deeper per frame, and only releases it when a frame with the END\\_HEADERS flag arrives. The only guard on this accumulator is Mint.HTTP2.assert\\_header\\_block\\_within\\_max\\_size/2, which sums the byte size of the fragments received so far. Because a CONTINUATION frame is permitted by the protocol to carry a zero-length payload, an unbounded chain of zero-length CONTINUATION frames adds no bytes to the running total, never trips the size cap, and never emits END\\_HEADERS, yet each frame still nests the accumulator one level deeper.\n\nA malicious HTTP/2 server (reachable directly, via an attacker-controlled redirect, via SSRF, or via a man-in-the-middle) can open a stream by sending a HEADERS frame without END\\_HEADERS and then stream zero-length CONTINUATION frames indefinitely. Client memory grows one cons cell per frame received; sustained bandwidth from the peer drives the BEAM node running the Mint client to memory exhaustion and eventual out-of-memory termination.\n\nThis issue affects mint: from 0.1.0 before 1.9.2.","aliases":["CVE-2026-59246","GHSA-8pf6-g464-h6h9"],"modified":"2026-07-30T18:22:03.450604Z","published":"2026-07-14T08:37:04.609Z","database_specific":{"cwe_ids":["CWE-770"],"capec_ids":["CAPEC-130"],"cpe_ids":["cpe:2.3:a:elixir-mint:mint:*:*:*:*:*:*:*:*"]},"references":[{"type":"ADVISORY","url":"https://github.com/elixir-mint/mint/security/advisories/GHSA-8pf6-g464-h6h9"},{"type":"WEB","url":"https://cna.erlef.org/cves/CVE-2026-59246.html"},{"type":"FIX","url":"https://github.com/elixir-mint/mint/commit/5779de1666344b32aefc4354184ea07f902f73ce"},{"type":"PACKAGE","url":"https://hex.pm/packages/mint"}],"affected":[{"package":{"name":"mint","ecosystem":"Hex","purl":"pkg:hex/mint"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0.1.0"},{"fixed":"1.9.2"}]}],"versions":["0.1.0","0.2.0","0.2.1","0.3.0","0.4.0","0.5.0","1.0.0","1.1.0","1.2.0","1.2.1","1.3.0","1.4.0","1.4.1","1.4.2","1.5.0","1.5.1","1.5.2","1.6.0","1.6.1","1.6.2","1.7.0","1.7.1","1.8.0","1.9.0","1.9.1"],"database_specific":{"source":"https://cna.erlef.org/osv/EEF-CVE-2026-59246.json"}},{"ranges":[{"type":"GIT","repo":"https://github.com/elixir-mint/mint","events":[{"introduced":"596ca4304504be68939c4929e0831557097962b8"},{"fixed":"5779de1666344b32aefc4354184ea07f902f73ce"}]}],"versions":["v1.9.1","v1.9.0","v1.8.0","v1.7.1","v1.7.0","v1.6.2","v1.6.1","v1.6.0","v1.5.2","v1.5.1","v1.5.0","v1.4.2","v1.4.1","v1.4.0","v1.3.0","v1.2.1","v1.2.0","v1.1.0","v1.0.0","v0.5.0","v0.4.0","v0.2.1","v0.2.0","v0.1.0"],"database_specific":{"source":"https://cna.erlef.org/osv/EEF-CVE-2026-59246.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N"}],"credits":[{"name":"zx (Jace)","type":"FINDER"},{"name":"Andrea Leopardi","type":"REMEDIATION_DEVELOPER"},{"name":"Eric Meadows-Jönsson","type":"REMEDIATION_REVIEWER"},{"name":"Jonatan Männchen / EEF","type":"ANALYST"}]}