HomeCybersecurityNieuwe QPACK-kwetsbaarheden kunnen HTTP/3-servers doen crashen en tot 4.000 keer meer geheugenverbruik...

Nieuwe QPACK-kwetsbaarheden kunnen HTTP/3-servers doen crashen en tot 4.000 keer meer geheugenverbruik veroorzaken

Kwetsbaarheid / Webbeveiliging

Een externe aanvaller die niet is ingelogd kan veel HTTP/3-webservers laten crashen met een enkele verbinding, maakte beveiligingsbedrijf FoxIO bekend en publiceerde daarbij werkende proof-of-conceptcode.

Door een kleine partij gecomprimeerde HTTP-headers te sturen die in het geheugen uitzet naar een veel grotere set, kan de aanvaller de server dwingen duizenden keren meer geheugen te gebruiken dan hij ontving — genoeg om een server met standaardinstellingen zonder beschikbaar geheugen te laten raken.

De fouten leiden alleen tot denial-of-service-aanvallen; er is geen bewijs voor datadiefstal of code-executie en er zijn geen publieke meldingen van misbruik in het wild. Oplossingen zijn uitgebracht voor quic-go, Cloudflare quiche, lsquic en Wireshark, maar Bun, de h3 Rust-library en aioquic waren bij openbaarmaking nog ongepatcht.

FoxIO vond dezelfde klasse kwetsbaarheid in zeven van de tien HTTP/3-stacks die het testte. De gemeenschappelijke oorzaak ligt in QPACK, het mechanisme dat HTTP/3 gebruikt om request-headers te comprimeren zodat herhaalde velden als een korte code worden gestuurd in plaats van de volledige tekst.

Een server zou de grootte van de headers moeten begrenzen nadat deze zijn uitgepakt. De getroffen stacks beperken de gecomprimeerde batch die op het netwerk aankomt, maar niet het uitgepakte resultaat, of ze passen de limiet te laat toe, zodat één verzoek kan uitgroeien tot honderden duizenden headervermeldingen die de server in het geheugen houdt.

Het bereik is groot omdat deze stacks onder gangbare software zitten. quic-go is de Go-library achter Caddy, Traefik en cloudflared; lsquic is LiteSpeed’s library, gebruikt in LiteSpeed Web Server en OpenLiteSpeed; en de HTTP/3-server van Bun draait op lsquic.

De aanvaller heeft geen account of speciale toegang nodig, en omdat HTTP/3 over UDP loopt, bereikt het verzoek de server voordat veel van de gebruikelijke filtering effect heeft.

Welke stacks zijn gepatcht en welke nog kwetsbaar zijn, per 22 oktober 2026:

Stack Status Gepatchte versie Identificatie
quic-go Gepatcht 0.57.0 CVE-2025-64702
Cloudflare quiche Gepatcht 0.29.3 CVE-2026-12523
lsquic Gepatcht 4.9.0 geen CVE
Wireshark Gepatcht 4.6.2 / 4.4.12 CVE-2025-13945
Bun Ongepatcht — geen CVE
h3 (hyperium) Ongepatcht — geen CVE
aioquic / mitmproxy Ongepatcht — geen CVE

FoxIO noemt IIS, Envoy, ngtcp2/nghttp3 en Google’s quiche als niet getroffen, omdat deze tijdens het decoderen de uitgepakte headers beperken in plaats van pas erna.

De amplificatie varieert per stack, volgens FoxIO’s eigen tests tegen de standaardinstellingen. Bij quic-go pakte een 1 MB gecomprimeerde batch uit naar ongeveer 160.000 headervelden en bleef ongeveer 15 MB in het verzoek vastgehouden, ongeveer 17 keer het aantal verzonden bytes; quic-go’s eigen advisory stelt dat de mogelijke uitzetting rond de 50 keer kan liggen.

Een tweede methode drijft de verhouding veel hoger: de aanvaller slaat één ongeveer 4 KB grote headervermelding op en verwijst er vervolgens duizenden keren naar met één-byte-referenties, waarbij de server de volledige vermelding bij elke referentie nieuw opbouwt. FoxIO mat ongeveer 4.000 keer op Bun en tussen de 600 en 1.800 keer op lsquic.

Bun heeft het ergste geval. De HTTP/3-server van Bun, die in Bun’s documentatie als experimenteel wordt aangeduid, gebruikt lsquic maar vervangt het onderdeel dat het headergeheugen begrenst door eigen code, die elke header afzonderlijk controleert maar nooit het lopende totaal. FoxIO ontdekte dat zodra de uitgepakte headers boven de 2 GB uitkomen, een grootte-teller in die code overloopt naar nul en de server in een oneindige lus terechtkomt.

Een enkele stream die ongeveer 516 KB op het netwerk draagt, zo rapporteerde FoxIO, laat de server vastlopen op 100 procent CPU zonder herstel en blokkeert nieuwe verzoeken. Het ontbreken van een lopend totaal maakt het mogelijk dat de overflow wordt bereikt; lsquic’s eigen limiet van 64 KB voorkomt dit.

Wireshark is een ander geval dan de serverfouten. De fout laat de HTTP/3-dissector crashen — het deel dat HTTP/3 uit een capture leest — wanneer Wireshark verkeer ontsleutelt met een key-logbestand of een capturebestand opent dat ontsleutelingsgegevens bevat. Het betreft dus geen server die een aanvaller over het netwerk bereikt. Wireshark zei dat het “onbekend is met enige exploits voor dit probleem.”

Operators dienen te upgraden naar de hierboven genoemde gepatchte releases. Voor de stacks zonder patch geeft FoxIO tijdelijke maatregelen: bij Bun geen HTTP/3-server blootstellen; bij mitmproxy HTTP/3 uitschakelen door –set http3=false mee te geven; en voor de h3 Rust-library een verstandige limiet instellen met max_field_section_size.

De lsquic-fix, uitgebracht op 16 juli 2026, begrenst hoeveel uitgepakte headersets een server per stream vasthoudt, standaard op één. FoxIO zei dat het werk begon na Gal Bar Nahum’s onderzoek naar “MadeYouReset”, een denial-of-service-techniek tegen HTTP/2, waarin werd onderzocht of de headercompressie van HTTP/3 een soortgelijke zwakte heeft.

Nural Sevimov
Nural Sevimovhttps://itvandaag.be
Nural Sevimov is oprichter en eigenaar van Actiefhost. Sinds 2011 werkt hij dagelijks met Linux-servers, hostinginfrastructuur en softwareontwikkeling. Met jarenlange praktijkervaring combineert hij technische kennis met een passie voor betrouwbare, efficiënte en moderne hostingoplossingen.
GERELATEERDE ARTIKELEN

Meest populair

Recente reacties