
Комплексный инструмент тестирования на Python для CVE-2023-44487 — уязвимости HTTP/2 Rapid Reset. Эта улучшенная версия обеспечивает детальный контроль над параметрами тестирования, множество шаблонов атак и расширенные возможности мониторинга.
Комплексный инструмент тестирования на Python для CVE-2023-44487 — уязвимости HTTP/2 Rapid Reset. Репозиторий содержит как инструменты для тестирования атак, так и инструменты, ориентированные на проверку.
Этот инструмент предназначен ТОЛЬКО для образовательных целей и санкционированного тестирования!
CVE-2023-44487, также известная как «HTTP/2 Rapid Reset», — это критическая уязвимость в протоколе HTTP/2, которая позволяет злоумышленникам:
Оценка CVSS: 7.5 (высокая)
Воздействие: отказ в обслуживании, истощение ресурсов
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.pyНазначение: обнаружение сигналов применения защитных мер для проверки после установки патча и контроля соответствия требованиям
# 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
Скрипт выдаёт интеллектуальный вердикт на основе соответствующих RFC 9113 сигналов применения защитных мер:
Server sends GOAWAY with ENHANCE_YOUR_CALM (0xb) error code
Classification: NOT VULNERABLE — protocol-layer enforcement is active
Meaning: HTTP/2 implementation has proper rate-limiting controls
50%+ of connections terminated via TCP reset
Classification: LIKELY PROTECTED — verify with edge/infrastructure team
Meaning: Edge appliance or DDoS protection engaged at transport layer
Per-second reset rate drops significantly over time (late buckets <60% of early)
Classification: PARTIAL PROTECTION — confirm with infrastructure team
Meaning: Server or edge slowing the attack adaptively
Server sends REFUSED_STREAM (0x7) responses
Classification: PARTIAL PROTECTION — review rate limits
Meaning: Some stream-level rate-limiting in place
No ENHANCE_YOUR_CALM GOAWAY, no TCP resets, no throttling detected
Classification: VECTOR EXERCISABLE — exploitability unconfirmed
Important: This doesn't prove DoS exploitability. Edge volumetric/behavioral
protections (Akamai, CloudFlare) may engage at higher scales
============================================================
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.
# 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 (код ошибки 0xb):
REFUSED_STREAM (код ошибки 0x7):
Анализ частоты сбросов в секунду:
TCP RST на транспортном уровне:
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.pyНазначение: комплексное тестирование атак HTTP/2 Rapid Reset с использованием множества паттернов
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
| Параметр | Описание | По умолчанию |
|---|---|---|
--pattern TYPE | Используемый паттерн атаки |
Доступные паттерны:
rapid_reset - стандартная атака rapid resetburst_reset - атаки пакетамиgradual_reset - постепенно возрастающая скоростьrandom_reset - случайные таймингиcontinuation_flood - флуд кадрами CONTINUATIONmixed_pattern - комбинация паттерновДоступные форматы вывода:
console - вывод в консоль в удобочитаемом видеjson - машиночитаемый JSONcsv - CSV, совместимый с табличными редакторамиxml - структурированный формат XMLИнструмент автоматически оценивает уязвимость:
«No module named 'h2'»
pip install h2
Отказ в соединении / тайм-аут
curl -I --http2 https://target.comImportError с модулями h2
pip install --upgrade h2
python3 --version # Must be 3.7+
Отказано в доступе
chmod +x *.py
python3 cve_2023_44487_verifier_enhanced.py target.com
Включите подробное журналирование:
python3 cve_2023_44487_verifier_enhanced.py target.com -v
Протестируйте с минимальными параметрами:
python3 cve_2023_44487_verifier_enhanced.py target.com -s 10 -c 1
Проверьте поддержку HTTP/2:
python3 -c "import h2; print('h2 library OK')"
Этот репозиторий предназначен для специалистов по кибербезопасности, исследователей и системных администраторов, чтобы они могли тестировать собственные системы или системы, на тестирование которых у них есть явное разрешение.
Ключевые правовые положения:
Помните: с большой силой приходит большая ответственность. Используйте эти инструменты этично и законно.
Этот инструмент предоставляется под лицензией MIT. Подробности см. в файле LICENSE.
| Параметр | Описание | По умолчанию |
|---|
host | Целевое имя хоста (обязательно) | - |
-p, --port | Целевой порт | 443 |
--no-ssl | Отключить SSL/TLS | False (SSL включён) |
-s, --streams | Количество потоков на соединение | 1000 |
-d, --delay | Задержка между операциями с потоками (секунды) | 0.001 |
-c, --connections | Количество параллельных соединений | 1 |
--baseline-only | Выполнять только базовый тест (без атаки) | False |
-v, --verbose | Подробный/отладочный вывод | False |
| Причина закрытия | Значение |
|---|
goaway_enhance_your_calm | Получен GOAWAY 0xb (наилучший индикатор устранения CVE) |
goaway_* | GOAWAY с другим кодом ошибки |
tcp_reset | Получен TCP RST (вмешательство на граничном уровне) |
broken_pipe / recv_error | Ошибка соединения во время обмена данными |
eof_no_goaway | Неожиданный EOF без GOAWAY |
no_close_no_enforcement | Соединение осталось открытым (защитные меры не обнаружены) |
| Параметр | Описание | По умолчанию |
|---|
-c, --connections N | Количество параллельных соединений | 1 |
--connection-timeout SEC | Тайм-аут соединения в секундах | 10 |
--read-timeout SEC | Тайм-аут чтения ответов | 5 |
--connection-delay SEC | Задержка между соединениями | 0.0 |
| Параметр | Описание | По умолчанию |
|---|
-r, --requests N | Запросов на соединение | 100 |
--delay SEC | Задержка между HEADERS и RST_STREAM | 0.001 |
--request-delay SEC | Задержка между запросами | 0.0 |
--jitter FACTOR | Коэффициент рандомизации таймингов | 0.0 |
| rapid_reset |
--burst-size N | Запросов в пакете | 10 |
--burst-delay SEC | Задержка между пакетами | 0.1 |
| Параметр | Описание | По умолчанию |
|---|
--window-size BYTES | Начальный размер окна HTTP/2 | 65535 |
--frame-size BYTES | Максимальный размер кадра | 16384 |
--header-table-size BYTES | Размер таблицы заголовков HPACK | 4096 |
--enable-push | Включить server push HTTP/2 | False |
--rst-error-code CODE | Код ошибки RST_STREAM | 8 |
| Параметр | Описание | По умолчанию |
|---|
--output FORMAT | Формат вывода | console |
--output-file FILE | Имя выходного файла | создаётся автоматически |
--verbose, -v | Подробный вывод | False |
--debug | Отладочное журналирование | False |
--log-file FILE | Журналирование в файл | None |
| Сценарий использования | Инструмент | Причина |
|---|
| Проверка после установки патча | cve_2023_44487_verifier_enhanced.py | Обнаруживает сигналы применения защитных мер |
| Проверка соответствия требованиям | cve_2023_44487_verifier_enhanced.py | Подтверждает устранение CVE |
| Оценка инфраструктуры | cve_2023_44487_verifier_enhanced.py | Чёткие и применимые на практике вердикты |
| Исследование атак | rapid_reset_test.py | Множество паттернов атак |
| Тестирование производительности | rapid_reset_test.py | Всесторонние метрики |
| Пользовательские паттерны | rapid_reset_test.py | Детальная настройка |