Skip to content

C parser (llhttp) accepts null bytes and control characters in request header values

Low
Dreamsorcerer published GHSA-63hf-3vf5-4wqf Apr 1, 2026

Package

pip aiohttp (pip)

Affected versions

<=3.13.3

Patched versions

3.13.4

Description

Summary

The C parser (the default for most installs) accepted null bytes and control characters in request headers.

Impact

An attacker could send header values that are interpreted differently than expected due to the presence of control characters. For example, request.url.origin() may return a different value than the raw Host header, or what a reverse proxy interpreted it as., potentially resulting in some kind of security bypass.


Patch: 9370b97

Severity

Low

CVE ID

CVE-2026-34520

Weaknesses

Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Request/Response Splitting')

The product receives data from an HTTP agent/component (e.g., web server, proxy, browser, etc.), but it does not neutralize or incorrectly neutralizes CR and LF characters before the data is included in outgoing HTTP headers. Learn more on MITRE.

Credits