Eine neue Untersuchung des Sicherheitsexperten Bartek Nowotarski hat eine potenzielle Schwachstelle im HTTP/2-Protokoll aufgedeckt. Bekannt als die Fortsetzungsflut, Dieser Exploit ermöglicht Angreifern die Durchführung Denial-of-Service- (DoS) Anschläge durch Überfluten eines Servers mit CONTINUATION-Frames.
Erläuterung der Fortsetzung der Hochwassergefährdung
Das Problem liegt darin, wie HTTP/2-Implementierungen CONTINUATION-Frames innerhalb eines einzelnen Streams verarbeiten.. Viele Implementierungen begrenzen oder bereinigen die Anzahl der gesendeten CONTINUATION-Frames nicht richtig, Angreifer können einen Server mit einem Datenstrom von Frames überlasten, der zu Speicherüberlastung oder Abstürzen führen kann..
HTTP/2, wie sein Vorgänger HTTP/1, verwendet Header-Felder innerhalb von Anfragen und Antworten. Diese Header werden in Headerblöcke serialisiert, die dann als Blockfragmente innerhalb von CONTINUATION-Frames übertragen werden.
Wie kann die Sicherheitslücke ausgenutzt werden?
Angreifer können diese Schwachstelle ausnutzen, indem sie einen kontinuierlichen Datenstrom von CONTINUATION-Frames senden, ohne dass das Flag END_HEADERS gesetzt ist., Dies führt dazu, dass der Server eine übermäßige Menge an Header-Daten analysiert und im Speicher speichert.
Diese Schwachstelle stellt eine ernste Bedrohung dar, da eine einzelne Maschine oder TCP-Verbindung die Serververfügbarkeit beeinträchtigen kann, was zu Abstürzen oder Leistungseinbußen führt. Der Angriff ist möglicherweise nicht in HTTP-Zugriffsprotokollen sichtbar, macht die Erkennung schwierig.
Betroffene Implementierungen
Mehrere HTTP/2-Implementierungen sind betroffen, einschließlich Projekte wie Apache HTTP Server, Node.js, und Golang. Benutzern wird empfohlen, betroffene Software zu aktualisieren, um Risiken zu minimieren. Wenn kein Fix verfügbar ist, Das vorübergehende Deaktivieren von HTTP/2 kann Schutz vor diesem Exploit bieten.
Hier sind mehrere CVE-Listen, die die Sicherheitslücke in verschiedenen Implementierungen hervorheben, gemäß dem CERT Coordination Center beratend.
CVE-2024-27983
Ein Angreifer kann den Node.js HTTP/2-Server unbrauchbar machen, indem er eine begrenzte Anzahl von HTTP/2-Frame-Paketen sendet, die einige HTTP/2-Frames enthalten. Der Fehler kann Daten in nghttp2 Speicher nach einem Reset. Dies kann passieren, wenn Header mit HTTP/2 CONTINUATION-Frames an den Server gesendet werden und die TCP-Verbindung vom Client abrupt geschlossen wird., Auslösen des Http2Session-Destruktors, während Header-Frames noch verarbeitet werden, verursacht einen Race Condition.
CVE-2024-27919
Gesandter oghttp Codec kann eine Anforderung nicht zurücksetzen, wenn die Header-Map-Grenzen überschritten werden. Dies ermöglicht einem Angreifer, eine Folge von CONTINUATION-Frames zu senden, ohne dass das END_HEADERS-Bit gesetzt ist., was zu unbegrenztem Speicherverbrauch führt.
CVE-2024-2758
Tempesta FW-Ratenbegrenzungen sind standardmäßig nicht aktiviert. Sie sind entweder zu groß eingestellt, um Angriffe mit leeren CONTINUATION-Frames abzufangen, oder zu klein, um normale HTTP-Anfragen angemessen zu verarbeiten..
CVE-2024-2653
amphp/http sammelt HTTP/2 CONTINUATION-Frames in einem unbegrenzten Puffer und überprüft die Header-Größenbeschränkung erst, wenn das Flag END_HEADERS empfangen wird, was zu einem Out-of-Memory führt (OOM) Absturz. amphp/http-client und amphp/http-server sind indirekt betroffen, wenn sie mit einer ungepatchten Version von amphp/http verwendet werden. Frühere Versionen von amphp/http-client mit HTTP/2-Unterstützung (v4.0.0-rc10 auf 4.0.0) sind auch direkt betroffen.
CVE-2023-45288
Die Go-Pakete Netz/http und Netz/http2 Begrenzen Sie nicht die Anzahl der für eine HTTP/2-Anforderung gelesenen CONTINUATION-Frames, Dies ermöglicht es einem Angreifer, einen übermäßig großen Satz von Headern für eine einzelne Anfrage bereitzustellen., was zu übermäßigem CPU-Verbrauch führt.
CVE-2024-28182
Eine Implementierung mit dem nghttp2 Die Bibliothek empfängt weiterhin CONTINUATION-Frames und führt keinen Rückruf an die Anwendung durch, um die Einsicht in diese Informationen zu ermöglichen, bevor der Stream zurückgesetzt wird., was zu einem Denial of Service (DoS) Verwundbarkeit.
CVE-2024-27316
HTTP/2 CONTINUATION-Frames ohne gesetztes END_HEADERS-Flag können von einem Angreifer kontinuierlich an eine Apache-Httpd-Implementierung gesendet werden., die die Anfrage nicht vorzeitig beendet.
CVE-2024-31309
Ein HTTP/2 CONTINUATION-DoS-Angriff kann dazu führen, dass der Apache Traffic Server mehr Ressourcen auf dem Server verbraucht. Versionen von 8.0.0 durch 8.1.9 und von 9.0.0 durch 9.2.3 sind betroffen.
CVE-2024-30255
Der HTTP/2-Protokollstapel in Envoy-Versionen 1.29.2 oder früher ist anfällig für CPU-Erschöpfung aufgrund einer Flut von CONTINUATION-Frames. Der HTTP/2-Codec von Envoy ermöglicht dem Client das Senden einer unbegrenzten Anzahl von CONTINUATION-Frames, selbst nach Überschreiten der Header-Map-Grenzen von Envoy. Dies ermöglicht einem Angreifer, eine Folge von CONTINUATION-Frames zu senden, ohne dass das END_HEADERS-Bit gesetzt ist, Die CPU-Auslastung beträgt ca. 1 Kern pro 300 Mbit/s Datenverkehr.