Black позволяет выполнить произвольный код из-за недостаточной проверки ввода

vulnerability

Форматтер Black, приводящий Python-код к единому стилю, содержит уязвимость CVE-2026-31900. Недостаточная проверка входных данных открывает удалённому злоумышленнику путь к выполнению произвольного кода. Базовая оценка по CVSS 3.1 составляет 9,8 из 10, по CVSS 4.0 - 9,3. Банк данных угроз безопасности информации относит проблему к критическому уровню. Уязвимы версии Black до 24.3.0, а также Debian GNU/Linux 10, 11, 12 и 13 и РЕД ОС 7.3 и 8.0, где форматтер поставляется отдельным пакетом.

CVE-2026-31900 в Black и дистрибутивах Linux

Класс ошибки в бюллетене обозначен как недостаточная проверка вводимых данных (CWE-20). Способ эксплуатации описан сдержанно - манипулирование ресурсами. Вектор CVSS 3.1 выглядит так: атака по сети, сложность низкая, привилегии не нужны, взаимодействие с пользователем не требуется. Иными словами, злоумышленнику не нужно ни учётной записи на машине, ни согласия человека за клавиатурой. Достаточно, чтобы уязвимая версия форматтера обработала специально подготовленные данные.

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

Что даёт манипулирование ресурсами

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

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

Black занимает заметное место в конвейерах разработки на Python. Его запускают локально перед коммитом, в хуках репозиториев и в системах непрерывной интеграции. Через такие системы проходит код множества проектов, и compromise одного звена цепочки сборки способен затронуть артефакты, собранные на этой машине.

Обновления для Debian и РЕД ОС

Разработчики Black закрыли проблему в версии 24.3.0. Ветка Debian получила исправленные пакеты, их отслеживают через трекер безопасности проекта и расширенную поддержку LTS. Для РЕД ОС 7.3 и 8.0 обновления выложены в репозиториях для архитектур x86_64 и aarch64.

Обновите Black до 24.3.0 или более поздней версии; в дистрибутивах ставьте пакет из штатного репозитория обновлений. Проверьте версии форматтера в образах контейнеров и виртуальных окружениях: они часто отстают от системных пакетов. Если обновление пока невозможно, ограничьте круг задач, где Black обрабатывает файлы из недоверенных источников, и держите такие запуски в изолированной среде.

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

Ссылки

Комментарии: 0