Inconsistent interpretation of HTTP requests (HTTP request/response smuggling) in the bundled...
Affected packages
| Ecosystem | Package | Affected | Fixed |
|---|---|---|---|
| Apache Software Foundation | Apache bRPC |
< 1.18.0 |
1.18.0 |
Original description The description as published by the source.
Inconsistent interpretation of HTTP requests (HTTP request/response smuggling) in the bundled HTTP/1.1 parser of Apache bRPC (version < 1.18.0) on all platforms allows remote attackers to smuggle requests and inject headers when bRPC is deployed behind a proxy or load balancer that parses the same bytes differently.
Root Cause:
The bRPC fork of http-parser accepts and acts on several HTTP/1.1 header forms that a conforming front-end either rejects or interprets differently, so the framing or the header set of a message can differ between the front-end and bRPC:
- A space before the colon of framing headers (e.g. Content-Length : 5) is accepted; the value still drives bRPC's framing while the reported field name contains the trailing space.
- Interior spaces inside a Content-Length value (e.g. Content-Length: 1 3) are skipped, so bRPC reads 13 where a front-end reads 1 or rejects the message (same class as CVE-2022-32213 in Node.js).
- Obsolete line folding (obs-fold, RFC 7230 3.2.4) of Content-Length and Transfer-Encoding values is accepted, so a folded framing value drives bRPC's framing while a front-end that does not unfold sees a different message.
- Chunked trailer fields are fed to the same header callbacks as the header section and are merged into the header map like real headers. A front-end only inspects the header section, so any chunked request can smuggle fields such as Authorization or X-Forwarded-For past it.
- Transfer-Encoding lists with optional whitesp…
Source: NIST National Vulnerability Database NVD GitHub Advisory
References
- web lists.apache.org
- web nvd.nist.gov
- web github.com