Skip to content

HTTP/2 :authority pseudo-header trust check - #30

Merged
emmanuelgautier merged 1 commit into
mainfrom
feat/http2-protocol
Nov 10, 2026
Merged

emmanuelgautier merged 1 commit into
mainfrom
feat/http2-protocol

Conversation

@emmanuelgautier

Copy link
Copy Markdown
Member

Closes #13.

Adds protocol.h2_authority_trust, an aggressive-suite check (runs only with --aggressive) covering the HTTP/2 pseudo-header → Host conversion concern: whether the proxy trusts a client-supplied :authority it never validated. Over a forced HTTP/2 connection (ALPN h2, via the stable x/net/http2 client) it sends a distinctive non-routable marker as :authority and flags a finding only when the proxy reflects it while a clean control does not — the HTTP/2 analogue of Host-header injection. Skips against HTTP/1.1-only targets.

Promotes golang.org/x/net to a direct dependency (already present transitively).

Checklist coverage

  • :authority pseudo-header to Host/URI conversion / trust inconsistencies
  • Stream multiplexing / rapid-reset abuse (CVE-2023-44487) — intentionally deferred (exercising it is the DoS attack)
  • QUIC / HTTP/3 malformed frame handling — deferred (no stable Go HTTP/3 stack; fuzzing is intrusive)
  • Protocol downgrade as a smuggling precondition — deferred; needs raw HTTP/2 framing, tracked with the smuggling work (Request Smuggling / Desync #10)

Deferred items are documented in docs/checks/protocol.mdx. Includes registration and a category test (HTTP/2 reflecting vs. non-reflecting vs. HTTP/1.1-only stand-ins).

@emmanuelgautier
emmanuelgautier force-pushed the feat/http2-protocol branch 3 times, most recently from f3e8389 to f762351 Compare November 10, 2026 00:12
@emmanuelgautier
emmanuelgautier merged commit 85943d7 into main Nov 10, 2026
4 checks passed
@emmanuelgautier
emmanuelgautier deleted the feat/http2-protocol branch November 10, 2026 00:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

HTTP/2 & HTTP/3 Protocol-Specific

1 participant