
Outil pour tester les atténuations et l'exposition au DDoS Rapid Reset (CVE-2023-44487)
Rapid Reset Client est un outil pour tester les mesures de protection et l'exposition à CVE-2023-44487 (vecteur d'attaque DDoS Rapid Reset). Il implémente un client HTTP/2 minimaliste qui ouvre un seul socket TCP, négocie TLS, ignore le certificat, et échange des trames SETTINGS. Le client envoie ensuite des trames HEADERS rapides suivies de trames RST_STREAM. Il surveille (mais ne traite pas) les trames du serveur après la configuration initiale, autrement que pour les envoyer sur stdout. Cette fonctionnalité peut être facilement retirée du code source si elle est trop gênante.
Testé sur go1.21.3 sur 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 : Nombre de requêtes à envoyer (par défaut 5)
url : URL du serveur (par défaut https://localhost:443)
wait : Temps d'attente en millisecondes entre le démarrage des workers (par défaut 0)
delay : Délai en millisecondes entre l'envoi des trames HEADERS et RST_STREAM (par défaut 0)
concurrency : Nombre maximum de workers simultanés (par défaut 0)
Envoie 10 requêtes HTTP/2 (trames HEADERS et RST_STREAM) sur une seule connexion à https://example.com avec 5 workers, un délai de 10 ms entre l'envoi des trames HEADERS et RST_STREAM, et un temps d'attente de 100 ms entre chaque invocation.
./rapidresetclient -requests=10 -url https://example.com -wait=100 -delay=10 -concurrency=5
http2 - Package exposant les primitives HTTP/2 de bas niveau
http2/hpack - Package de compression d'en-têtes HTTP/2
Voir aussi la liste des contributeurs
Ce projet est sous licence Apache - voir le fichier LICENSE pour les détails
Ce travail est basé sur l'analyse initiale de CVE-2023-44487 par Juho Snellman et Daniele Iamartino chez Google.