В Apache Thrift 0.25.0 исправили около 60 CVE: переполнения кучи в C++ и отказ в обслуживании почти во всех языковых библиотеках

Коротко о главном
Apache Software Foundation выпустила Apache Thrift 0.25.0 и 2 октября 2026 года раскрыла пачку из примерно 60 CVE во всех версиях до 0.25.0. Две уязвимости критические (CVSS 9.2) — переполнения кучи в C++, остальные в основном позволяют уронить сервис одним пакетом. Атак пока не зафиксировано, решение одно — обновить библиотеку.
Thrift — RPC-фреймворк и формат сериализации, на котором годами строят обмен между микросервисами, а ещё он сидит внутри Hive Metastore, HBase Thrift-сервера и множества внутренних бэкендов. Если ваш сервис принимает Thrift-запросы снаружи периметра или от партнёров, начните с инвентаризации таких точек вместе с командой информационной безопасности.
Главная сложность этого обновления не в самих патчах, а в том, что Thrift редко подключают напрямую: чаще он приезжает транзитивной зависимостью и сгенерированным кодом. Поэтому обновление — это задача для владельцев сервисов и backend-разработки, а не только для администраторов.
Что именно исправлено в Apache Thrift 0.25.0
Релиз анонсировал в рассылке проекта Йенс Гейер (Jens Geyer) 30 сентября, а 2 октября записи об уязвимостях с формулировкой «affects Apache Thrift before 0.25.0» появились в NVD. По данным NVD, затронуты практически все реализации: C++, c_glib, Java и Java ME, Go, Python, PHP, Ruby, Perl, Lua, Erlang, Dart, Delphi, netstd и Node.js.
- CVE-2026-91135, CVSS 9.2 — переполнение кучи в C++ THeaderTransport. Если приложение включает ZLIB-сжатие исходящих фреймов, сжатый фрейм копируется в буфер записи без проверки размера. Несжимаемые данные от удалённой стороны при «сжатии» растут, и запись уходит за границу буфера.
- CVE-2026-83632, CVSS 9.2 — сочетание неограниченного выделения ресурсов, целочисленного переполнения и переполнения кучи.
- CVE-2026-93925 и CVE-2026-82459 — переполнение стека в C++ THeaderProtocol и запись за границы буфера в 32-битной сборке THeaderTransport.
- CVE-2026-85086, -85087, -85088 — некорректная проверка TLS-сертификатов в Perl, Python, C++ и D: при определённых настройках клиент может принять чужой сертификат.
- CVE-2026-86535 и CVE-2026-86536 — prototype pollution в Node.js (TJSONProtocol) и во всех JS-библиотеках; для второй ASF прямо требует не только обновиться, но и перегенерировать JS-код.
- Десятки CVE с CVSS 8.2–8.7 — неограниченная рекурсия, бесконечные циклы, «сжатые бомбы» в Go, неконтролируемые аллокации памяти и непойманные исключения, которые роняют процесс сервера.
Насколько это опасно на практике
CISA в своей оценке для критической CVE-2026-91135 отмечает: эксплуатации пока нет, автоматизировать атаку нельзя, но технический ущерб — полный. Это типичная картина для библиотечных уязвимостей: срочности «патчить ночью» нет, но и откладывать на квартал не стоит.
Опаснее всего массовые DoS-дефекты. Thrift-протоколы бинарные, и многие сервисы доверяют длинам и глубине вложенности, которые прислал клиент. Один специально собранный запрос с огромным заявленным размером коллекции или бесконечной вложенностью структур заставляет сервер выделить гигабайты памяти или уйти в рекурсию — и под оркестратором это выглядит как череда перезапусков подов без видимой причины.
Отдельный сигнал — даунстрим. Ещё 28 сентября IBM выпустила бюллетень для DataPower Gateway, где закрыла 11 более ранних CVE в Thrift. Значит, следом стоит ждать обновлений от вендоров, которые встраивают Thrift в свои продукты, — и их тоже придётся отслеживать.
Как найти Thrift в своих сервисах и обновиться
Первый шаг — понять, где Thrift вообще есть. Проверьте SBOM или выполните поиск по манифестам: libthrift в Maven/Gradle, thrift в pip, npm, Go-модуле github.com/apache/thrift, Composer, RubyGems и Conan. Не забудьте про контейнерные образы и сторонние продукты, где библиотека зашита внутрь.
Второй шаг — обновить библиотеку до 0.25.0 во всех языках, где она используется, и перегенерировать код из IDL тем же компилятором 0.25.0. Смешивать новый рантайм со старым сгенерированным кодом — частый источник неожиданных поломок.
Третий шаг — снизить экспозицию, пока обновление в пути. Не выставляйте Thrift-эндпоинты в интернет, закройте их mTLS или сетевыми политиками, задайте явные лимиты на размер фрейма и глубину рекурсии там, где их позволяет транспорт, и отключите ZLIB-трансформацию в C++ THeaderTransport, если она вам не нужна.
Четвёртый шаг — прогнать регресс. Исправления затрагивают разбор протокола и транспорты, поэтому нагрузочные и интеграционные тесты межсервисного обмена после обновления обязательны.
Часто задаваемые вопросы
Затронута ли моя версия? По данным NVD, уязвимы все версии Apache Thrift до 0.25.0 — независимо от языка. Исправление есть только в 0.25.0.
Есть ли активные атаки? На 5 октября 2026 года сведений об эксплуатации нет, ни одна из этих CVE не внесена в каталог CISA KEV.
Можно ли обновить только серверную часть? Клиентские уязвимости тоже есть — например, ошибки проверки TLS-сертификатов. Обновлять стоит обе стороны.
Мы используем Thrift только внутри кластера — это безопасно? Риск ниже, но не нулевой: скомпрометированный или неисправный соседний сервис способен отправить вредный запрос. Внутренние эндпоинты тоже нужно обновить.
Источники
Apache Thrift user mailing list — [ANNOUNCE] Apache Thrift 0.25.0 released, 30 сентября 2026 года (первоисточник).
NIST NVD — CVE-2026-91135, опубликовано 2 октября 2026 года.
NIST NVD — CVE-2026-83632, опубликовано 2 октября 2026 года.
Apache Thrift — CHANGES.md, список изменений релиза.
IBM — Security Bulletin: IBM DataPower Gateway affected by multiple CVEs in Apache Thrift, 28 сентября 2026 года.
Микросервисы на Thrift и непонятно, где старые версии?
Найдём все копии библиотеки в коде, образах и сторонних продуктах, обновим рантайм и сгенерированный код, закроем RPC-эндпоинты лимитами и mTLS, проверим регрессом межсервисный обмен.