Read the docs
TI-2026-52868 Aliases CVE-2026-75484GHSA-23xx-x3px-xxpj

HTTP/2 header field values containing CR, LF or NUL are passed to the application unvalidated in Bandit

Priority HIGH 70CWE-93Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Attack requirements
None
Impact type
—
Confidentiality · integrity · availability
None · Low · None
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA.

Summary

Improper Neutralization of CRLF Sequences ('CRLF Injection') vulnerability in mtrudel bandit allows an unauthenticated remote attacker to smuggle CR, LF, or NUL characters into application-visible request headers via HTTP/2. Bandit.HTTP2.Stream.read_headers/1 validates pseudo-header placement and uniqueness, header-name casing, connection-specific headers, the te value, and content-length, but never checks field values. Because HPACK carries arbitrary octets, a HEADERS block whose field values contain \r, \n, or \0 decodes without error and the values land in conn.req_headers unchanged. The HTTP/1 path already rejects the same octets; HTTP/2 did not. Bandit itself is not a sink for the injected bytes: its own logging uses fixed strings or inspect, and HTTP/2 response headers are HPACK-encoded and separately rejected by Plug's put_resp_header, so response splitting is not reachable through this path. The risk is entirely in how a downstream application consumes header values, such as appending one verbatim to a plain-text log or concatenating it into an upstream request. A related gap bundled in the same fix: only :method, :scheme, and :path were checked for at most one occurrence; a duplicate :authority pseudo-header was accepted, with the first instance silently winning as conn.host while a conflicting value remained visible to the application. This issue affects bandit: from 1.4.0 before 1.12.5.

Why it matters now

Exploitation Proof of concept CISA SSVC · not in CISA KEV
EPSS 0.00709 53rd percentileScored 2026-11-07
Fix Fixed bandit (mtrudel): 1.12.5

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
Poc
Automatable
Yes
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
mtrudelbandit1.4.0 to before 1.12.51.12.5Patch availableCNA
  • bandit Vendormtrudel Affected 1.4.0 to before 1.12.5 Fixed in 1.12.5 Patch available CNA

CPE names CNA · 1

CPEVersionsRoleVendor
cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*——mtrudel
  • cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:* Versions — — ·mtrudel

Remediation

  • Fix · CNA bandit (mtrudel) Fixed in 1.12.5

Fixed in the same release

Records fixed by the same vendor advisory or release, as the CNA lists them.

  • Release ·

    mtrudel bandit 1.12.5

    2 records Highest priority Priority HIGH 2 HIGH

    Other records, highest priority first

    • TI-2026-52571 HTTP/2 connection-window starvation pins Plug processes indefinitely in BanditPriority HIGH 77

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-75484
  2. 2026-10-03 Alias added: GHSA-23xx-x3px-xxpj

References

  • TI-2026-81989 HTTP/2 request bodies made of 1-byte DATA frames amplify memory use in Bandit CVSS 4.0HIGH 8.7
  • TI-2026-74311 Bandit HTTP/2 send timers reset, letting trickles pin stream processes CVSS 4.0HIGH 8.7
  • TI-2026-52571 HTTP/2 connection-window starvation pins Plug processes indefinitely in Bandit CVSS 4.0HIGH 8.7
  • TI-2026-46780 Quadratic CPU blow-up reassembling fragmented WebSocket messages in Bandit CVSS 4.0HIGH 8.7
  • TI-2026-31007 WebSocket fragmented message reassembly unbounded in bandit CVSS 4.0HIGH 8.7
  • TI-2026-28689 HTTP/1 chunked decoder infinite loop on requests with trailer fields in bandit CVSS 4.0HIGH 8.7
See all 23 →

Sources