CVE-2026-100660 в Debian: DoS через неограниченную память QPACK и исправление netty

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

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


Уязвимость CVE-2026-100660 затрагивает HTTP/3-кодек Netty в Debian. Проблема позволяет удалённому клиенту вызывать необратимый рост памяти на сервере, использующем netty-codec-http3 версии 4.2.0.Final до 4.2.17.Final. В Debian пакет netty был исправлен в release bookworm, forky, sid и trixie.

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


Риск состоит в удалённом отказе от службы из-за неограниченного накопления состояния QPACK-энкодера на стороне сервера HTTP/3.

  • Тип ошибки: CWE-770 — Memory Exhaustion
  • 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
  • CVSS score: 8.7 (HIGH)
  • Вектор атаки: удалённый, без авторизации, без взаимодействия пользователя
  • Факт эксплуатации: в источниках не подтверждено
  • EPSS: нет данных

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


Затронут пакет netty в Debian.

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

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


QpackEncoder в netty-codec-http3 хранит очередь и динамический индекс таблицы для каждого закодированного секционного поля, ссылающегося на QPACK dynamic table.

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

Нет ограничений на количество отслеживаемых потоков, секционных полей и удерживаемых байтов. Это приводит к неограниченному росту кучи Java-процесса, если клиент не отправляет обязательные подтверждения.

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


Удалённый HTTP/3-клиент подключается к серверу через QUIC.

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

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

Поток данных: QUIC stream ID → ключ в QpackEncoder → удержание очереди и index tracker → рост heap → исчерпание памяти сервера.

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


Для успешной эксплуатации нужны:

  • Сервер с HTTP/3: должен использовать netty-codec-http3 версии 4.2.0.Final до 4.2.17.Final
  • Доступ к QUIC: удалённому клиенту нужен сетевой доступ к порту или сервису, принимающему QUIC/HTTP/3
  • Отсутствие авторизации: атака не требует учётных данных
  • Нестабильность памяти: сервер должен иметь ограниченную память Java-процесса, чтобы рост heap привёл к отказу от службы

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


Сценарий описывает последовательность действий удалённого клиента.

  1. Клиент устанавливает QUIC-соединение с HTTP/3-сервером Debian.
  2. Клиент объявляет QPACK dynamic-table capacity и подтверждает вставку таблицы.
  3. Сервер начинает использовать динамические индексы для заголовков ответа.
  4. Клиент отправляет первый запрос, создавая поток QUIC.
  5. Сервер сохраняет состояние QpackEncoder для этого потока.
  6. Клиент завершает HTTP/3-поток, но не отправляет Section Acknowledgment.
  7. Состояние остаётся в памяти сервера.
  8. Клиент повторяет шаги 4–7 последовательно по одному QUIC-соединению.
  9. Куча Java-процесса растёт с каждым новым потоком.
  10. При исчерпании памяти сервис перестаёт обрабатывать запросы.

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


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

Отсутствие сведений не означает, что эксплойт не существует. В официальных данных только указано, что проблема исправлена в netty 4.2.18.Final и что механизм позволяет удалённому клиенту вызывать DoS через HTTP/3-соединение.

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


Специфичных IOC для CVE-2026-100660 в источниках не подтверждено.

Ниже приведены общие, неспецифичные точки контроля:

  • Рост памяти Java-процесса Netty на сервере с HTTP/3
  • Высокое количество одновременных QUIC-соединений или HTTP/3-запросов от одного IP
  • Отсутствие Section Acknowledgment в трафике QPACK, если доступен анализ протокола
  • Ошибки OutOfMemoryError в логах Java-процесса Netty

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


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

  • Мониторинг памяти: отслеживать рост heap у процесса Netty на сервере с HTTP/3
  • Сетевой анализ: фиксировать большое количество QUIC-соединений или HTTP/3-запросов от одного источника
  • Логи Java: искать OutOfMemoryError, GC pressure и сообщения о нехватке памяти в процессе Netty
  • Проверка версий: убедиться, что установлен netty из исправленного репозитория Debian

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


Для проверки версии пакета netty в Debian используйте:

Bash:
cat /etc/debian_version

Bash:
apt-cache policy <имя-пакета>

Замените <имя-пакета> на имя проверяемого пакета, например netty.

Bash:
dpkg-query -W -f='${Package} ${Version}\n' <имя-пакета>

Сравните полученную версию с исправленными версиями из Debian Security Tracker: 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.

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


Исправление в Debian выполняется обновлением пакета netty до версий из security-repositories.

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

После обновления проверьте, что сервис Netty перезапущен и использует новый пакет.

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


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

  • Ограничить доступ к HTTP/3: отключить QUIC/HTTP/3 на уровне сетевого фильтра или reverse proxy, если это допустимо бизнесом
  • Ограничить количество одновременных потоков: настроить лимиты в Netty или на уровне приложения, если конфигурация позволяет
  • Мониторинг памяти: включить алерты на рост heap и OutOfMemoryError для быстрого обнаружения атаки
  • Сократить время жизни соединений: использовать таймауты QUIC-соединений, чтобы уменьшить количество одновременно удерживаемых потоков

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


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

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

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

Проверьте статус сервиса Netty и перезапустите его, если это необходимо.

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

Вывод​


CVE-2026-100660 — удалённый DoS через неограниченное удержание состояния QPACK в netty-codec-http3. В Debian проблема исправлена в release bookworm, forky, sid и trixie.

Главный риск возникает на серверах с HTTP/3, использующих netty версии 4.2.0.Final до 4.2.17.Final. Обновление пакета netty до версий из security-repositories устраняет проблему. До обновления рекомендуется ограничить доступ к QUIC и мониторить память Java-процесса.

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


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

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


  • 28.09.2026 — Опубликована первая версия материала.
  • 29.09.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ