CVE-2026-91135 в Debian: переполнение кучи в Apache Thrift C++ THeaderTransport, затронутые релизы и защита

CVE: CVE-2026-91135
Продукт: Debian
Дата публикации: 02.10.2026
Критичность: CRITICAL
CVSS: 9.2 (4.0)
EPSS: 0,46%; процентиль 37,83%
CISA KEV: нет подтверждения в каталоге CISA KEV

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


CVE-2026-91135 — критическая уязвимость переполнения буфера в куче (CWE-122) в C++-компоненте THeaderTransport библиотеки Apache Thrift.

Ошибка возникает, когда приложение включает ZLIB-трансформацию отправляемых кадров: функция THeaderTransport::transform() копирует сжатый кадр в буфер записи без проверки, помещается ли он в буфер.

В Debian пакет thrift уязвим во всех актуальных релизах (bookworm, trixie, forky, sid). Исправленная версия 0.25.0 в репозиториях Debian пока отсутствует, статус в трекере безопасности Debian — open.

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


Суть риска: сервис на Apache Thrift C++, использующий ZLIB-трансформацию кадров, может выйти за границы кучевого буфера при обработке данных, которые плохо сжимаются, — в том числе данных, полученных от удалённого участника. Ключевые параметры:

  • Тип ошибки: CWE-122 — heap-based buffer overflow; при переполнении происходит запись за границу буфера, а для больших кадров — ещё и чтение.
  • Затронутый компонент: THeaderTransport::transform() в C++-реализации Apache Thrift.
  • Условие срабатывания: включённая ZLIB-трансформация отправляемых кадров; данные, плохо сжимаемые zlib, увеличиваются в размере.
  • CVSS v4.0: 9.2, CRITICAL, вектор CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/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 — сетевой вектор, без привилегий и взаимодействия с пользователем, но с повышенной сложностью условий атаки (AT:P). Оценка вендорская ([email protected]).
  • EPSS: 0,46% (процентиль 0,37833) — текущая оценка вероятности эксплуатации в ближайшие 30 дней невысока.
  • CISA KEV: в каталоге подтверждений активной эксплуатации нет.
  • Исправление: Apache Thrift 0.25.0; в репозиториях Debian исправленная версия на момент данных не опубликована.

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


Уязвимость затрагивает Apache Thrift до версии 0.25.0 (все более ранние версии) в части C++-реализации с включённой ZLIB-трансформацией кадров.

По данным Debian Security Tracker, в Debian уязвим исходный пакет thrift во всех отслеживаемых релизах. Статус исправления — open, исправленная версия не назначена:

  • bookworm (stable): версия в репозитории 0.17.0-2 — уязвима.
  • trixie: версия в репозитории 0.19.0-4 — уязвима.
  • forky: версия в репозитории 0.23.0-3 — уязвима.
  • sid (unstable): версия в репозитории 0.24.0-2 — уязвима.

Трекер помечает scope как local, зарегистрирован баг Debian №1150191. Это означает, что по оценке Debian уязвимость применима к локальному контексту использования пакета; влияние на конкретные бинарные пакеты, собранные из исходника thrift, в доступных источниках не детализировано.

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


Ошибка находится в методе THeaderTransport::transform() C++-реализации Apache Thrift. Метод применяет трансформации (здесь — ZLIB-сжатие) к кадрам протокола header transport перед записью.

Проблема в отсутствующей проверке: перед копированием сжатого кадра в буфер записи метод не убеждается, что результат сжатия помещается в выделенный буфер. Код полагается на типичное свойство zlib — сжатие уменьшает объём данных, — но для произвольного входа это свойство не гарантировано.

Ключевой момент: данные, которые плохо поддаются сжатию (например, уже сжатый или высокоэнтропийный контент, в том числе полученный от удалённого участника соединения), при ZLIB-обработке могут вырасти в размере. Копирование тогда записывает за конец кучевого буфера на величину, растущую с размером кадра, а для больших кадров происходит ещё и чтение за границей буфера трансформации.

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


Путь данных выглядит так: приложение на Apache Thrift C++ отправляет кадр через THeaderTransport с включённой ZLIB-трансформацией. Кадр поступает в transform(), сжимается zlib и копируется в write buffer. Проверка вместимости отсутствует, поэтому размер записи определяется не размером буфера, а размером сжатого выхода.

Если содержимое кадра не сжимается — например, это данные, которые удалённая сторона ранее передала приложению и которые теперь пересылаются обратно, — сжатый выход оказывается больше исходного буфера. Запись выходит за границы кучевого выделения на величину, растущую с размером кадра. Для больших кадров дополнительно возникает чтение за границей буфера трансформации.

Доступные источники описывают саму ошибку переполнения, но не раскрывают последствий эксплуатации (выполнение кода, отказ в обслуживании, утечка памяти) — делать такие выводы только по описанию нельзя. CVSS-оценка от Apache указывает на сетевой вектор с высокими показателями конфиденциальности, целостности и доступности, однако это вендорская оценка, а не подтверждённый результат атаки.

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


Подтверждённые источниками условия:

  • Приложение использует C++-реализацию Apache Thrift версии до 0.25.0.
  • Включена ZLIB-трансформация для отправляемых кадров — это опция конфигурации транспорта, а не поведение по умолчанию для всех приложений.
  • Отправляемый кадр содержит данные, которые при zlib-сжатии увеличиваются в размере.

Из вендорского CVSS-вектора следует, что атака по этой оценке возможна по сети, не требует привилегий или взаимодействия с пользователем, но имеет повышенную сложность условий атаки (AT:P). Требуется ли, чтобы атакующий управлял содержимым кадра напрямую или через данные, отражённые приложением, в описании прямо не уточнено — указано лишь, что плохо сжимающиеся данные могут быть контентом, предоставленным удалённым участником.

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


Разумный сценарий, следующий из описания уязвимости (это защитный вывод, а не задокументированная атака): клиент подключается к сервису на Apache Thrift C++ и передаёт ему высокоэнтропийные данные — например, уже сжатый файл или зашифрованный блоб. Сервис в рамках своей логики возвращает или пересылает эти данные в ответе, кадр которого сжимается ZLIB-трансформацией.

Поскольку такие данные при сжатии растут, сжатый кадр превышает write buffer, и transform() записывает за границы кучевого выделения. Размер выхода за границы управляется размером кадра, то есть атакующий косвенно влияет на объём повреждения кучи через размер переданных данных.

Чем именно это заканчивается на практике — повреждением соседних объектов кучи, аварийным завершением процесса или чем-то иным, — из доступных источников не следует; результат зависит от распределения памяти в конкретном приложении.

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


В пакете доказательств нет сведений о публичном PoC, техническом разборе с деталями эксплуатации или подтверждённых случаях реальных атак. Отсутствие каталогизации в CISA KEV и низкий EPSS (0,46%) согласуются с этим, но не доказывают отсутствие эксплойта: публичные материалы могли не попасть в собранные источники. Статус следует считать неопределённым и отслеживать обновления.

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


Специфичные индикаторы компрометации для CVE-2026-91135 в доступных источниках не опубликованы. Единственный косвенный признак, следующий из описания, — аварийное завершение или аномальное поведение процессов, использующих Apache Thrift C++ с ZLIB-трансформацией, но он неспецифичен и характерен для множества ошибок памяти.

Общие (неспецифичные) точки контроля:

  • Журналы сервисов, использующих thrift: падения процессов, сообщения о segmentation fault.
  • Сетевой периметр: аномально крупные или повторяющиеся запросы к Thrift-эндпоинтам, особенно с высокоэнтропийными полезными нагрузками.
  • Системные журналы ядра (записи о segfault, срабатывание oom-killer) на хостах с уязвимыми версиями пакета.

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


Обнаружение строится на двух уровнях: инвентаризация уязвимых версий и мониторинг неспецифичных признаков.

Для инвентаризации проверьте установленные версии пакета thrift на хостах Debian (команды приведены в разделе проверки версии) и определите, используют ли ваши приложения C++-библиотеку Apache Thrift с включённой ZLIB-трансформацией кадров — именно эта конфигурация делает уязвимость применимой.

Для поведенческого мониторинга доступны только общие точки, поскольку специфичных IOC нет: отслеживайте аварийные завершения Thrift-сервисов, записи о segfault в процессах, связанных с thrift, и нетипично большие входящие потоки данных к Thrift-эндпоинтам. Эти признаки не подтверждают эксплуатацию CVE-2026-91135 и требуют ручного анализа контекста.

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


Сначала определите релиз Debian, затем версию установленного пакета. Замените <имя-пакета> на фактическое имя — для этой уязвимости это thrift или имя конкретного бинарного пакета (библиотеки), установленного в системе.

bash

Версия ОС​


cat /etc/debian_version
cat /etc/os-release

Версия пакета (замените <имя-пакета> на thrift или соответствующий пакет)​


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

Сверьте результат с версиями из Debian Security Tracker: 0.17.0-2 (bookworm), 0.19.0-4 (trixie), 0.23.0-3 (forky), 0.24.0-2 (sid). Все перечисленные версии уязвимы; исправленная версия 0.25.0 в репозиториях Debian на момент данных не опубликована.

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


Полное исправление — обновление Apache Thrift до версии 0.25.0, в которой устранено переполнение при ZLIB-трансформации. В Debian на момент данных исправленный пакет не выпущен ни в один релиз: статус open, urgency not yet assigned, баг №1150191.

Рекомендуемые действия:

  • Отслеживайте Debian Security Tracker и анонсы debian-security-announce на предмет выхода исправленного пакета thrift для вашего релиза.
  • После публикации обновления установите его штатными средствами: apt update && apt upgrade для соответствующего пакета.
  • Если приложение собирает Apache Thrift из исходного кода, обновите используемую версию до 0.25.0 независимо от пакетной базы Debian.
  • Если обновление библиотеки невозможно в короткие сроки, рассмотрите временное отключение ZLIB-трансформации в конфигурации Thrift-транспорта (см. раздел временных мер).

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


Поскольку исправленный пакет в Debian пока отсутствует, единственная временная мера, напрямую устраняющая условие срабатывания, — отключение ZLIB-трансформации для отправляемых кадров в приложениях на Apache Thrift C++. Это убирает путь, по которому происходит переполнение, ценой отказа от сжатия трафика.

Дополнительные организационные меры (защитный вывод, не специфичные для этой CVE): ограничьте сетевой доступ к Thrift-эндпоинтам доверенными клиентами и ограничьте максимальный размер обрабатываемых кадров на уровне приложения, если такая опция доступна, — переполнение растёт с размером кадра.

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


После выхода исправленного пакета Debian проверьте:

  • Версию установленного пакета командой dpkg-query -W -f='${Package} ${Version}\n' thrift (или соответствующего пакета) — она должна быть не ниже исправленной, опубликованной в трекере Debian для вашего релиза.
  • Отсутствие открытого статуса уязвимости для вашего релиза на странице Debian Security Tracker.
  • Если вы отключали ZLIB-трансформацию как временную меру — после обновления до 0.25.0 её можно включить обратно.
  • Работоспособность Thrift-сервисов после обновления, включая обмен кадрами между клиентом и сервером.

Вывод​


CVE-2026-91135 — критическая ошибка переполнения кучи в C++-компоненте THeaderTransport Apache Thrift, возникающая при ZLIB-сжатии кадров без проверки вместимости буфера.

Для пользователей Debian ситуация осложняется тем, что все актуальные релизы содержат уязвимые версии пакета thrift, а исправление (0.25.0) в репозиториях пока не опубликовано.

Практический план до выхода исправленного пакета:

  • Инвентаризируйте системы с пакетом thrift и определите, используется ли ZLIB-трансформация кадров.
  • При возможности отключите ZLIB-трансформацию как временную меру.
  • Ограничьте сетевой доступ к Thrift-сервисам доверенными клиентами.
  • Отслеживайте Debian Security Tracker до публикации исправления.

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


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

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


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