CVE-2026-84445 в Debian: отказ в обслуживании gRPC-Go и статус исправлений

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

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


Уязвимость в gRPC-Go позволяет удалённому клиенту завершить процесс сервера, отправив RPC без заголовков :authority и Host. В Debian пакет golang-google-grpc уязвим во всех поддерживаемых релизах, исправление ещё не выпущено. Статья разбирает механику атаки, условия эксплуатации и текущий статус в дистрибутиве.

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


Риск представляет собой отказ в обслуживании (DoS): удалённый атакующий может принудительно завершить процесс gRPC-сервера, использующего xDS-роутинг. Уязвимость затрагивает только серверы, созданные через xds.NewGRPCServer(), и не влияет на конфигурации с обязательным mTLS или ALTS.

  • Тип ошибки: CWE-129 (Index Out-of-bounds), CWE-248 (Uncaught Exception).
  • CVSS 4.0: 8.7 (HIGH). Вектор: 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.
  • Условия атаки: Сеть (AV:N), низкая сложность (AC:L), отсутствие требований к привилегиям (PR:N) и взаимодействию пользователя (UI:N).
  • Эксплуатация: Нет подтверждений массового использования в CISA KEV.
  • EPSS: 0,69% (процентиль 50,74%).

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


В Debian уязвимость затрагивает исходный пакет golang-google-grpc. Все текущие и будущие релизы Debian находятся в статусе «open» (не исправлено), приоритет не назначен.

  • bookworm: версия 1.33.3-2 (уязвима, так как < 1.82.2).
  • trixie: версия 1.64.0-7 (уязвима, так как < 1.82.2).
  • forky: версия 1.81.1-1 (уязвима, так как < 1.82.2).
  • sid (unstable): версия 1.81.1-1 (уязвима, так как < 1.82.2).

Исправление в upstream доступно в версиях 1.82.2 и 1.83.2, но в репозиториях Debian пакет с этими версиями ещё не опубликован.

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


Причина уязвимости кроется в несогласованности обработки заголовков HTTP/2 в двух компонентах gRPC-Go. Файл internal/transport/http2_server.go принимает RPC, в котором отсутствуют как заголовок :authority, так и Host.

Затем функция RouteAndProcess в internal/xds/server/routing.go предполагает, что значение authority обязательно существует. Она пытается индексировать пустой срез (slice), что приводит к панике index-out-of-bounds. Эта паника не перехватывается обработчиком ошибок конкретного RPC (per-RPC goroutine), что вызывает аварийное завершение всего процесса сервера.

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


Атакующий должен установить транспортное соединение с сервером. В конфигурациях без шифрования или с обычным TLS (без проверки сертификатов клиента) аутентификация не требуется для отправки запроса.

После установления соединения атакующий отправляет RPC-запрос, намеренно исключив заголовки :authority и Host. Сервер принимает запрос на транспортном уровне, но при маршрутизации через xDS-интерцептор происходит обращение к пустому значению authority. Возникает паника, которая не обрабатывается локально для этого запроса, и процесс сервера завершается.

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


Для успешной эксплуатации необходимо соблюдение следующих условий:

  • Сервер создан с использованием функции xds.NewGRPCServer().
  • Используется версия gRPC-Go, меньшая 1.82.2 или 1.83.2.
  • Атакующий имеет сетевой доступ к порту gRPC-сервера.
  • Конфигурация не требует строгих mTLS или ALTS (в этих случаях атакующему нужны валидные транспортные сертификаты).

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


Сценарий атаки начинается со сканирования сети в поисках открытых портов gRPC. Обнаружив целевой сервер, атакующий устанавливает TCP-соединение и инициирует HTTP/2-рукопожатие.

Далее отправляется сформированный RPC-запрос без заголовков :authority и Host. Сервер обрабатывает запрос, доходит до функции маршрутизации, где происходит паника.

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

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


Публичный эксплойт в виде готового PoC или подтверждённой эксплуатации в реальных атаках в предоставленных источниках не указан. Однако техническое описание уязвимости и коммиты с исправлением доступны в репозитории gRPC-Go. Отсутствие данных об эксплуатации не означает, что эксплойт не существует, но подтверждённых инцидентов в CISA KEV нет.

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


Специфичные IOC (индикаторы компрометации) для этой уязвимости в источниках не раскрыты. Можно использовать общие, неспецифичные признаки:

  • Внезапное завершение процесса gRPC-сервера.
  • Записи в логах Go-приложения о панике index out of range.
  • Аномальные запросы в HTTP/2-трафике без заголовка :authority (если ведётся логирование на уровне прокси).

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


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

  • Мониторинг логов приложений на наличие паник Go, особенно связанных с index out of range.
  • Контроль доступности gRPC-сервисов через health-checks.
  • Анализ сетевых журналов на предмет аномальных HTTP/2-запросов, если это поддерживается инфраструктурой.
  • Проверка статусов процессов: если gRPC-сервер упал без причины, это может быть признаком эксплуатации.

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


Для проверки установленной версии пакета в Debian используйте следующие команды. Замените <имя-пакета> на golang-google-grpc.

Bash:
cat /etc/debian_version
cat /etc/os-release
apt-cache policy golang-google-grpc
dpkg-query -W -f='${Package} ${Version}\n' golang-google-grpc

Сравните полученную версию с уязвимыми: все версии < 1.82.2 и < 1.83.2 уязвимы. В Debian на данный момент исправленных версий нет.

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


Официального исправления в репозиториях Debian пока нет. Все релизы (bookworm, trixie, forky, sid) находятся в статусе «open».

  • Отслеживайте обновления в Debian Security Tracker.
  • При выходе исправленного пакета выполните обновление: apt-get update && apt-get upgrade golang-google-grpc.
  • Если возможно, рассмотрите сборку приложения из исходников с использованием gRPC-Go версии 1.82.2 или 1.83.2, если это допустимо политикой безопасности.

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


Пока исправление не выпущено, можно применить следующие временные меры:

  • Переведите gRPC-серверы в режим строгих mTLS или ALTS, если это позволяет архитектура. Это потребует от атакующего валидных сертификатов.
  • Ограничьте сетевой доступ к gRPC-портам доверенными IP-адресами через firewall.
  • Используйте балансировщик нагрузки или прокси, который может отбрасывать запросы с некорректными заголовками HTTP/2 до их попадания в gRPC-сервер.
  • Настройте автоматический перезапуск процесса (systemd, supervisor), чтобы минимизировать время простоя при атаке.

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


После установки исправленного пакета (когда он появится) выполните:

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

Убедитесь, что версия соответствует 1.82.2 или выше (для ветки 1.82) или 1.83.2 и выше (для ветки 1.83). Перезапустите gRPC-сервис и проверьте его работоспособность. Проведите тестовый запрос с отсутствующими заголовками, чтобы убедиться, что сервер не падает (в безопасной среде).

Вывод​


CVE-2026-84445 представляет собой серьёзную угрозу отказу в обслуживании для gRPC-серверов, использующих xDS-роутинг. В Debian пакет golang-google-grpc уязвим во всех релизах, и исправление пока не выпущено.

Администраторам следует ограничить сетевой доступ, рассмотреть mTLS и отслеживать обновления в Debian Security Tracker. Механика атаки проста, поэтому риск реален для открытых сервисов.

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


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

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


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