Skip to main content

Elixir Mint EUVDEUVD-2026-88220

| CVE-2026-94194 MEDIUM
HTTP Request/Response Smuggling (CWE-444)
2026-09-28 EEF
6.3
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Attacker controls or MITMs an HTTP/1 server behind an intermediary
  2. Delivery
    Return response with 'Transfer-Encoding: chunked, gzip' or HTTP/1.0 keep-alive + TE
  3. Exploit
    Mint ends body at zero-chunk while intermediary reads to close
  4. Execution
    Connection desynchronizes on pooled socket
  5. Persist
    Leftover bytes parsed as next request's response
  6. Impact
    Poisoned/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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Mint 0.1.0 <1.11.0
Mint 60089586ec7adc9fddb09f69a2f5919ba9ac7f33 <2ec8b696b5475ecbdaa87c0098957bca339e17c0

Affected Packages

euvd mint fix: 1.11.0

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

Vendor (EEF) PRIMARY 6.3 MEDIUM
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
vuln.today AI 4.8 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

EPSS Score
0.3%
Top 79% exploitable
Prevalence
Low
Elixir HTTP client library (base of Finch/Req); niche ecosystem footprint
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

More in Elixir

View all
CVE-2026-54451 HIGH POC
8.2 Jul 15

Unbounded recursion in the Elixir `protobuf` Hex package (versions >= 0.8.0, < 0.16.1) lets unauthenticated remote attac

CVE-2026-91187 CRITICAL
9.3 Sep 24

Improper JWT signature verification in Dashbit's nimble_zta (0.1.2 up to but not including 0.1.3) lets an unauthenticate

CVE-2026-76949 CRITICAL
9.1 Sep 17

Session-swapping authentication bypass in the Elixir library AshAuthentication (versions 4.10.0 before 4.15.0 and 5.0.0-

CVE-2026-91039 CRITICAL
9.1 Sep 17

Authentication bypass in the Elixir library ash_authentication lets an attacker who operates one federated identity-prov

CVE-2026-88952 CRITICAL
9.1 Sep 17

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

CVE-2026-77866 CRITICAL
9.0 Sep 15

Server-Side Request Forgery protection bypass in the Elixir safeurl library (versions 0.1.0 and later) allows unauthenti

CVE-2026-104635 HIGH
8.2 Oct 09

Memory-exhaustion denial of service in the elixir-protobuf library (protobuf) from 0.8.0 onward allows an unauthenticate

CVE-2026-94201 HIGH
8.2 Oct 05

Atom table exhaustion in the Ash framework (Elixir) allows an unauthenticated remote attacker to crash a BEAM node by su

CVE-2026-95105 HIGH
8.2 Oct 06

Ciphertext tampering in the Cloak Elixir encryption library (danielberkompas/cloak, all versions from 0.1.0-pre onward)

CVE-2026-91043 HIGH
8.2 Sep 28

Memory exhaustion denial-of-service in Elixir Mint affects versions 1.1.0 through 1.10.x and allows a malicious or compr

CVE-2026-80218 HIGH
7.6 Sep 17

Authentication bypass in the AshAuthentication library for Elixir/Ash lets an authenticated attacker who holds a valid s

CVE-2026-82685 HIGH
7.6 Sep 17

An authenticated account-takeover primitive exists in the Elixir library AshAuthentication (ash_authentication) versions

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy