05.06.2026 — CVE-2026-49975 HTTP/2 Bomb — удаленный отказ в обслуживании в реализациях HTTP/2 {#CVE-2026-49975}

Идентификатор CVE (CVE ID): CVE-2026-49975

Дополнительный идентификатор: CVE-2026-47774 — уязвимость в Envoy.

Ссылка на CVE: <https://www.cve.org/CVERecord?id=CVE-2026-49975>

На момент публикации карточка NIST NVD для CVE-2026-49975 публично не создана. CVE присвоен CNA, запись на cve.org находится в статусе Reserved и будет обновлена после публикации данных.

Исходный отчет {#original-report-CVE-2026-49975}

  • Codex Discovered a Hidden HTTP/2 Bomb: <https://blog.calif.io/p/codex-discovered-a-hidden-http2-bomb>
  • PoC и материалы исследования: <https://github.com/califio/publications/tree/main/MADBugs/http2-bomb>
  • Патч NGINX, директива max_headers: <https://github.com/nginx/nginx/commit/365694160a85229a7cb006738de9260d49ff5fa2>
  • Документация NGINX по maxheaders: <https://nginx.org/en/docs/http/ngxhttpcoremodule.html#max_headers>
  • Патч Apache httpd, mod_http2 v2.0.41: <https://github.com/apache/httpd/commit/47d3100b252dc6668a9e46ae885242be9eeca9cd>
  • Релизы Apache modh2: <https://github.com/icing/modh2/releases>
  • Envoy Security Advisory GHSA-22m2-hvr2-xqc8 / CVE-2026-47774: <https://github.com/envoyproxy/envoy/security/advisories/GHSA-22m2-hvr2-xqc8>
  • RFC 7541 (HPACK): <https://www.rfc-editor.org/rfc/rfc7541>
  • RFC 9113 (HTTP/2): <https://www.rfc-editor.org/rfc/rfc9113>
  • Краткое описание {#brief-description-CVE-2026-49975}

    Исследователи Calif обнаружили уязвимость класса denial of service в обработке HTTP/2-запросов рядом популярных веб-серверов и прокси. Атака получила название HTTP/2 Bomb.

    Уязвимость связана с особенностями обработки HTTP/2 HPACK и flow control. Злоумышленник может отправлять компактно закодированные HTTP/2-заголовки, которые при декодировании приводят к значительному росту потребления памяти на стороне сервера. Механизм flow control при этом может использоваться для удержания потоков открытыми и закрепления выделенной памяти.

    Успешная эксплуатация может привести к исчерпанию памяти процесса, аварийному завершению worker-процессов или отказу в обслуживании HTTP/2 endpoint. Для эксплуатации не требуется аутентификация.

    Уязвимость влияет только на доступность сервиса. На момент публикации нет данных о возможности раскрытия или изменения пользовательских данных через эту уязвимость.

    Затронутые технологии {#technologies-affected-CVE-2026-49975}

    Проблема актуальна для систем, которые принимают HTTP/2-трафик напрямую и используют уязвимые версии веб-серверов, reverse proxy или HTTP/2-терминаторов.

    Подтвержденные в исходном отчете реализации:

    • nginx;
    • Apache httpd / mod_http2;
    • Microsoft IIS;
    • Envoy;
    • Cloudflare Pingora.

    HTTP/1.1-only endpoint не подвержен описанной цепочке атаки HTTP/2 Bomb.

    Уязвимые продукты и версии {#vulnerable-products-and-versions-CVE-2026-49975}

    #| || Продукт | Уязвимые версии / состояние | Исправление || || nginx | Версии ниже 1.29.8 при включенном HTTP/2. В отчете подтверждена эксплуатация на nginx 1.29.7. | Обновите до nginx 1.29.8 или новее. В версии 1.29.8 добавлена директива maxheaders со значением по умолчанию 1000. || || NGINX Plus | Версии, основанные на nginx Open Source ниже 1.29.8, при включенном HTTP/2. | Используйте версию NGINX Plus, включающую исправление maxheaders, например NGINX Plus PLS.37.0.0.1 LTS или новее. || || Apache httpd / modhttp2 | Версии с modhttp2 ниже 2.0.41. В отчете подтверждена эксплуатация на Apache httpd 2.4.67. | Обновите mod_http2 до 2.0.41 или новее. Проверьте наличие исправления в пакетах вашего дистрибутива или vendor-сборке Apache httpd. || || Envoy | Версии до исправленных веток 1.35.11, 1.36.7, 1.37.3 и 1.38.1. Для Envoy опубликован отдельный advisory GHSA-22m2-hvr2-xqc8 и CVE-2026-47774. | Обновите Envoy до 1.35.11, 1.36.7, 1.37.3, 1.38.1 или более новой исправленной версии. || || Microsoft IIS | Уязвимость подтверждена для Microsoft IIS на Windows Server 2025. На момент подготовки бюллетеня публичное исправление в исходном отчете не подтверждено. | Следите за обновлениями Microsoft. До выхода исправления отключите HTTP/2 или закройте прямой доступ к IIS за защищенным L7-балансировщиком. || || Cloudflare Pingora | Уязвимость подтверждена для Pingora 0.8.0. На момент подготовки бюллетеня публичное исправление в исходном отчете не подтверждено. | Следите за обновлениями Pingora/Cloudflare. До выхода исправления отключите HTTP/2 или используйте внешний L7-терминатор с ограничениями на HTTP/2-заголовки. || |#

    Разработчик {#vendor-CVE-2026-49975}

    Уязвимость затрагивает несколько независимых разработчиков веб-серверов и прокси (смотрите таблицу выше). Патчи для nginx, Apache mod_http2 и Envoy уже выпущены. Для Microsoft IIS и Cloudflare Pingora публичные исправления на момент публикации бюллетеня отсутствуют.

    Вектор атаки и уровень опасности согласно CVSS v.3.1 {#attack-vector-and-severity-level-CVE-2026-49975}

    Для CVE-2026-49975 базовая оценка CVSS в NIST NVD на момент публикации отсутствует.

    По характеру воздействия уязвимость относится к классу удаленного отказа в обслуживании:

    • вектор атаки: сетевой;
    • сложность атаки: низкая;
    • привилегии: не требуются;
    • взаимодействие пользователя: не требуется;
    • влияние на конфиденциальность: отсутствует;
    • влияние на целостность: отсутствует;
    • влияние на доступность: высокое.

    Для связанной уязвимости Envoy CVE-2026-47774 в GitHub Security Advisory указана оценка 7,5 HIGH с вектором:

    <code>CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H</code>

    Рекомендации по обнаружению уязвимости и дополнительные материалы {#recommendations-for-vulnerability-detection-CVE-2026-49975}

    Проверьте, принимают ли ваши публичные сервисы HTTP/2-трафик напрямую на уязвимых компонентах.

    Для nginx:

    <code>nginx -v
    nginx -T | grep -Ei 'http2|max_headers|listen .*443'</code>

    Для Apache httpd:

    <code>apachectl -M | grep -i http2
    httpd -v</code>

    Для Envoy:

    <code>envoy --version</code>

    Также рекомендуется проверить публичные endpoints на поддержку HTTP/2 через ALPN и убедиться, что backend-сервисы не доступны напрямую в обход балансировщика.

    Признаки возможной эксплуатации:

    • резкий рост потребления памяти процессами web server или reverse proxy;
    • OOM kill worker-процессов;
    • большое количество долгоживущих HTTP/2 streams;
    • аномальное число HTTP/2-запросов с большим количеством cookie или header fragments;
    • рост 5xx-ответов или недоступность endpoint без соответствующего роста легитимной нагрузки.

    Безопасная версия уязвимого продукта или патч {#safe-version-CVE-2026-49975}

    Рекомендуется обновить уязвимые компоненты до следующих версий или новее:

    • nginx: 1.29.8 и выше;
    • NGINX Plus: версия, включающая исправление из nginx Open Source 1.29.8, например NGINX Plus PLS.37.0.0.1 LTS и выше;
    • Apache mod_http2: 2.0.41 и выше;
    • Envoy: 1.35.11, 1.36.7, 1.37.3, 1.38.1 или более новая исправленная версия;
    • Microsoft IIS: установите исправление Microsoft после публикации, до этого примените временные меры;
    • Cloudflare Pingora: установите исправление производителя после публикации, до этого примените временные меры.

    Митигации

    Если немедленное обновление невозможно, примените временные меры снижения риска.

    1. Используйте управляемые балансировщики нагрузки Yandex Cloud

    Для публичных HTTP/HTTPS-сервисов рекомендуется использовать Yandex Application Load Balancer как единую публичную точку входа.

    Рекомендуемая схема:

    <code>Internet
      -> Yandex Application Load Balancer
        -> private backend group</code>

    Backend-сервисы не должны быть доступны напрямую из интернета. Настройте группы безопасности так, чтобы входящий трафик к backend-инстансам или подам разрешался только от балансировщика и доверенных внутренних сетей.

    Для HTTP/HTTPS-нагрузки предпочтительно использовать L7-балансировщик. L4-балансировка без завершения HTTP/2 не устраняет риск, если уязвимый HTTP/2-терминатор остается доступен на backend.

    2. Отключите HTTP/2 на уязвимых публичных endpoint

    Если обновление пока невозможно, временно отключите HTTP/2.

    Для nginx:

    <code>server {
        listen 443 ssl;
        http2 off;
    }</code>

    Для конфигураций, где HTTP/2 включен через параметр listen, удалите параметр http2:

    <code>listen 443 ssl;</code>

    Для Apache httpd:

    <code>Protocols http/1.1</code>

    Для Envoy временно отключите downstream HTTP/2 на публичных listeners, если это совместимо с вашим сервисом.

    Для IIS отключите HTTP/2 согласно документации Microsoft или закройте прямой доступ к IIS за L7-балансировщиком, который завершает HTTP/2 и применяет ограничения.

    3. Ограничьте HTTP/2-заголовки и cookie

    Настройте жесткие лимиты:

    • максимальное количество HTTP-заголовков;
    • максимальный decoded размер заголовков, а не только encoded HPACK-размер;
    • максимальный размер cookie;
    • максимальное количество cookie fragments;
    • максимальное количество одновременных HTTP/2 streams на соединение;
    • максимальное время жизни stream/request;
    • таймауты idle/read/send для HTTP/2-соединений.

    Для nginx 1.29.8 и выше используйте директиву max_headers:

    <code>max_headers 1000;</code>
    Для Apache httpd учитывайте, что LimitRequestFieldSize может быть только частичной мерой, а LimitRequestFields не полностью закрывает описанный сценарий для уязвимых версий modhttp2. Приоритетная мера — обновление modhttp2 до исправленной версии.

    4. Ограничьте последствия исчерпания памяти

    Как дополнительную защиту настройте лимиты ресурсов для процессов и контейнеров:

    • cgroups или container memory limits;
    • MemoryMax в systemd;
    • Kubernetes resource limits;
    • ulimit;
    • автоматический restart policy для worker-процессов.

    Эти меры не исправляют уязвимость, но помогают ограничить blast radius при попытке эксплуатации.

    5. Закройте прямой доступ к backend

    Проверьте, что backend-сервисы, работающие на nginx, Apache httpd, Envoy, IIS или Pingora, не опубликованы напрямую в интернете в обход балансировщика.

    Особенно важно проверить:

    • публичные IPv4/IPv6-адреса виртуальных машин;
    • NodePort/LoadBalancer-сервисы в Kubernetes;
    • Ingress-контроллеры;
    • debug/staging endpoints;
    • временные NAT- или firewall-правила.

    Для Yandex Managed Service for Kubernetes:

    • для кластеров с публичными адресами ограничьте доступ к API кластера (порты 443 и 6443) конкретными нужными префиксами;
    • для всех кластеров (с публичными и приватными адресами мастеров) убедитесь, что в группе безопасности кластера есть правило, разрешающее трафик из источника «Проверки состояния балансировщика» на порты 7890 и 7891;
    • для всех кластеров убедитесь, что в группе безопасности кластера отсутствуют правила, разрешающие трафик на порты 7890 и 7891 с других источников.

    Хронология раскрытия {#timeline-disclosure-CVE-2026-49975}

    • Апрель 2026 — уязвимость передана разработчикам nginx, исправление добавлено в nginx 1.29.8;
    • 27.05.2026 — уязвимость передана Apache, исправление внесено в mod_http2 2.0.41;
    • 02.06.2026 — опубликован исходный отчет Calif «Codex Discovered a Hidden HTTP/2 Bomb»;
    • 03.06.2026 — опубликован advisory Envoy GHSA-22m2-hvr2-xqc8 / CVE-2026-47774 и исправленные версии Envoy;
    • 05.06.2026 — опубликован бюллетень Yandex Cloud.

    Влияние на сервисы Yandex Cloud {#impact-on-yandex-cloud-services-CVE-2026-49975}

    Сервисы Yandex Cloud обновляются для предотвращения возможности эксплуатации уязвимости. Уязвимость не затрагивает конфиденциальность или целостность пользовательских данных.

    Пользовательские сервисы, самостоятельно развернутые на виртуальных машинах, в контейнерах, в Yandex Managed Service for Kubernetes или в собственных образах, требуют проверки со стороны владельцев этих сервисов.

    Пользователям рекомендуется:

    • использовать Yandex Application Load Balancer для публичных HTTP/HTTPS endpoint;
    • закрыть прямой доступ к backend-сервисам из интернета;
    • обновить nginx, Apache httpd / mod_http2, Envoy, IIS или Pingora до исправленных версий;
    • применить временные митигации, если обновление невозможно немедленно;
    • проверить, что HTTP/2 не включен на уязвимых публичных endpoint без необходимости.