LINUX.ORG.RU

Уязвимость HTTP/2 Bomb, приводящая к исчерпанию оперативной памяти

 


0

3

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

Атака состоит из двух этапов:

  1. Манипуляция сжатием HPACK: В протоколе HTTP/2 заголовки сжимаются с помощью таблицы HPACK. Атакующий отправляет почти пустой заголовок, но с помощью сотен тысяч инструкций заставляет сервер распаковывать и постоянно ссылаться на один и тот же крошечный элемент. Это вызывает лавинообразный расход памяти сервера.

  2. Блокировка потока управления (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 году.

>>> Подробности

Для Microsoft IIS и Cloudflare Pingora исправлений пока нет.

забавно

unclestephen ★★★★★
()

То есть способ атаки был известен ещё два года назад и все ждали когда иишечку доделают?

imul ★★★★★
()

Файловые бомбы наносят ответный удар! Кто бы мог подумать...

GAMer ★★★★★
()

Самое время сделать U-разворот и вернуть http/1.1

Преимуществ во 2 версии особо не вижу, а от 3 лучше бежать как от огня.

ant1
()
Ответ на: комментарий от imul

То есть способ атаки был известен ещё два года назад и все ждали когда иишечку доделают?

Как же тогда разработчики Angie реализовали защиту от подобного рода атак без ИИ ещё в версии 1.8.0 в 2024 году? Наверное, к ним прилетел разработчик из будущего и рассказал всё.

mshewzov ★★★★
()
Ответ на: комментарий от mshewzov

Как же тогда разработчики Angie реализовали защиту от подобного рода атак без ИИ ещё в версии 1.8.0 в 2024 году?

Возможно просто порядок в коде наводили и на всякий случай добавили проверку, не думаю что это что-то серьезное.

maxcom ★★★★★
()
Ответ на: комментарий от mshewzov

Если посмотреть, как защита от подобного рода атак реализована у других (абзацем выше), то оно ж просто ограничение на количество хедеров. Добавить такое ограничение в Angie могли и не задумываясь о конкретной уязвимости, а просто чтоб было — это ж вполне логичная настройка.

CrX ★★★★★
()
Ответ на: комментарий от ant1

Дак 1.1 тупо ничего не умеет, кроме того чтобы выдавать достаточно лёгкие текстовые .html.

Основной плюс в том, что ajax не нужен как костыль, который сам по-себе дико медленный, генерит тонну лишних запросов, парситься на клиенте отдельным лапшекодом. Вебсокеты по сравнению с этим – буквально упрощение протокола, а не усложнение. Тебе, как только хочется делать хоть что-то полезное в вебе, в принципе, нормальное дуплексное соединение с клиентом иметь – высшее благо.

Ну а раз уж запихнули дуплекс/вебсокеты и, раз уж значимая часть трафика и так не текст, а картинки/видео, в чём смысл протокол текстовым оставлять? Аргумент про то, что усложняет отладку и telnetом не пообщаешься, не катит, так как у тебя и так 95% соединений уже завёрнуто в TLS, и ты просто так руками ничего не прочитаешь. Оттуда и http/2.

Ну а раз уж протокол бинарный и внутри себя сессиями умеет управлять, зачем полагаться на tcp-стек операционки/сетевого оборудования по пути для управления потоком и гарантиями доставки, если это можно имплементировать и совершенствовать отдельно и перейти на датаграммы? Отсюда и quic/http/3.

Логика развития примерно такова. Да, я тут много что утрировал (бинарные данные всё же не по вебсокетам обычно гоняют, да и ajax лучше когда тебе не нужно держать стейт, для отправки формочек всяких его достаточно) и по временным рамкам оно появлялось немного в другом порядке, но суть в том что 1.1 тупо не нужен в свете более новых версий

energetix_user ★★
()
Последнее исправление: energetix_user (всего исправлений: 5)
Ответ на: комментарий от cobold

По нему если не ошибаюсь и СУБД в локальном софте аля sqlite – сплошная глупость и нинужно.

energetix_user ★★
()

То есть версия nginx-1.29.8 с исправлением вышла 7 апреля, а уязвимость обнаружена в начале июня? Что-то здесь не так.

bigbit ★★★★★
()
Ответ на: комментарий от maxcom

@maxcom, @CrX, я к тому это написал, что и без ИИ это можно было найти, пользуясь или головой, или логикой (что тоже считается за пользование головой). Хотелось бы верить, что с появлением ИИ код программ станет безопаснее, быстрее и меньше (но скорее всего нет).

mshewzov ★★★★
()

Не повезло мне, у меня только http 1.1 дома работает, свой сервер😅 Не проверить)

REDDERa
()
Ответ на: комментарий от mshewzov

Луддиты видимо, не стали дожидаться. Как раз в 2024 я везде, где мог дотянуться, заменил nginx на angie.

imul ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.