Уязвимость HTTP/2 Bomb позволяет добиться отказа в обслуживании через исчерпание доступной процессу памяти

от автора

Исследователи кибербезопасности из компании Calif обнаружили новый вариант атаки HTTP/2 Bomb. Она работает даже с одного клиентского устройства, имеющего интернет-соединение со скоростью 100 Мбит/с.

Атака предполагает, что сначала злоумышленник производит манипуляции сжатием HPACK в протоколе HTTP/2 с помощью таблицы HPACK. Атакующий отправляет почти пустой заголовок, но с помощью сотен тысяч инструкций заставляет сервер распаковывать и постоянно ссылаться на один и тот же небольшой элемент, что вызывает лавинообразный расход памяти сервера. Затем происходит блокировка потока управления (Flow Control). Когда память заполнена, хакер выставляет размер окна управления потоком (flow-control window) на 0. Это заставляет сервер приостановить отправку ответа, удерживая занятую память, и поддерживать соединение открытым периодическими 1-байтными запросами.

Таким образом, всего один клиент за 10–20 секунд способен израсходовать до 32–64 ГБ оперативной памяти. При этом уровень потребления памяти в различных HTTP-серверах варьируется от примерно 70 байт на каждый байт в индексе для nginx, IIS и Pingora, до 4000 байт в Apache httpd и 5700 в Envoy.

Все основные серверные реализации HTTP/2 в конфигурациях по умолчанию подвержены уязвимости, в том числе NGINX, Apache HTTPD (модуль mod_http2), Microsoft IIS, Envoy, Cloudflare и Pingora

Баг исправили в nginx 1.29.8 с помощью директивы max_headers из freenginx, по умолчанию допускающая обработку не более 1000 заголовков, Envoy 1.35.11 и 1.36.7 (mutable_max_request_headers_kb и max_headers_count), Appache mod_http2 2.0.41. При этом Microsoft IIS и Cloudflare Pingora пока не получили исправлений.

Багу не подвержен HTTP-сервер Angie, поскольку там реализовали защиту от атак ещё в версии 1.8.0, вышедшей в 2024 году.

ссылка на оригинал статьи https://habr.com/ru/articles/1048430/