Cybersecurity-onderzoekers hebben een Denial-of-Service-exploit op afstand ontdekt die grote webservers treft, waaronder NGINX, Apache HTTPD, Microsoft IIS, Envoy en Cloudflare Pingora.
De kwetsbaarheid heeft een codenaam gekregen HTTP/2-bom door Californië.
“Het kwetsbare gedrag bestaat in de standaard HTTP/2-configuratie van elke server”, aldus het bedrijf, eraan toevoegend dat het door OpenAI Codex is ontdekt door twee bekende technieken aan elkaar te koppelen: een compressiebom en een Slowloris-achtige hold.
“De bom richt zich op HPACK, het headercompressieschema van HTTP/2: één byte op de draad wordt één volledige headertoewijzing op de server, duizenden keren herhaald per verzoek”, voegde Calif eraan toe. “De hold is een zero-byte flow-control-venster dat ervoor zorgt dat de server er nooit iets van kan vrijgeven.”
HPACK is een speciaal algoritme voor headercompressie voor HTTP/2 dat wordt gebruikt voor het comprimeren van metagegevens van verzoeken en antwoorden met behulp van Huffman-codering, wat resulteert in een gemiddelde verkleining van de headergrootte van 30%. Het is ook ontworpen om bestand te zijn tegen aanvallen zoals CRIME (afkorting van “Compression Ratio Info-leak Made Easy”) die authenticatiecookies uit gecomprimeerde headers kunnen lekken.
Slowloris daarentegen is een soort denial-of-service (DoS)-aanval waarmee een bedreigingsacteur een gerichte server kan overweldigen door veel gelijktijdige HTTP-verbindingen tussen de aanvaller en het doelwit te openen en te onderhouden. Het is een aanval op de applicatielaag.
HTTP/2 Bomb is geïnspireerd op verschillende bekende benaderingen zoals HPACK Bomb (ook bekend als CVE-2016-6581), die voor het eerst werd onthuld in 2016, evenals CVE-2025-53020, een kwetsbaarheid voor geheugenuitputting in de HTTP/2-implementatie van Apache httpd, en twee DoS-fouten in Apache HTTP Server die worden geactiveerd via vervaardigde CONTINUATION-frames (CVE-2016-8740) en uithongering van werkthreads (CVE-2016-1546) in een HTTP/2-verbinding.
“Wat hier nieuw is, is waar de versterking vandaan komt”, zei Calif. “De klassieke bom stopt een grote waarde in de tabel en verwijst er herhaaldelijk naar, zodat servers leerden de totale gedecodeerde headergrootte te beperken. Onze variant gaat de andere kant op: de header is bijna leeg en de versterking komt van de boekhouding per boeking die de server eromheen toewijst. De limiet voor de gedecodeerde grootte wordt nooit geactiveerd omdat er bijna niets te decoderen valt.”
In een hypothetisch aanvalsscenario heeft een thuiscomputer met een verbinding van 100 Mbps het potentieel om een kwetsbare server binnen enkele seconden ontoegankelijk te maken. Bovendien kan één enkele client in ongeveer 20 seconden 32 GB servergeheugen verbruiken en vasthouden tegen Apache HTTPD en Envoy.
Om de kwetsbaarheid tegen te gaan, wordt geadviseerd om de volgende maatregelen toe te passen:
- NGINX – Upgrade naar 1.29.8+, die de max_headers-richtlijn toevoegt met een standaardwaarde van 1000. Als upgraden geen optie is, wordt aanbevolen om HTTP/2 uit te schakelen met http2 uit;.
- Apache HTTPD – Opgelost in mod_http2 v2.0.41. Als upgraden geen optie is, wordt aanbevolen om Protocollen http/1.1 in te stellen om HTTP/2 uit te schakelen.
- Microsoft IIS, Envoy en Cloudflare Pingora – Op het moment van schrijven is er geen patch beschikbaar.
“De diepere misser is dat de specificaties het geheugenrisico louter als een versterkingsverhouding beschouwen, en dat de verhouding slechts de helft van de vergelijking is”, zei Calif. “Een 70:1-versterker is onschadelijk als het geheugen wordt vrijgegeven wanneer het verzoek is voltooid. Het wordt een aanval omdat HTTP/2 de client de verbinding vrijwel gratis laat openhouden, waarbij elke toegewezen byte zo lang wordt vastgezet als hij wil.”