Executive brief
AIOHTTP is a popular Python library used for building web servers and clients. A vulnerability in its default C-based message parser allows attackers to include hidden characters in web requests that can trick the system into misidentifying the source or destination of a request. This could allow an attacker to bypass security filters or gain unauthorized access to internal systems by confusing the way a reverse proxy and the application interpret the same request.
Technical details
A vulnerability exists in AIOHTTP's default C parser (llhttp) where it fails to properly neutralize null bytes and control characters within HTTP request headers. This is classified as an Improper Neutralization of CRLF Sequences (CWE-113). An unauthenticated remote attacker can exploit this by sending specially crafted headers that are interpreted inconsistently between AIOHTTP and other infrastructure components like reverse proxies. For example, the 'request.url.origin()' function might return a value that differs from what a proxy perceived, enabling request smuggling or security policy bypasses. The issue is addressed in version 3.13.4.
Affected products
- aio-libs aiohttp <= 3.13.3
Timeline
- 2026-04-01: disclosed
- 2026-04-01: advisory
- 2026-04-01: patched: Fixed in version 3.13.4