A critical vulnerability tracked as CVE-2025-43859 has been disclosed in h11, a minimalist, I/O-agnostic HTTP/1.1 protocol library written in Python. Rated CVSS 9.1, the flaw could enable request smuggling attacks in applications where h11 is paired with a misconfigured or buggy HTTP proxy.
βA leniency in h11βs parsing of line terminators in chunked-coding message bodies can lead to request smuggling vulnerabilities under certain conditions,β the h11 advisory warns.
In HTTP/1.1, chunked transfer encoding is used to send request or response bodies in variable-size segments. Each chunk is terminated by a CRLF sequence (\r\n). However, until version 0.14.0, h11 incorrectly accepted any two bytes instead of properly validating that the trailing bytes were exactly \r\n.
This leniency by itself isnβt immediately dangerous. But when h11 is used behind a reverse proxy that misinterprets chunked encoding, inconsistencies arise. For example, the reverse proxy might read more bytes than it should by using a naive βread until end of lineβ function, resulting in h11 and the proxy interpreting the same bytestream differently.
βAny time two HTTP processors both accept the same string of bytes but interpret them differently, you have the conditions for a βrequest smugglingβ attack,β the h11 advisory notes.
A demonstrated example in the advisory shows how h11 could interpret a malformed chunked request as two separate HTTP requests, while a buggy proxy sees them as one combined request. If the second request contains sensitive headers (like Cookie: SESSION_KEY=abcdefβ¦), the server may treat this as part of the first request, effectively leaking credentials or bypassing access controls.
This is particularly dangerous in environments where proxies are used to restrict access to protected endpoints.
One of the more severe illustrated attacks involves sending two HTTP requests from different users over the same connection. A vulnerable proxy could forward both to the backend server, which in turn interprets the second userβs credentials as part of the first requestβs body.
βThe server will then see the two concatenated requests, and interpret them as one request to /one whose body includes /twoβs session key, potentially allowing one user to steal anotherβs credentials,β the advisory warns.
The issue has been fixed in h11 version 0.15.0. Developers using h11 are urged to upgrade immediately.