HTTP/2 Bomb: як нова DoS-атака загрожує NGINX, Apache та IIS

Photo of author

CyberSecureFox Editorial Team

Опубліковано:

Дослідники з компанії Calif опублікували опис нової техніки віддаленої атаки типу «відмова в обслуговуванні», що отримала назву HTTP/2 Bomb. За даними дослідників, вразлива поведінка наявна в конфігураціях HTTP/2 за замовчуванням на серверах NGINX, Apache HTTPD, Microsoft IIS, Envoy і Cloudflare Pingora. Техніка поєднує два відомі підходи — компресійну бомбу та утримання з’єднання в стилі Slowloris — для вичерпання оперативної пам’яті сервера. Патчі доступні лише для NGINX і Apache HTTPD; для решти продуктів виправлення на момент публікації відсутні. Адміністраторам серверів із увімкненим HTTP/2 рекомендується негайно оцінити релевантність загрози та вжити заходів з мітимації.

Механізм атаки

Атака націлена на HPACK — алгоритм стиснення заголовків у протоколі HTTP/2, який використовує кодування Хаффмана і, за даними Cloudflare, забезпечує в середньому 30-відсоткове скорочення розміру заголовків. HPACK був спроєктований як стійка до атак класу CRIME заміна загальному стисненню заголовків.

Ключова відмінність HTTP/2 Bomb від класичної HPACK Bomb (CVE-2016-6581, розкрита у 2016 році) полягає в джерелі підсилення. Класичний варіант поміщав велике значення до таблиці HPACK і багаторазово посилався на нього, що призвело до появи захисних лімітів на сумарний розмір декодованих заголовків. Новий варіант діє інакше: заголовки практично порожні, а підсилення досягається за рахунок службових структур даних, які сервер виділяє для кожного запису в таблиці. Ліміт на розмір декодованих даних не спрацьовує, оскільки фактично нічого декодувати.

Друга складова атаки — утримання з’єднання. Зловмисник встановлює нульове вікно керування потоком (flow-control window), що не дозволяє серверу звільнити виділену пам’ять. Цей прийом подібний до атаки Slowloris, яка утримує велику кількість HTTP-з’єднань відкритими, виснажуючи ресурси сервера на прикладному рівні.

Дослідники також вказують на зв’язок із низкою раніше відомих вразливостей у реалізаціях HTTP/2: CVE-2016-8740 (DoS через спеціально сформовані фрейми CONTINUATION в Apache HTTP Server) і CVE-2016-1546 (виснаження робочих потоків в HTTP/2-з’єднанні Apache).

Оцінка впливу

За заявами Calif, які слід сприймати з застереженням як дані з єдиного джерела без незалежного підтвердження, один клієнт із підключенням 100 Мбіт/с здатен зробити вразливий сервер недоступним за лічені секунди. Також стверджується, що один клієнт може захопити й утримувати до 32 ГБ серверної пам’яті на Apache HTTPD і Envoy приблизно за 20 секунд.

Як підкреслюють дослідники, фундаментальна проблема полягає в тому, що специфікація HTTP/2 оцінює ризик для пам’яті виключно через коефіцієнт підсилення, тоді як критичним фактором є час утримання виділеної пам’яті. Коефіцієнт 70:1 нешкідливий, якщо пам’ять звільняється після завершення запиту, але перетворюється на вектор атаки, коли протокол дозволяє клієнту утримувати з’єднання відкритим практично безкоштовно.

Потенційно зачеплені всі організації, що використовують згадані веб-сервери з увімкненим HTTP/2 у конфігурації за замовчуванням. Найбільшому ризику піддаються публічно доступні сервери, які обробляють прямі HTTP/2-з’єднання від клієнтів. Важливо зазначити: активна експлуатація в реальних атаках на цей момент не зафіксована, жоден із пов’язаних CVE не внесено до каталогу CISA KEV. Статус загрози — наявність публічного PoC-опису.

Рекомендації з мітимації

Доступні заходи захисту залежать від використовуваного серверного ПЗ:

  • Apache HTTPD — оновити модуль mod_http2 до версії v2.0.41, що містить виправлення. Якщо оновлення неможливе — вимкнути HTTP/2, встановивши директиву Protocols http/1.1.
  • NGINX — за даними дослідників, виправлення доступне у версії 1.29.8+, яка додає директиву max_headers зі значенням за замовчуванням 1000. Якщо оновлення неможливе, рекомендується вимкнути HTTP/2 директивою http2 off;. Слід враховувати, що ці відомості щодо версії NGINX отримані з єдиного джерела й не підтверджені офіційним бюлетенем NGINX.
  • Microsoft IIS, Envoy, Cloudflare Pingora — на момент публікації дослідження патчі були відсутні. Для цих продуктів єдиним доступним заходом залишається вимкнення HTTP/2, якщо це прийнятно для інфраструктури, або обмеження кількості одночасних HTTP/2-з’єднань на рівні балансувальника навантаження чи WAF.

Додатково рекомендується:

  • Провести аудит конфігурацій веб-серверів на предмет використання HTTP/2 за замовчуванням.
  • Налаштувати моніторинг аномального споживання пам’яті процесами веб-сервера.
  • Обмежити максимальну кількість одночасних HTTP/2-з’єднань з однієї IP-адреси.
  • Відстежувати появу офіційних бюлетенів безпеки від вендорів дотичних продуктів.

Організаціям, які експлуатують Apache HTTPD і NGINX з HTTP/2, слід у пріоритетному порядку застосувати доступні оновлення — mod_http2 v2.0.41 для Apache і версію 1.29.8+ для NGINX. Для серверів Microsoft IIS, Envoy і Cloudflare Pingora необхідно оцінити можливість тимчасового вимкнення HTTP/2 або впровадження компенсуючих контролів на рівні мережевої інфраструктури до виходу офіційних патчів. З огляду на те, що техніка експлуатує поведінку за замовчуванням і не потребує автентифікації, зволікання з мітимацією створює реальний ризик для доступності публічних сервісів.


CyberSecureFox Editorial Team

Редакція CyberSecureFox висвітлює новини кібербезпеки, уразливості, malware-кампанії, ransomware-активність, AI security, cloud security та security advisories вендорів. Матеріали готуються на основі official advisories, даних CVE/NVD, сповіщень CISA, публікацій вендорів і відкритих звітів дослідників. Статті перевіряються перед публікацією та оновлюються за появи нових даних.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.