
Outil Go et modèle Nuclei pour tester les travaux de James Kettle (CVE-2025-32094) « HTTP/1.1 must die: the desync endgame »
Ce dépôt contient des outils de sécurité défensive pour détecter les vulnérabilités de contrebande de requêtes (desync) HTTP/1, basés sur les recherches novatrices de James Kettle de PortSwigger.
Ce travail est directement inspiré par et met en œuvre des techniques issues de :
Les schémas d'attaque, les techniques et les méthodes de détection implémentés dans ces outils sont basés sur le travail pionnier de James Kettle qui a révélé des défauts fondamentaux dans l'implémentation du protocole HTTP/1.1 chez les principaux fournisseurs d'infrastructure web.
La recherche de James Kettle a démontré des vulnérabilités affectant :
Les définitions ambiguës des limites de requêtes dans HTTP/1.1 créent ce que James Kettle a appelé une « ambiguïté extrême » quant à l'endroit où les requêtes commencent et se terminent. Cela entraîne des divergences entre les analyseurs des serveurs frontaux et dorsaux, permettant des attaques sophistiquées de contrebande de requêtes. Ces outils aident à identifier ces vulnérabilités pour des tests de sécurité défensive.
http1-desync-test.go)Un testeur complet de vulnérabilités desync HTTP/1 qui implémente plusieurs schémas d'attaque.
Content-Length: 0Expect: 100-continue pour la contrebande de requêtes# Clonez le dépôt
git clone https://github.com/nconsolo/echteeteepee.git
cd echteeteepee
# Installez les dépendances
go mod download
# Compilez l'outil
go build -o http1-desync-test http1-desync-test.go
# Testez tous les schémas d'attaque
./http1-desync-test -target https://example.com
# Testez un schéma d'attaque spécifique
./http1-desync-test -target https://example.com -test vh
# Activez la sortie détaillée
./http1-desync-test -target https://example.com -verbose
# Définissez un délai d'expiration personnalisé
./http1-desync-test -target https://example.com -timeout 10s
-target : URL cible (obligatoire)-test : Type de test : all, vh, 0cl, expect, double, clte (par défaut : all)-timeout : Délai d'expiration des requêtes (par défaut : 5s)-verbose : Active la sortie détaillée pour voir les requêtes/réponses brutesnuclei-templates/http1-desync.yaml)Modèle de scan automatisé pour Nuclei afin de détecter les vulnérabilités desync HTTP/1 à grande échelle.
# Installez Nuclei (s'il n'est pas déjà installé)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Copiez le modèle dans le répertoire des modèles Nuclei
cp nuclei-templates/http1-desync.yaml ~/.nuclei-templates/
# Scannez une cible unique
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml
# Scannez plusieurs cibles
nuclei -l targets.txt -t nuclei-templates/http1-desync.yaml
# Scannez avec limitation de débit
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml -rl 10
Tous les schémas d'attaque sont basés sur les conclusions de la recherche de James Kettle et sur des techniques d'exploitation éprouvées.
Source : Recherche « HTTP/1 Must Die » de James Kettle
Exploite les divergences où le proxy frontal voit une limite de requête tandis que le serveur dorsal en voit une autre. La charge utile d'attaque intègre une requête cachée dans ce qui semble être des données d'en-tête pour le frontal, mais qui est interprétée comme une requête distincte par le dorsal.
Exemple issu de la recherche : Utilisé pour démontrer les différences d'analyseur chez les principaux fournisseurs de CDN.
Source : Conclusions de James Kettle sur les vulnérabilités IIS et T-Mobile
Exploite les différentes interprétations des en-têtes Content-Length: 0 entre les serveurs. Certains serveurs ignorent le corps lorsque CL=0, tandis que d'autres le traitent encore, ce qui entraîne une confusion des limites de requêtes.
Impact réel : Exploité avec succès contre les serveurs IIS et l'infrastructure de T-Mobile.
Source : Recherche de James Kettle sur T-Mobile et LastPass
Exploite le mécanisme Expect: 100-continue où le frontal et le dorsal gèrent la continuation différemment. Cela crée des opportunités de faire passer des requêtes en contrebande pendant que le frontal attend une réponse 100-continue.
Contexte de la recherche : Démontré contre les systèmes d'authentification de T-Mobile et LastPass.
Source : Méthodologie avancée de desync de James Kettle
Enchaîne plusieurs attaques desync pour empoisonner la file de réponses, permettant aux attaquants de contrôler les réponses que reçoivent les autres utilisateurs. Cela représente l'une des attaques les plus sophistiquées de la recherche.
Constat critique : Permet la prise de contrôle complète d'un site en servant des réponses malveillantes aux utilisateurs légitimes.
Source : Recherche fondamentale sur l'ambiguïté de HTTP/1.1 par James Kettle
Exploite les conflits entre les en-têtes Content-Length et Transfer-Encoding: chunked. Différents serveurs priorisent ces en-têtes différemment, créant des divergences d'analyseur qui permettent la contrebande de requêtes.
Fondement : Ces conflits représentent le défaut fondamental que James Kettle a identifié dans la spécification HTTP/1.1.
Sur la base de la méthodologie de recherche de James Kettle, les outils recherchent :
Suivant la classification d'impact de James Kettle :
Ces outils sont conçus pour :
N'utilisez PAS ces outils :
Suivant la méthodologie de James Kettle, les outils maintiennent des connexions HTTP/1.1 persistantes pour tester correctement les conditions desync. Chaque test crée une connexion TCP unique et envoie plusieurs requêtes pour observer les différences d'analyse.
Les charges utiles d'attaque sont soigneusement élaborées selon les schémas exacts utilisés par James Kettle dans sa recherche, garantissant la compatibilité avec les comportements serveur qu'il a documentés.
La logique de détection implémente les mêmes indicateurs que James Kettle a utilisés pour identifier les attaques desync réussies lors de ses recherches de primes de bugs à plus de 350 000 $.
Sur la base des conclusions et recommandations de James Kettle :
Licence MIT - Voir le fichier LICENSE pour plus de détails
Ces outils sont fournis uniquement à des fins éducatives et de sécurité défensive. Les utilisateurs sont responsables de s'assurer qu'ils disposent des autorisations appropriées avant de tester tout système. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive ou de dommages causés par ces outils.