Es wurden Informationen ĂŒber die Angriffs-methode "Continuation flood" veröffentlicht, die verschiedene Implementierungen des HTTP/2-Protokolls betrifft, darunter Apache httpd, Apache Traffic Server, Node.js, oghttp, Go net/http2, Envoy, oghttp und nghttp2. Die Schwachstelle kann genutzt werden, um Angriffe auf Server zu starten, die HTTP/2.0 unterstĂŒtzen. AbhĂ€ngig von der Implementierung kann dies zu einem Speicherausfall (Stopp der Anfragenbearbeitung oder plötzlichem Prozessabbruch) oder zu einer hohen CPU-Auslastung (Verlangsamung der Anfragenbearbeitung) fĂŒhren. Laut dem Forscher, der die Schwachstelle entdeckt hat, ist das Problem gefĂ€hrlicher als die im vergangenen Jahr identifizierte Schwachstelle "Rapid Reset", die bei den damals gröĂten DDoS-Angriffen verwendet wurde.
Das hohe Gefahrenniveau erklĂ€rt sich aus der Tatsache, dass zur Störung der Funktionsweise Server, zum Abbruch oder zur erheblichen Verringerung der Leistung bereits der Versand eines Stroms speziell gestalteter Anfragen von einem normalen Computer aus genĂŒgt. In bestimmten FĂ€llen reicht sogar eine einzige TCP-Verbindung aus, um einen Angriff durchzufĂŒhren. Der damit verbundene Datenverkehr wird in den Protokollen nicht von normalen Benutzeranfragen unterschieden.
Die Schwachstelle wird durch Besonderheiten der Verarbeitung von HEADERS- und CONTINUATION-Rahmen in HTTP/2-Anfragen verursacht. HEADERS-Rahmen werden in HTTP/2 zur Ăbertragung von HTTP-Headern verwendet, wĂ€hrend CONTINUATION-Rahmen dazu dienen, die Ăbertragung von HTTP-Headern in mehrere Phasen zu unterteilen (zum Beispiel, wenn die Header nicht in einen Rahmen passen oder wenn zunĂ€chst Header gesendet werden sollen, die in dieser Phase ausgefĂŒllt werden können, gefolgt von Headern, deren Werte derzeit nicht bestimmt werden können). Bei der Ăbertragung von Headern in mehreren Phasen wird zunĂ€chst ein HEADERS-Rahmen ohne das END_HEADERS-Flag gesendet, gefolgt von mehreren CONTINUATION-Rahmen mit zusĂ€tzlichen Headern, und die Liste wird mit einem CONTINUATION-Rahmen mit dem END_HEADERS-Flag abgeschlossen.
Die Angriffsmethode besteht darin, einen kontinuierlichen Strom von CONTINUATION-Rahmen ohne Setzen des END_HEADERS-Flags zu senden. Eine derartige AktivitĂ€t fĂŒhrt zu einer Ăbertragung von Server Eine groĂe Anzahl von Headern, die der Server im Arbeitsspeicher speichert, bis der verfĂŒgbare Speicher fĂŒr den Prozess erschöpft ist. Um eine hohe CPU-Belastung zu erzeugen, kann der Angreifer zusĂ€tzlich zur Erschöpfung des Speichers die Kompression des Inhalts der CONTINUATION-Frames unter Verwendung des HPACK-Formats nutzen, dessen Analyse Rechenleistung erfordert. In Implementierungen des Protokolls HTTP/1.1 wurde als Schutz vor ServerĂŒberflutung mit Headern eine GröĂenbeschrĂ€nkung fĂŒr Header und ein Timeout fĂŒr die Verbindungssendungszeit verwendet. Bei HTTP/2 haben viele Implementierungen aufgrund der KomplexitĂ€t des Protokolls solche Schutzmethoden gegen unendliche HeaderĂŒbertragungen nicht vorgesehen.
Die Schwachstelle stellt die gröĂte Gefahr fĂŒr Nutzer von Node.js (CVE-2024-27983) dar, da diese Implementierung einen Absturz durch das Senden von nur wenigen Frames an den Server ermöglicht. Aufgrund eines Rennbedingungen in Node.js genĂŒgt es, die Verbindung wĂ€hrend der Ăbertragung eines unvollendeten Headerstroms zu beenden, um einen Absturz durch das Auslösen der Assert-PrĂŒfung herbeizufĂŒhren (Absturz, wenn zum Zeitpunkt der SchlieĂung der Verbindungen noch kein CONTINUATION-Frame mit dem End-Header-Flag eingegangen ist). Die Schwachstelle wurde in Node.js 18.20.1, 21.7.2 und 20.12.1 sowie in aktuellen Versionen der Bibliotheken llhttp und undici behoben. In den neuen Versionen von Node.js wurde auch eine weniger kritische Schwachstelle (CVE-2024-27982) der Kategorie âRequest Smugglingâ behoben, die es durch Manipulation des âContent Lengthâ-Wertes ermöglichen konnte, sich in die Inhalte der Anfragen anderer Benutzer einzuschleusen, die im selben Thread zwischen Frontend und Backend verarbeitet werden.
Schwachstellen im Zusammenhang mit der Verarbeitung von CONTINUATION in anderen Implementierungen von HTTP/2.0:
- oghttp (CVE-2024-27919) â unbegrenzter Speicherverbrauch.
- Tempesta FW (CVE-2024-2758) â Umgehung von Restriktionen.
- PHP-Bibliothek amphp/http, amphp/http-client und amphp/http-server (CVE-2024-2653) â unbegrenzter Speicherverbrauch bis zur vollstĂ€ndigen Erschöpfung des verfĂŒgbaren Speichers.
- Go-Paket net/http (CVE-2023-45288) â Erzeugung einer hohen CPU-Belastung.
- Bibliothek nghttp2 (CVE-2024-28182) â Auslösen eines Denial-of-Service.
- Apache Httpd (CVE-2024-27316) â ĂŒbermĂ€Ăiger Speicherverbrauch und Erzeugung von CPU-Belastung.
- Apache Traffic Server (CVE-2024-31309) â ĂŒbermĂ€Ăiger Ressourcenverbrauch.
- Envoy (CVE-2024-30255) â Erzeugung einer hohen CPU-Belastung (ein Stream von 300 Mbit/s ist erforderlich, um einen vollstĂ€ndigen Kern zu belasten).
Quelle: opennet.ru
