HTTP/2-бомба парализует работу веб-сервера за секунды.




Исследователи безопасности из компании Calif с помощью ИИ-ассистента OpenAI Codex обнаружили DoS-уязвимость под названием HTTP/2 Bomb, которая затрагивает бесчисленное множество веб-серверов. Согласно сообщению в блоге исследователей (открывается в новом окне), один клиент может за несколько секунд переполнить память веб-сервера. Для этого со стороны клиента достаточно интернет-соединения со скоростью всего 100 Мбит/с.

Как сообщается, уязвимыми для HTTP/2 Bomb считаются как минимум Nginx, Apache HTTPD, Microsoft IIS, Envoy и Cloudflare Pingora. Сообщается, что каждый из них уязвим в своей стандартной конфигурации HTTP/2.

Таким образом, брешь в безопасности затрагивает программное обеспечение веб-серверов от поставщиков, совокупная доля рынка которых составляет более 80 процентов (открывается в новом окне). Следовательно, во всем мире могут быть затронуты сотни тысяч веб-серверов. Таким образом, поверхность атаки примерно так же велика, как и у атаки Continuation Flood, обнаруженной в апреле 2024 года.

Клиент заставляет сервер накапливать заголовки

Атака, среди прочего, использует ошибку в механизме HPack (открывается в новом окне), используемом для сжатия заголовков протокола HTTP/2. «Каждая сторона HTTP/2-соединения управляет динамической таблицей недавно просмотренных заголовков. Отправитель может однократно вставить заголовок в таблицу и ссылаться на него в последующих запросах по индексу — обычно это один байт», — объясняют исследователи.

Затем получатель использует этот индекс, чтобы вставить копию полного заголовка в запрос, который он в данный момент подготавливает. Таким образом, клиент может заставить веб-сервер за короткое время обрабатывать большие объемы данных. «Один байт в канале связи превращается в полное выделение памяти под заголовок на сервере, что повторяется тысячи раз для каждого запроса», — говорится в блоге.

Кроме того, злоумышленник может помешать целевому серверу отправить свой ответ, передав так называемое «окно управления потоком нулевого размера» (zero-byte flow-control window) и многократно отправляя 1-байтовые фреймы Window_Update, в результате чего ответ остается в памяти. Таким образом, клиент может «удерживать соединение открытым практически бесплатно и блокировать каждый занятый байт так долго, как пожелает», — отмечают исследователи.

32 Гбайт заполнены за секунды

То, насколько быстро передаваемые клиентом данные заполняют память веб-сервера, зависит от используемого программного обеспечения. Наиболее сильный эффект в тестах исследователей наблюдался у Envoy. Там для тестируемой версии 1.37.2 было достигнуто соотношение 5700:1. То есть на каждый байт, переданный клиентом, в памяти сервера занималось 5700 байт.

У Apache HTTPD (версия 2.4.67) это соотношение составило 4000:1. У остальных веб-серверов оно было значительно ниже: Nginx 1.29.7 достиг соотношения 70:1, Microsoft IIS под Windows Server 2025 — 68:1, а Cloudflare Pingora 0.8.0 — соотношения 62:1. В случае с Envoy достигнутого значения было достаточно, чтобы заполнить 32 Гбайт памяти на веб-сервере примерно за десять секунд, в то время как для Nginx такая атака заняла около 45 секунд.

Исправления доступны лишь частично

Для Nginx (открывается в новом окне) и Apache HTTPD (открывается в новом окне) уже существуют исправления, которые, по словам Calif, были своевременно предоставлены в апреле и мае соответственно после уведомления исследователей. Для Envoy на момент раскрытия информации патч, вероятно, еще находился в разработке, но с тех пор также был опубликован (открывается в новом окне). Однако для Microsoft IIS и Cloudflare Pingora на данный момент, как сообщается, патча не существует.

Для серверов, которые в настоящее время еще не могут быть пропатчены, исследователи рекомендуют по возможности отключить HTTP/2 или установить перед ними систему, принудительно устанавливающую верхний предел количества заголовков на один запрос.

Те, кто хочет проверить уязвимость собственного сервера, могут найти на Github (открывается в новом окне) эксплойт, подтверждающий концепцию (Proof-of-Concept). Исследователи из Calif подчеркивают, что ошибки, из которых состоит HTTP/2 Bomb, существуют уже около десяти лет. Предположительно, Codex распознал причины с помощью анализа исходного кода и на основе своих выводов разработал атаку.