CVE: CVE-2026-79657
Продукт: Debian
Дата публикации: 25.08.2026
Критичность: CRITICAL
CVSS: 9.3 (4.0)
EPSS: 1,17%; процентиль 64,60%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В библиотеке NLTK, распространяемой в Debian, обнаружена критическая уязвимость удалённого выполнения кода (RCE). Проблема возникает при загрузке вредоносных pickle-артефактов, которые обходят механизм allowlist, доверяя всему пространству имён модуля.
В Debian уязвимы релизы bookworm, bullseye и trixie; исправление доступно в forky и sid. Статья описывает механику атаки, статус патчей и методы проверки системы.
Основные характеристики
Риск представляет собой удалённое выполнение произвольного кода при обработке не доверенных pickle-файлов. Атакующий может заставить систему выполнить вредоносные функции, если приложение загружает скомпрометированные модели или токенизаторы.
- Тип ошибки: CWE-502 (Deserialization of Untrusted Data).
- CVSS 4.0: 9.3 (CRITICAL). Вектор:
CVSS:4.0/AV:N/AC:L/AT:N/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.
- Условия атаки: Сеть (AV:N), низкая сложность (AC:L), отсутствие аутентификации (PR:N), отсутствие взаимодействия пользователя (UI:N).
- Эксплуатация: В каталоге CISA KEV не подтверждена.
- EPSS: 1,17% (процентиль 64,6%).
Какие продукты и версии затронуты
Уязвимость затрагивает пакет
nltk в дистрибутиве Debian. Статус исправления варьируется в зависимости от релиза.- bookworm: Статус
open. Установленная версия3.8-1. Патч отсутствует.
- bullseye: Статус
open. Установленная версия3.5-1. Патч отсутствует.
- trixie: Статус
open. Установленная версия3.9.1-2. Патч отсутствует.
- forky: Статус
resolved. Исправленная версия3.10.3-1.
- sid: Статус
resolved. Исправленная версия3.10.3-1.
Детали отслеживания доступны в Debian Security Tracker.
Причина уязвимости
Причина уязвимости кроется в реализации загрузчиков pickle с allowlist в NLTK. Механизм защиты доверяет не конкретным безопасным функциям, а всему пространству имён (namespace) модуля.
Это позволяет атакующему использовать оператор
pickle REDUCE для вызова опасных функций, которые находятся в том же пространстве имён, что и разрешённые. Например, могут быть вызваны ReppTokenizer._execute или numpy.f2py.crackfortran.myeval. В результате при десериализации выполняется произвольный код.Как работает атака
Атакующий формирует вредоносный pickle-файл, который содержит инструкции для вызова опасных функций внутри разрешённых модулей. Когда приложение NLTK загружает этот файл (например, при загрузке модели или токенизатора), механизм allowlist не блокирует вызов, так как функция находится в «доверенном» пространстве имён.
Через
pickle REDUCE вызывается функция, способная выполнить произвольные команды. Это приводит к удалённому выполнению кода (RCE) в контексте процесса, загружающего артефакт. Атака не требует аутентификации и может быть проведена удалённо.Условия успешной эксплуатации
Для успешной эксплуатации необходимо, чтобы приложение, использующее NLTK, загружало pickle-файлы из недоверенных источников.
- Доступ к загрузке: Приложение должно обрабатывать внешние pickle-артефакты (модели, токенизаторы).
- Уязвимая версия: Установлена версия NLTK до 3.10.3 (в Debian: bookworm, bullseye, trixie).
- Сетевой доступ: Атакующий должен иметь возможность передать вредоносный файл приложению (через API, загрузку данных и т.д.).
Возможный сценарий атаки
Сценарий предполагает, что сервис принимает пользовательские данные или загружает модели из внешнего хранилища. Атакующий загружает скомпрометированный pickle-файл, содержащий вызов
numpy.f2py.crackfortran.myeval.При обработке файла NLTK десериализует его. Механизм allowlist пропускает вызов, так как модуль
numpy находится в списке разрешённых. Функция myeval выполняет произвольный код, установленный атакующим. В результате атакующий получает контроль над процессом и, потенциально, над всей системой.Есть ли публичный эксплойт
В предоставленных источниках нет сведений о публичном PoC или подтверждённой эксплуатации в реальных атаках. CVE находится в статусе «Undergoing Analysis». Отсутствие данных в каталоге CISA KEV не означает, что эксплойт не существует, но подтверждённых инцидентов в открытых источниках не зафиксировано.
Признаки эксплуатации
Специфичные IOC для этой уязвимости в источниках не раскрыты. Общие признаки, которые могут указывать на эксплуатацию, включают:
- Необычные дочерние процессы, запущенные от процесса Python (например,
sh,bash,curl).
- Запросы к подозрительным внешним IP-адресам из процессов, использующих NLTK.
- Появление новых файлов в каталогах временных данных или home-каталогах пользователей.
Эти признаки неспецифичны и требуют корреляции с другими событиями.
Как обнаружить атаку
Для обнаружения атаки рекомендуется мониторинг процессов Python, использующих NLTK.
- Мониторинг процессов: Отслеживание создания дочерних процессов (execve) от Python-процессов.
- Сетевой трафик: Анализ исходящих соединений от сервисов, работающих с NLP-моделями.
- Файловая система: Контроль на создание новых исполняемых файлов в каталогах, доступных приложению.
Используйте EDR-агенты или auditd для записи событий выполнения команд.
Как проверить свою версию
Проверьте версию установленного пакета
nltk и статус системы.
Bash:
cat /etc/debian_version
cat /etc/os-release
apt-cache policy nltk
dpkg-query -W -f='${Package} ${Version}\n' nltk
Замените
<имя-пакета> на nltk в командах apt-cache и dpkg-query, если вы используете их в скриптах. Сравните версию с исправленной 3.10.3-1.Исправление
Основной способ устранения — обновление пакета
nltk до версии 3.10.3 или выше.- forky / sid: Пакет уже содержит исправление (
3.10.3-1).
- bookworm / bullseye / trixie: Патч отсутствует. Требуется ждать официального обновления от Debian Security Team или применять временные меры.
После обновления перезапустите все сервисы, использующие NLTK, чтобы изменения вступили в силу.
Временные меры защиты
Пока патч недоступен в стабильных релизах Debian, рекомендуется ограничить загрузку pickle-файлов.
- Доверенные источники: Загружайте pickle-артефакты только из проверенных, доверенных источников.
- Изоляция: Запускайте приложения, работающие с NLTK, в контейнерах или песочницах с минимальными привилегиями.
- Валидация: Если возможно, валидируйте структуру pickle-файлов перед загрузкой, хотя это не заменяет исправление.
Как проверить устранение уязвимости
После обновления убедитесь, что установлена исправленная версия.
Bash:
dpkg-query -W -f='${Package} ${Version}\n' nltk
Версия должна быть
3.10.3-1 или выше. Также проверьте, что сервисы перезагружены и используют новую библиотеку. Проведите тестовую загрузку безопасного pickle-файла для подтверждения работоспособности.Вывод
CVE-2026-79657 представляет серьёзную угрозу для систем Debian, использующих NLTK для обработки внешних pickle-данных. В bookworm, bullseye и trixie патч отсутствует, что требует немедленных мер по ограничению доверия к загрузке артефактов. Администраторам следует отслеживать статус в Debian Security Tracker и готовиться к обновлению, когда оно станет доступно.
Официальные источники
История обновлений статьи
- 27.08.2026 — Опубликована первая версия материала.
- 29.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
