
Tool zum Testen von Gegenmaßnahmen und der Gefährdung durch Rapid-Reset-DDoS (CVE-2023-44487)
Rapid Reset Client ist ein Werkzeug zum Testen von Gegenmaßnahmen und der Exposition gegenüber CVE-2023-44487 (Rapid-Reset-DDoS-Angriffsvektor). Es implementiert einen minimalen HTTP/2-Client, der einen einzelnen TCP-Socket öffnet, TLS aushandelt, das Zertifikat ignoriert und SETTINGS-Frames austauscht. Der Client sendet dann schnelle HEADERS-Frames gefolgt von RST_STREAM-Frames. Er überwacht (verarbeitet aber nicht) Server-Frames nach der ersten Einrichtung, außer dass er sie auf stdout ausgibt. Diese Funktionalität lässt sich leicht aus dem Quellcode entfernen, falls sie zu lästig ist.
Getestet mit go1.21.3 auf arm64.
git clone https://github.com/secengjeff/rapidresetclient.git
cd rapidresetclient
go get golang.org/x/net/http2
go get golang.org/x/net/http2/hpack
go build -o rapidresetclient
requests: Anzahl der zu sendenden Anfragen (Standard ist 5)
url: Server-URL (Standard ist https://localhost:443)
wait: Wartezeit in Millisekunden zwischen dem Start von Workern (Standard ist 0)
delay: Verzögerung in Millisekunden zwischen dem Senden von HEADERS- und RST_STREAM-Frames (Standard ist 0)
concurrency: Maximale Anzahl gleichzeitiger Worker (Standard ist 0)
Senden Sie 10 HTTP/2-Anfragen (HEADERS- und RST_STREAM-Frames) über eine einzige Verbindung an https://example.com mit 5 Workern, einer Verzögerung von 10 ms zwischen dem Senden von HEADERS- und RST_STREAM-Frames und einer Wartezeit von 100 ms zwischen jedem Aufruf.
./rapidresetclient -requests=10 -url https://example.com -wait=100 -delay=10 -concurrency=5
http2 - Paket, das Low-Level-HTTP/2-Primitive bereitstellt
http2/hpack - HTTP/2-Headerkomprimierungspaket
Siehe auch die Liste der Mitwirkenden
Dieses Projekt ist unter der Apache-Lizenz lizenziert - siehe die Datei LICENSE für Details
Diese Arbeit basiert auf der ersten Analyse von CVE-2023-44487 von Juho Snellman und Daniele Iamartino bei Google.