Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker controls or MITMs an HTTP/1 server behind an intermediary
-
DeliveryReturn response with 'Transfer-Encoding: chunked, gzip' or HTTP/1.0 keep-alive + TE
-
ExploitMint ends body at zero-chunk while intermediary reads to close
-
ExecutionConnection desynchronizes on pooled socket
-
PersistLeftover bytes parsed as next request's response
-
ImpactPoisoned/substituted response served to subsequent request
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
|
| Exploitation Conditions | Requires (1) Mint acting as the HTTP/1 client against a server whose responses the attacker controls or can inject (a malicious origin server or MITM), (2) a pooled/keep-alive HTTP/1 connection reused for subsequent requests, and (3) a response that triggers the framing bug - specifically Transfer-Encoding listing 'chunked' as the FIRST (not final) coding, e.g. 'Transfer-Encoding: chunked, gzip', or an HTTP/1.0 response (final or 1xx) carrying Transfer-Encoding with Connection: keep-alive. Limiting factors: this is a reverse-trust scenario (the attacker must influence server framing, not merely reach Mint), it only affects HTTP/1 with connection reuse, and it is fixed in Mint 1.11.0. HTTP/2 usage and non-pooled/close-after-response connections are not affected. |
| Impact | This is a reverse-trust HTTP/1 response-smuggling flaw (CWE-444): a MALICIOUS or attacker-influenced HTTP/1 server, not a client-side attacker, is required to desynchronize an intermediary from the Mint client over a pooled/keep-alive connection. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N, 6.3) is internally consistent with the description: network reachable, no authentication to Mint, but with an Attack Requirement (AT:P) reflecting the need for connection pooling plus attacker control of server framing and a following request to poison. The 'PR:N' correctly describes that no credentials against Mint are needed, but exploitation is gated by the attacker already controlling (or MITM-influencing) the origin server response - a meaningful precondition. No EPSS score, no CISA KEV listing, and no public POC were provided, so per the precision rules this is 'no public exploit identified at time of analysis.' The Transfer-Encoding parsing bug is confirmed by a vendor advisory (GHSA-gvrc-75rc-7gj9) and two patch commits, so the technical validity is well-established, but real-world weaponization is unproven. Net: a genuine correctness/security bug with a credible patch, but real-world priority is tempered by the reverse-trust prerequisite (you must already talk to a hostile/compromised HTTP/1 server through a shared pooled connection), the niche Elixir footprint, and the absence of exploitation signals. Treat as a should-patch library update rather than an emergency. |
| Exploit ScenarioDerived | An attacker who controls or can influence an HTTP/1 origin server (or sits as a malicious intermediary) returns a response with a header such as 'Transfer-Encoding: chunked, gzip' or an HTTP/1.0 keep-alive response carrying Transfer-Encoding; Mint stops the body at the zero-length chunk while an RFC-compliant intermediary reads to connection close, desynchronizing the two. On the same pooled connection, Mint then mis-parses leftover bytes as the response to the next request, letting the attacker poison or substitute responses delivered to other requests sharing that connection. No public exploit code was provided, and success requires the connection-pooling and framing conditions captured by CVSS AT:P. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 28, 2026
HTTP/1 response smuggling in the Elixir Mint client (0.1.0 through 1.10.x) allows a malicious or attacker-influenced origin server to desynchronize Mint from an upstream intermediary on a pooled keep-alive connection, so that bytes following a crafted response are parsed as the answer to a subsequent request, poisoning that request's response. The root cause is that Mint's message_body/1 selects chunked framing whenever 'chunked' is the FIRST coding in a Transfer-Encoding header (e.g. 'Transfer-Encoding: chunked, gzip') instead of requiring it to be the final coding, and additionally keeps the connection open after an HTTP/1.0 response - final or 1xx - that carries Transfer-Encoding with 'Connection: keep-alive', both contrary to RFC 9112. Exploitation is a reverse-trust scenario: the attacker must control or inject server response framing and the client must reuse an HTTP/1 connection; HTTP/2 and non-pooled connections are unaffected, and no public exploit code or active exploitation was identified at time of analysis. The issue is fixed in Mint 1.11.0.
RemediationAI
Vendor-released patch: upgrade Mint to 1.11.0 or later (Hex: {:mint, "~> 1.11"}), which contains the corrected HTTP/1 framing logic in lib/mint/http1.ex and the vendored lib/xhttp/conn.ex; the fix is visible in commits 2ec8b696b5475ecbdaa87c0098957bca339e17c0 and 60089586ec7adc9fddb09f69a2f5919ba9ac7f33, and the advisory is at https://github.com/elixir-mint/mint/security/advisories/GHSA-gvrc-75rc-7gj9. Because Mint is typically a transitive dependency, run mix deps.update mint (or bump the lockfile) and confirm the resolved version is 1.11.0+, including in Finch/Req-based stacks. If an immediate upgrade is not possible, the effective compensating control is to eliminate connection reuse with untrusted peers: send 'Connection: close' / disable HTTP/1 keep-alive pooling for those destinations, at the cost of per-request TCP/TLS handshakes and materially lower throughput. Where the peer supports it, forcing HTTP/2 avoids the vulnerable HTTP/1 framing path entirely. Restricting egress to trusted origins is only a partial mitigation, since the flaw requires a malicious or compromised server in the first place. There is no separate backport for the pre-1.11.0 line, so upgrade rather than patch in place.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This is a CWE-444 (Inconsistent Interpretation of HTTP Requests / Response Smuggling) flaw in Mint, the low-level Elixir HTTP client used directly and underneath higher-level libraries such as Finch and Req. The affected code is message_body/1 in lib/mint/http1.ex and the vendored lib/xhttp/conn.ex parser: Mint decides framing by scanning the response's Transfer-Encoding fields and choosing chunked framing when 'chunked' appears as the first coding, whereas RFC 9112 section 6.3 applies chunked framing only when chunked is the FINAL coding and otherwise requires reading the body until the server closes the connection. For a response such as 'Transfer-Encoding: chunked, gzip', an RFC-compliant intermediary consumes every byte up to connection close as the body, while Mint terminates the body at the zero-length chunk and then parses the remaining bytes as the response to the next request on the same pooled connection - a classic desynchronization that poisons subsequent responses. A second defect is that Mint retains the connection after an HTTP/1.0 response (final or 1xx) carrying Transfer-Encoding and 'Connection: keep-alive'; RFC 9112 section 6.1 requires the framing of such a message to be treated as faulty and the connection closed, so again trailing bytes are consumed as the next response. The upstream fix commit (2ec8b696b5475ecbdaa87c0098957bca339e17c0, with related changes in 60089586ec7adc9fddb09f69a2f5919ba9ac7f33) rewrites the decode loop to reject mixed/invalid framing, honor only properly-ordered chunked codings, validate chunk-size metadata and trailers, and error on conflicting Transfer-Encoding/Content-Length combinations. Affected CPE data identifies the package broadly as cpe:2.3:a:elixir-mint:mint:*:*:*:*:*:*:*:*.
Know when Elixir gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
Network-reachable with no auth to Mint, but AC:H reflects the required attacker-controlled server framing and pooled-connection desync (maps from AT:P); response poisoning yields limited C and I, no availability impact.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') vulnerability in elixir-mint mint allows a malicious HTTP/1 server to desynchronize an intermediary and the Mint client on a pooled connection, poisoning the responses to subsequent requests that share the connection.
message_body/1 in lib/mint/http1.ex selects chunked framing when chunked is the first coding listed in a response's Transfer-Encoding fields. RFC 9112 section 6.3 applies chunked framing only when chunked is the final coding, and otherwise reads the body until the server closes the connection. For a response such as Transfer-Encoding: chunked, gzip, an intermediary that follows the RFC treats every byte up to the close as the body, while Mint ends the body at the zero-length chunk and parses the remaining bytes as the response to the next request on the connection.
Mint also keeps the connection open after an HTTP/1.0 response, final or 1xx, that carries Transfer-Encoding and Connection: keep-alive. RFC 9112 section 6.1 requires treating the framing of such a message as faulty and closing the connection after it, so bytes after its chunked body are parsed as the response to the next request in the same way.
This issue affects mint: from 0.1.0 before 1.11.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Unbounded recursion in the Elixir `protobuf` Hex package (versions >= 0.8.0, < 0.16.1) lets unauthenticated remote attac
Improper JWT signature verification in Dashbit's nimble_zta (0.1.2 up to but not including 0.1.3) lets an unauthenticate
Session-swapping authentication bypass in the Elixir library AshAuthentication (versions 4.10.0 before 4.15.0 and 5.0.0-
Authentication bypass in the Elixir library ash_authentication lets an attacker who operates one federated identity-prov
Account takeover in AshAuthentication (Elixir/Ash) 4.14.0 through 4.14.x and 5.0.0-rc.10 through 5.0.0-rc.13 lets unauth
Server-Side Request Forgery protection bypass in the Elixir safeurl library (versions 0.1.0 and later) allows unauthenti
Memory-exhaustion denial of service in the elixir-protobuf library (protobuf) from 0.8.0 onward allows an unauthenticate
Atom table exhaustion in the Ash framework (Elixir) allows an unauthenticated remote attacker to crash a BEAM node by su
Ciphertext tampering in the Cloak Elixir encryption library (danielberkompas/cloak, all versions from 0.1.0-pre onward)
Memory exhaustion denial-of-service in Elixir Mint affects versions 1.1.0 through 1.10.x and allows a malicious or compr
Authentication bypass in the AshAuthentication library for Elixir/Ash lets an authenticated attacker who holds a valid s
An authenticated account-takeover primitive exists in the Elixir library AshAuthentication (ash_authentication) versions
EUVD-2026-88220
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB