En ny undersøgelse udført af sikkerhedsekspert Bartek Nowotarski har afdækket en potentiel sårbarhed i HTTP/2-protokollen. Kendt som FORTSATSfloden, denne udnyttelse giver angribere mulighed for at udføre Servicenægtelse (DoS) angreb ved at oversvømme en server med CONTINUATION frames.
FORTSÆTTELSE Flood-sårbarheden forklaret
Problemet ligger i, hvordan HTTP/2-implementeringer håndterer CONTINUATION frames inden for en enkelt strøm. Mange implementeringer kan ikke korrekt begrænse eller rense antallet af afsendte CONTINUATION frames, gør det muligt for angribere at overvælde en server med en strøm af frames, der kan forårsage udmattelse af hukommelsen eller nedbrud.
HTTP/2, ligesom sin forgænger HTTP/1, bruger overskriftsfelter inden for anmodninger og svar. Disse overskrifter serialiseres til overskriftsblokke, som derefter transmitteres som blokfragmenter inden for CONTINUATION-rammer.
Hvordan kan sårbarheden udnyttes
Angribere kan udnytte denne sårbarhed ved at sende en kontinuerlig strøm af CONTINUATION frames uden END_HEADERS-flaget sat, får serveren til at parse og gemme en for stor mængde headerdata i hukommelsen.
Denne sårbarhed udgør en alvorlig trussel, da en enkelt maskine eller TCP-forbindelse kan forstyrre serverens tilgængelighed, fører til nedbrud eller ydeevneforringelse. Angrebet er muligvis ikke synligt i HTTP-adgangslogfiler, gør detektion udfordrende.
Berørte implementeringer
Flere HTTP/2-implementeringer er berørt, herunder projekter som Apache HTTP Server, node.js, og Golang. Brugere rådes til at opgradere berørt software for at mindske risici. Hvis en rettelse ikke er tilgængelig, midlertidigt deaktivering af HTTP/2 kan give beskyttelse mod denne udnyttelse.
Her er flere CVE-lister, der fremhæver sårbarheden i forskellige implementeringer, i henhold til CERT-koordinationscentret rådgivende.
CVE-2024-27983
En angriber kan gøre Node.js HTTP/2-serveren utilgængelig ved at sende en begrænset mængde HTTP/2-rammepakker, der indeholder nogle få HTTP/2-rammer. Fejlen kan efterlade data nghttp2 hukommelse efter en nulstilling. Dette kan ske, når headere med HTTP/2 CONTINUATION-rammer sendes til serveren, og TCP-forbindelsen pludselig lukkes af klienten, udløser Http2Session-destruktoren, mens header-rammer stadig behandles, forårsager en racetilstand.
CVE-2024-27919
udsendings oghttp codec kan ikke nulstille en anmodning, når grænserne for overskriftskort overskrides. Dette gør det muligt for en angriber at sende en sekvens af CONTINUATION frames uden END_HEADERS bit sat, fører til ubegrænset hukommelsesforbrug.
CVE-2024-2758
Tempesta FW-hastighedsgrænser er ikke aktiveret som standard. De er enten sat for store til at fange tomme CONTINUATION frames-angreb eller for små til at håndtere normale HTTP-anmodninger korrekt.
CVE-2024-2653
amphp/http samler HTTP/2 CONTINUATION-rammer i en ubegrænset buffer og kontrollerer ikke overskriftstørrelsesgrænsen, før du modtager flaget END_HEADERS, resulterer i en ude af hukommelse (OOM) krak. amphp/http-klient og amphp/http-server påvirkes indirekte, hvis de bruges sammen med en ikke-patchet version af amphp/http. Tidligere versioner af amphp/http-client med HTTP/2-understøttelse (v4.0.0-rc10 til 4.0.0) er også direkte berørt.
CVE-2023-45288
Go-pakkerne net/http og net/http2 Begræns ikke antallet af læste CONTINUATION frames for en HTTP/2-anmodning, giver en angriber mulighed for at levere et overdrevent stort sæt overskrifter til en enkelt anmodning, fører til for stort CPU-forbrug.
CVE-2024-28182
En implementering ved hjælp af nghttp2 biblioteket vil fortsætte med at modtage CONTINUATION frames og vil ikke ringe tilbage til applikationen for at tillade synlighed i disse oplysninger, før strømmen nulstilles, resulterer i en Servicenægtelse (DoS) sårbarhed.
CVE-2024-27316
HTTP/2 CONTINUATION-rammer uden END_HEADERS-flagsættet kan kontinuerligt sendes af en angriber til en Apache Httpd-implementering, som undlader at afslutte anmodningen tidligt.
CVE-2024-31309
Et HTTP/2 CONTINUATION DoS-angreb kan få Apache Traffic Server til at forbruge flere ressourcer på serveren. Versioner fra 8.0.0 igennem 8.1.9 og fra 9.0.0 igennem 9.2.3 påvirkes.
CVE-2024-30255
HTTP/2-protokolstakken i Envoy-versioner 1.29.2 eller tidligere er sårbar over for CPU-udmattelse på grund af en strøm af CONTINUATION-rammer. Envoys HTTP/2 codec giver klienten mulighed for at sende et ubegrænset antal CONTINUATION frames, selv efter at have overskredet Envoy's header map grænser. Dette gør det muligt for en angriber at sende en sekvens af CONTINUATION frames uden END_HEADERS bit sat, hvilket får CPU-udnyttelsen til at forbruge ca 1 kerne pr. 300 Mbit/s trafik.