Repository navigation
chore: disable HTTP/3 in Caddy (QPACK amplification) - #435
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Turns off HTTP/3 for the alerts API Caddy and documents the minimum Caddy version, in response to the QPACK amplification attack against HTTP/3 servers (FoxIO write-up).
Caddy uses quic-go and enables HTTP/3 (UDP 443) by default. quic-go's QPACK decoder can be abused for memory/CPU amplification: CVE-2025-64702 / GHSA-g754-hx8w-x2g6 (headers, fixed in 0.57.0) and the trailer variant GHSA-vvgj-x9jq-8cj9 (fixed in 0.59.1). Caddy 2.11.3+ ships quic-go 0.59.1 or newer; 2.10.x and 2.11.1/2.11.2 are still affected.
Changes
deploy/Caddyfile: addsservers { protocols h1 h2 }to the existing global options block (keptemailand the rate-limit comment), so Caddy only serves HTTP/1.1 and HTTP/2 over TCP. This GET-only internal API gets nothing from QUIC. The header now says Caddy >= 2.11.3 is required.deploy/alerts-api.md: notes the Caddy 2.11.3 minimum and acaddy versioncheck in the install steps, and says UDP 443 should stay closed in the firewall.Validation
caddy validatewith the official Caddy v2.11.7 binary (checksum verified) and placeholder env vars: Valid configuration.caddy adaptshows"protocols": ["h1","h2"]on the server. (caddy fmtwarns about a blank line after the header comment, which was already onmain.)Server-side steps (not covered by this PR)
caddy version. If it's below v2.11.3, upgrade from the official Caddy apt repo (latest is v2.11.7). Distro packages lag behind.sudo systemctl reload caddy. A restart also works.