Jetty currently accepts HTTP/2 and HTTP/3 requests where the regular Host header and the pseudo-header :authority do not match. As a result, the same request can carry two different host identities through Jetty:
HttpURI / Request.getServerName(request) uses :authorityHostThis creates a host/authority confusion condition that can break security assumptions in higher layers.
Jetty already performs an explicit authority/Host consistency check on the HTTP/1.1 path, but equivalent validation is missing on the HTTP/2 and HTTP/3 paths.
This issue is not inherently remote code execution, but it can become security-relevant in deployments that rely on the request host for security-sensitive decisions, including:
Potential consequences include:
:authority is parsed separately into authority/URI stateHost is preserved as a normal request headerComplianceUtils.verify(httpCompliance, requestMetaData, listener)MISMATCHED_AUTHORITYHost matchHTTP/2 metadata builder:
-...
12.0.3512.1.9Exploitability
AV:NAC:LPR:NUI:NScope
S:UImpact
C:NI:LA:N5.3/CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N