Advisory · CVE-2026-100664
Netty HTTP/3 gateway trusts the Host header over the absolute request-target
Netty's HTTP/3 codec builds the :authority pseudo-header from the HTTP/1 Host header before considering the authority of an absolute-form request-target, contrary to the HTTP/1.1 rule that the request-target authority must win. A remote client can send 'GET https://trusted.example/admin' with 'Host: attacker.example' so authorization and routing decisions split from what the upstream HTTP/3 peer receives. Fixed in 4.2.18.Final.
- Vendor
- Netty
- Product
- Netty
- Identifier / CWE
- CVE-2026-100664
CWE-20 - Action timing
- Immediate
Explain it like I’m five
Two bouncers are supposed to check the same invitation, but one reads the name on the envelope and the other reads the name inside. A forger who writes different names on each gets one bouncer's approval and the other's confusion.
- 01Mismatched request
The client sends an absolute-form request-target naming one authority with a Host header naming another.
- 02Wrong precedence
Netty builds :authority from the Host header first, instead of letting the request-target authority win per HTTP/1.1.
- 03Decision split
Authorization and routing decisions see a different authority than the upstream HTTP/3 peer receives.
- 04Smuggling
The attacker routes or authorizes traffic the proxy would otherwise reject.
What happened
Netty’s HTTP/3 codec builds the :authority pseudo-header from the HTTP/1 Host header before considering the authority of an absolute-form request-target, contrary to the HTTP/1.1 rule that the request-target authority must win (CVE-2026-100664, CVSS 8.7). A remote client can send an absolute-form request such as “GET https://trusted.example/admin” with “Host: attacker.example”, so authorization and routing decisions in one layer split from what the upstream HTTP/3 peer receives. The issue is fixed in Netty 4.2.18.Final.
What to do
- Upgrade Netty to 4.2.18.Final on HTTP/1-to-HTTP/3 gateways and proxies.
- Audit gateway logs for requests where the absolute request-target authority differed from the Host header.
- Reject requests with conflicting authority sources at the edge rather than relying on downstream layers to reconcile them.
Management note
Authority confusion is the quiet cousin of request smuggling: nothing crashes, so it rarely shows up in monitoring. Disclosed alongside the CONNECT mistranslation the same day, so patch once and check both.