Исследователи из компании Calif представили новый тип атаки на отказ в обслуживании (DoS), получивший название HTTP/2 Bomb. Уязвимость угрожает популярным веб-серверам и прокси — от nginx и Apache до Microsoft IIS, Envoy и Cloudflare Pingora.
Главная опасность в том, что для атаки достаточно всего одного компьютера. Злоумышленник может за считанные секунды «съесть» десятки гигабайт оперативной памяти на целевой машине, используя канал всего 100 Мбит/с.
Два старых трюка в одной атаке
HTTP/2 Bomb — не какая-то новая дыра в реализации, а блестящее (и зловещее) объединение двух давно известных методов:
- HPACK-компрессия (алгоритм сжатия заголовков HTTP/2) — позволяет раздуть потребление памяти.
- Slowloris — классическая техника удержания соединения открытым, не давая серверу освободить ресурсы.
Интересно, что комбинацию этих техник помогла найти нейросеть OpenAI Codex.
Как работает «бомба»?
- Закладка — атакующий добавляет одну запись в динамическую таблицу HPACK.
- Размножение — затем он многократно ссылается на неё через индексные записи размером всего 1 байт. Сервер вынужден выделять тысячи байтов памяти на каждый такой байт входящего трафика.
- Фиксация — обычный сервер освободил бы память после завершения запроса. Но атакующий устанавливает нулевой размер окна управления потоком (flow-control window). Соединение не закрывается, память остается закрепленной.
Результаты тестов (страшные цифры)
Коэффициент усиления (amplification) памяти:
- Envoy — до 5700 : 1
- Apache HTTP Server — до 4000 : 1
Скорость уничтожения 32 ГБ памяти одним ПК (100 Мбит/с):
- Envoy 1.37.2 — ~10 секунд
- Apache 2.4.67 — ~18 секунд
- nginx 1.29.7 — ~45 секунд (до 32 ГБ)
- Microsoft IIS (Win Server 2025) — ~45 секунд (до 64 ГБ)
Почему обычные защиты бесполезны?
Лимиты на размер декодированных заголовков не помогают: сами заголовки остаются маленькими. Основная нагрузка ложится на внутренние структуры сервера, создаваемые под каждую запись.
Что делать?
Уже исправлено:
- nginx — версия 1.29.8, новый параметр
max_headers. - Apache HTTPD — mod_http2 2.0.41, CVE-2026-49975.
Патчей пока нет:
- Microsoft IIS
- Envoy
- Cloudflare Pingora
Временные меры:
- Отключить HTTP/2 (если возможно).
- Поставить перед сервером прокси или межсетевой экран с жестким лимитом на количество заголовков.
- Использовать CDN, обратные прокси, WAF или нестандартные настройки, скрывающие уязвимый эндпоинт.
Дальнейшее раскрытие
Полные технические подробности эксперты обещают представить в этом месяце на конференции Real World AI Security. PoC-код уже опубликован.
