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 до публикации исправления.
Официальные источники
История обновлений статьи
- 05.10.2026 — Опубликована первая версия материала.
- 07.10.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
