CVE-2026-100660 в Debian: DoS через неограниченную удерживаемую память QPACK в Netty HTTP/3

CVE: CVE-2026-100660
Продукт: Debian
Дата публикации: 26.09.2026
Критичность: HIGH
CVSS: 8.7 (4.0)
EPSS: 0,38%; процентиль 28,90%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


Уязвимость CVE-2026-100660 затрагивает пакет netty в Debian и позволяет удалённому клиенту вызвать исчерпание памяти сервера через HTTP/3. Проблема связана с тем, что QpackEncoder хранит состояние кодирования для каждого потока без ограничений по количеству потоков, секций полей и объёму данных. В Debian проблема устранена в версиях netty 1:4.1.48-7+deb12u2, 1:4.1.48-16 и 1:4.1.48-10+deb13u1 для соответствующих релизов.

Основные характеристики​


Риск состоит в удалённом отказе от службы из-за неограниченного роста памяти Java-процесса, работающего с HTTP/3 через Netty.

  • Тип ошибки: CWE-770 — неограниченный рост ресурса (unbounded memory retention)
  • CVSS v4.0: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X, оценка 8.7, severity HIGH
  • Вектор атаки: удалённый, без авторизации, без взаимодействия с пользователем, без привилегий
  • Факт эксплуатации: в предоставленных источниках не подтверждено
  • EPSS: 0,375% (процентиль 28,9%)

Какие продукты и версии затронуты​


В Debian уязвим пакет netty.

  • Debian bookworm: версия 1:4.1.48-7+deb12u2 в репозиториях bookworm и bookworm-security
  • Debian forky: версия 1:4.1.48-16 в репозитории forky
  • Debian sid: версия 1:4.1.48-16 в репозитории sid
  • Debian trixie: версии 1:4.1.48-10+deb13u1 в репозиториях trixie и trixie-security

В исходном описании CVE указано, что уязвимы версии Netty HTTP/3 codec от 4.2.0.Final до 4.2.17.Final. В Debian соответствующий пакет называется netty, а конкретные дистрибутивные версии указаны в Debian Security Tracker.

Причина уязвимости​


Класс QpackEncoder в компоненте Netty HTTP/3 хранит очередь и трекер индексов динамической таблицы для каждого закодированного раздела полей, ссылающегося на QPACK dynamic table. Элементы сохраняются с ключом — QUIC stream ID, контролируемым удалённым клиентом.

Освобождение записей происходит только при получении от удалённого декодера Section Acknowledgment или Stream Cancellation instruction. Завершение HTTP/3-потока не вызывает освобождения состояния. Ограничений на количество отслеживаемых потоков, секций полей и удерживаемых байтов нет.

Это приводит к неограниченному росту памяти при последовательной отправке запросов одним клиентом без обязательных Section Acknowledgments.

Как работает атака​


Удалённый HTTP/3-клиент устанавливает QUIC-соединение с сервером, работающим на Netty.

Клиент объявляет ненулевую ёмкость QPACK dynamic table и подтверждает вставку таблицы. Сервер начинает использовать динамически индексируемые заголовки ответа.

Далее клиент отправляет последовательные HTTP/3-запросы по одному QUIC-соединению, пропуская все обязательные Section Acknowledgments. Каждый запрос создаёт новые записи в QpackEncoder, которые не удаляются при завершении потока.

Состояние кодирования накапливается до тех пор, пока Java-процесс не исчерпает доступную память. Это вызывает отказ от службы: процесс останавливает обработку запросов или завершается по OOM.

Условия успешной эксплуатации​


Для успешной эксплуатации достаточно доступа к HTTP/3-интерфейсу сервера.

  • Сервер использует Netty с компонентом io.netty:netty-codec-http3
  • Версия Netty находится в диапазоне от 4.2.0.Final до 4.2.17.Final или соответствует уязвимым дистрибутивным версиям Debian
  • Клиент может установить QUIC-соединение и отправить HTTP/3-запросы
  • Не требуется авторизация, привилегии или взаимодействие с пользователем
  • Не требуется обход ограничений одновременных потоков: они не применяются к накоплению состояния QpackEncoder

Возможный сценарий атаки​


Администратор запускает веб-сервис на Debian с пакетом netty из уязвимого релиза. Сервис принимает HTTP/3-трафик.

Внешний клиент подключается по QUIC и отправляет запросы, используя QPACK dynamic table. Клиент не отправляет Section Acknowledgments после каждого раздела полей.

Каждый новый запрос увеличивает количество хранимых записей в QpackEncoder. Память Java-процесса растёт монотонно.

Через некоторое время процесс исчерпывает heap и перестаёт обслуживать остальные соединения. Для пользователя это выглядит как зависание или отказ от службы без ошибок в логах приложения.

Есть ли публичный эксплойт​


В предоставленных источниках нет отдельного раздела с публичным эксплойтом, PoC-скриптом или подтверждённой эксплуатацией.

Описание CVE содержит техническую механику: клиент может объявить ненулевую ёмкость QPACK dynamic table, подтвердить вставку таблицы и пропустить Section Acknowledgments. Это позволяет описать поведение, которое приводит к неограниченному росту памяти.

Отсутствие сведений об эксплойте в перечисленных источниках не означает, что он не существует. Для проверки актуального статуса нужно обращаться к официальным advisory Netty и Debian Security Tracker.

Признаки эксплуатации​


Специфичных индикаторов компрометации для этой уязвимости в предоставленных источниках нет.

  • Рост потребления памяти Java-процесса, работающего с HTTP/3
  • Увеличение количества активных QUIC-соединений или потоков без соответствующего роста нагрузки на приложение
  • Ошибки OutOfMemoryError в логах JVM
  • Резкое снижение пропускной способности HTTP/3-интерфейса
  • Рост размера heap до предела и последующее завершение процесса по OOM

Эти признаки неспецифичны: они могут появляться при других нагрузках, ошибках конфигурации или проблемах с памятью.

Как обнаружить атаку​


Для обнаружения атаки можно использовать мониторинг памяти и сетевой трафик.

  • Отслеживать java -Xmx и фактическое потребление heap у процесса Netty
  • Смотреть логи JVM на наличие OutOfMemoryError: Java heap space
  • Анализировать QUIC-трафик на предмет последовательных HTTP/3-запросов без Section Acknowledgments
  • Проверять рост числа активных QUIC-потоков на одном соединении
  • Использовать алерты при превышении порога потребления памяти за короткий промежуток времени

Такие методы не являются специфичными для CVE-2026-100660 и могут срабатывать на других причинах.

Как проверить свою версию​


Проверка версии Debian:

Bash:
cat /etc/debian_version
cat /etc/os-release

Проверка установленной версии пакета netty:

Bash:
apt-cache policy netty
dpkg-query -W -f='${Package} ${Version}\n' netty

Замените <имя-пакета> на фактическое имя пакета, если в системе используется другой пакет с Netty HTTP/3. В Debian пакет называется netty.

Сравните полученную версию с версиями из Debian Security Tracker: 1:4.1.48-7+deb12u2, 1:4.1.48-16, 1:4.1.48-10+deb13u1.

Исправление​


Обновите пакет netty до исправленной версии из соответствующего Debian-репозитория.

  • bookworm: обновить до 1:4.1.48-7+deb12u2
  • forky: обновить до 1:4.1.48-16
  • sid: обновить до 1:4.1.48-16
  • trixie: обновить до 1:4.1.48-10+deb13u1

Команда обновления:

Bash:
apt-get update
apt-get upgrade netty

После обновления перезапустите сервис, использующий Netty HTTP/3.

Если обновление невозможно немедленно, рассмотрите ограничение доступа к HTTP/3-интерфейсу или отключение QPACK для критических сервисов.

Временные меры защиты​


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

  • Ограничить доступ к HTTP/3-порту до доверенных клиентов
  • Отключить использование QPACK dynamic table, если конфигурация Netty это позволяет
  • Уменьшить количество одновременных QUIC-соединений на уровне балансировщика или firewalld
  • Настроить жёсткие лимиты памяти для Java-процесса и автоматическое перезапуск при OOM
  • Мониторить heap в реальном времени и останавливать сервис до критического исчерпания памяти

Эти меры не устраняют уязвимость, а только снижают скорость накопления состояния.

Как проверить устранение уязвимости​


Проверьте версию пакета после обновления:

Bash:
dpkg-query -W -f='${Package} ${Version}\n' netty
apt-cache policy netty

Убедитесь, что версия соответствует одной из исправленных версий из Debian Security Tracker.

Запустите сервис и проверьте, что HTTP/3-запросы обрабатываются без роста памяти. Мониторинг heap должен показывать стабильное потребление при нагрузке.

Если в логах JVM больше нет OutOfMemoryError и память не растёт монотонно, обновление подтверждено.

Вывод​


CVE-2026-100660 — это уязвимость DoS уровня памяти в Netty HTTP/3, затрагивающая пакет netty в Debian. Удалённый клиент может вызвать неограниченный рост heap через QPACK dynamic table без освобождения состояния при завершении потоков.

Для администратора Debian практическая задача проста: проверить версию netty, обновить до исправленной версии из соответствующего релиза и перезапустить сервис. До обновления полезно ограничить доступ к HTTP/3 и мониторить память процесса.

Официальные источники​


  1. NVD — CVE-2026-100660
  2. Debian Security Tracker — CVE-2026-100660
  3. FIRST EPSS — CVE-2026-100660

История обновлений статьи​


  • 28.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ