Am I affected?

type your mint version to check

Description

Allocation 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.

The 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.

A 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.

This issue affects mint: from 0.1.0 before 1.9.2.

Weaknesses & attack patterns

Weakness

CWE-770 · Allocation of Resources Without Limits or Throttling in catalog → MITRE ↗

Attack patterns

CAPEC-130 · Excessive Allocation MITRE ↗

Affected — Hex / mint Hex.pm ↗ Repository ↗

0.1.0 < 1.9.2 affected
every other version: unaffected
default status unaffected
cpe cpe:2.3:a:elixir-mint:mint:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.Mint.HTTP2'
source files lib/mint/http2.ex
routines 'Elixir.Mint.HTTP2':handle_continuation/3 · 'Elixir.Mint.HTTP2':assert_header_block_within_max_size/2

Affected — GitHub / elixir-mint/mint Repository ↗

596ca43 < 5779de1 affected
every other version: unaffected
default status unaffected
cpe cpe:2.3:a:elixir-mint:mint:*:*:*:*:*:*:*:*
modules · source files · routines
modules 'Elixir.Mint.HTTP2'
source files lib/mint/http2.ex
routines 'Elixir.Mint.HTTP2':handle_continuation/3 · 'Elixir.Mint.HTTP2':assert_header_block_within_max_size/2

References

Credits

zx (Jace) Finder
Andrea Leopardi Remediation developer
Eric Meadows-Jönsson Remediation reviewer
Jonatan Männchen / EEF Analyst

CVSS breakdown

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
« All CVEs