
Security research PoC для CVE-2026-49975: HTTP/2 HPACK compression bomb + flow-control hold DoS в Apache mod_http2
Security Research PoC от naheeju
⚠️ Это рабочий инструмент DoS, вызывающий исчерпание памяти — не игрушка. Он открывает потоки, заставляя цель выделять память, и удерживает их открытыми с помощью трюков с управлением потоком HTTP/2. Пока процесс запущен, он продолжает удерживать соединения и автоматически переподключается, если сервер разрывает соединение — сам по себе он не останавливается. Воздействие напрямую масштабируется с
--threads,--streamsи--headers. Остановка процесса (Ctrl+C) освобождает удерживаемые потоки и позволяет серверу восстановиться, но в работе по умолчанию нет ничего «мягкого» — относитесь к каждому запуску как к боевому испытанию.
CVE-2026-49975 («HTTP/2 Bomb») — это удалённая уязвимость отказа в обслуживании, не требующая аутентификации, затрагивающая модуль mod_http2 веб-сервера Apache HTTP Server. Она объединяет две давно известные слабости HTTP/2:
Cookie объединяться без учёта в LimitRequestFields, вынуждая сервер многократно выделять память для внутренних структур учёта заголовков.Результат: один клиент на скромном соединении может вызвать значительное, продолжительное выделение памяти на цели, пока поток удерживается открытым. Данная реализация поддерживает два режима полезной нагрузки и масштабируется линейно с настраиваемой конкурентностью:
nginx — помещает пустой заголовок x-bomb в динамическую таблицу HPACK и многократно ссылается на него (~70:1 усиление на каждую ссылку).classic — вместо этого помещает заголовок cookie увеличенного размера (~4000:1 усиление на каждую ссылку).Каждое соединение многократно ссылается на помещённый заголовок тысячи раз на поток (--headers, по умолчанию 5000), в нескольких потоках на соединение (--streams, по умолчанию 10) и в нескольких параллельных соединениях (--threads, по умолчанию 1). Если сервер закрывает соединение, инструмент немедленно переподключается и продолжает работу до ручной остановки — это цикл непрерывного удержания, а не однократный зонд.
Связанные идентификаторы для других затронутых стеков (не реализованы и не протестированы в этом репозитории):
CVE-2026-47774Полный охват класса лежащей в основе слабости, для полноты картины — техника «HTTP/2 Bomb» (бомба сжатия HPACK + удержание управления потоком) затрагивает несколько серверных реализаций помимо Apache. Этот репозиторий реализует и тестирует только случай Apache; остальное включено, чтобы читатели понимали более широкий класс, а не потому, что данный PoC их задействует:
| Реализация | Статус | Реализовано в этом PoC? |
|---|---|---|
Apache HTTP Server mod_http2 | Исправлено в httpd 2.4.68 (2026-06-08) | Да — этот репозиторий |
| nginx | Исправлено в 1.29.8 | Нет |
| Envoy | Отслеживается отдельно | Нет |
| Microsoft IIS | Отслеживается отдельно | Нет |
| Cloudflare Pingora | Отслеживается отдельно | Нет |
| CVE | CVE-2026-49975 |
| CWE | CWE-789 (Memory Allocation with Excessive Size Value, по NVD/CVE.org); также отслеживается как CWE-409 (Improper Handling of Highly Compressed Data) некоторыми вендорами |
| CVSS | 7.5 (High) — CVSS v3.1, вектор только по доступности (по NVD). Собственный бюллетень Apache оценивает его как Moderate. |
| Затронутый компонент | Apache HTTP Server mod_http2 |
| Уязвимые версии | Apache httpd 2.4.17 ≤ версия ≤ 2.4.67 (конфигурация HTTP/2 по умолчанию) |
| Исправлено в | Apache HTTP Server 2.4.68 (выпущен 2026-06-08). Лежащее в основе исправление попало в upstream mod_h2 2026-05-27, было объединено в ветку httpd 2.4.x 2026-06-02 и вошло в релиз 2.4.68. |
| Тип атаки | Отказ в обслуживании — исчерпание памяти (только доступность) |
| Требуется аутентификация | Нет |
| Утечка данных / RCE | Нет — воздействие только на доступность |
| Известно об эксплуатации | В настоящее время не отмечено как известное-эксплуатируемое-в-дикой-природе отслеживаемыми источниками. |
Ссылки (первоисточники — проверяйте все утверждения самостоятельно):
Этот репозиторий содержит:
Этот репозиторий не содержит:
Прочтите это прежде, чем делать что-либо ещё.
Скачивая, клонируя или исполняя любой код в этом репозитории, вы соглашаетесь с тем, что несёте единоличную ответственность за обеспечение наличия надлежащего разрешения и принимаете полную юридическую ответственность за его использование.