CVE-2026-75484
HTTP/2 header field values containing CR, LF or NUL are passed to the application unvalidated in Bandit
Description
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.
INFO
Published Date :
Aug. 20, 2026, 9:17 p.m.
Last Modified :
Oct. 18, 2026, 8:10 p.m.
Remotely Exploit :
Yes !
Source :
6b3ad84c-e1a6-4bf7-a703-f496b71e49db
CVSS Scores
| Score | Version | Severity | Vector | Exploitability Score | Impact Score | Source |
|---|---|---|---|---|---|---|
| CVSS | 134c704f-9b21-4f2e-91b3-4a467353bcc0 | |||||
| CVSS 4.0 | MEDIUM | 6b3ad84c-e1a6-4bf7-a703-f496b71e49db | ||||
| CVSS 4.0 | MEDIUM | 6b3ad84c-e1a6-4bf7-a703-f496b71e49db |
Solution
- Update bandit to a version that includes the fix.
- Ensure downstream applications sanitize header values.
- Validate header values for CR, LF, or NUL characters.
- Reject duplicate pseudo-header :authority.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-75484.
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-75484 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-75484
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-75484 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-75484 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
CVE Translated by [email protected]
Oct. 18, 2026
Action Type Old Value New Value Added Translation Title: bandit de mtrudel, Description: La vulnerabilidad de Neutralización Incorrecta de Secuencias CRLF ('Inyección CRLF') en mtrudel bandit permite a un atacante remoto no autenticado introducir caracteres CR, LF o NUL en los encabezados de solicitud visibles para la aplicación a través de HTTP/2. Bandit.HTTP2.Stream.read_headers/1 valida la ubicación y unicidad de los pseudo-encabezados, el uso de mayúsculas/minúsculas en los nombres de los encabezados, los encabezados específicos de la conexión, el valor te y la longitud del contenido, pero nunca verifica los valores de los campos. Debido a que HPACK transporta octetos arbitrarios, un bloque HEADERS cuyos valores de campo contienen \r, \n o \0 se decodifica sin error y los valores llegan a conn.req_headers sin cambios. La ruta HTTP/1 ya rechaza los mismos octetos; HTTP/2 no lo hacía. Bandit en sí mismo no es un sumidero para los bytes inyectados: su propio registro utiliza cadenas fijas o inspect, y los encabezados de respuesta HTTP/2 están codificados en HPACK y son rechazados por separado por put_resp_header de Plug, por lo que la división de respuesta no es alcanzable a través de esta ruta. El riesgo reside enteramente en cómo una aplicación descendente consume los valores de los encabezados, como adjuntar uno textualmente a un registro de texto plano o concatenarlo en una solicitud ascendente. Una brecha relacionada incluida en la misma corrección: solo se verificaba :method, :scheme y :path para una ocurrencia como máximo; se aceptaba un pseudo-encabezado :authority duplicado, con la primera instancia ganando silenciosamente como conn.host mientras que un valor en conflicto permanecía visible para la aplicación. Este problema afecta a bandit: desde 1.4.0 antes de 1.12.5. -
CVE Modified by 134c704f-9b21-4f2e-91b3-4a467353bcc0
Aug. 21, 2026
Action Type Old Value New Value Added Reference https://github.com/mtrudel/bandit/security/advisories/GHSA-x3gh-xhj4-3vq8 Added SSVC {'id': 'CVE-2026-75484', 'role': 'CISA Coordinator', 'options': [{'exploitation': 'poc'}, {'automatable': 'yes'}, {'technicalImpact': 'partial'}], 'version': '2.0.3', 'timestamp': '2026-08-21T19:52:23.602062Z'} -
New CVE Received by 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Aug. 20, 2026
Action Type Old Value New Value Added Affected [{'cpes': ['cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/mtrudel/bandit', 'vendor': 'mtrudel', 'modules': ["'Elixir.Bandit.HTTP2.Stream'"], 'product': 'bandit', 'versions': [{'status': 'affected', 'version': '1.4.0', 'lessThan': '1.12.5', 'versionType': 'semver'}], 'packageURL': 'pkg:hex/bandit', 'packageName': 'bandit', 'programFiles': ['lib/bandit/http2/stream.ex'], 'collectionURL': 'https://repo.hex.pm', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.Bandit.HTTP2.Stream':read_headers/1"}]}, {'cpes': ['cpe:2.3:a:mtrudel:bandit:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/mtrudel/bandit', 'vendor': 'mtrudel', 'modules': ["'Elixir.Bandit.HTTP2.Stream'"], 'product': 'bandit', 'versions': [{'status': 'affected', 'version': 'fff06efe3be962b484bd4d3eb339372fda5a231f', 'lessThan': 'd38cf046c9a3cae4d0f88001c2ceb4143f86366b', 'versionType': 'git'}], 'packageURL': 'pkg:github/mtrudel/bandit', 'packageName': 'mtrudel/bandit', 'programFiles': ['lib/bandit/http2/stream.ex'], 'collectionURL': 'https://github.com', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.Bandit.HTTP2.Stream':read_headers/1"}]}] Added Description 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. Added CVSS V4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X Added CWE CWE-93 Added Reference https://cna.erlef.org/cves/CVE-2026-75484.html Added Reference https://github.com/mtrudel/bandit/commit/d38cf046c9a3cae4d0f88001c2ceb4143f86366b Added Reference https://github.com/mtrudel/bandit/security/advisories/GHSA-x3gh-xhj4-3vq8 Added Reference https://osv.dev/vulnerability/EEF-CVE-2026-75484