Угрозы

RCE в библиотеке ply: критическая уязвимость (CVE-2025-56005) угрожает Python-проектам

Артем Сафонов
By Артем Сафонов , Аналитик угроз
RCE в библиотеке ply: критическая уязвимость (CVE-2025-56005) угрожает Python-проектам
Image by Anonhaven

В Python-библиотеке PLY (Python Lex-Yacc) обнаружили критическую уязвимость, которая может приводить к выполнению произвольного кода. Ей присвоили CVE-2025-56005 и оценку 9,8 по CVSS.

Проблема связана с параметром picklefile в функции yacc(). Этот параметр принимает файл .pkl и загружает его через pickle.load() без проверки. А pickle по своей природе небезопасен для недоверенных данных: внутри такого файла можно спрятать логику, которая выполнится при десериализации.

Отдельный неприятный момент, который отмечают в описании CVE: параметр не упоминается в официальной документации и в репозитории, но присутствует в версии на PyPI. Это делает риск менее заметным для тех, кто воспринимает PLY как старую, стабильную зависимость, которая просто работает.

Это не история про то, что любой проект с PLY автоматически уязвим. Риск появляется, когда приложение реально использует yacc(picklefile=...) и при этом путь к .pkl может контролироваться извне, например через загружаемый файл, конфиг, параметр окружения или общую директорию, куда пишут разные процессы. В таком случае атакующему достаточно подсунуть вредоносный pickle-файл.

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

  • Проверьте код и CI/CD на использование picklefile в yacc(). Если это есть, уберите параметр или жестко зафиксируйте путь на файл, который не может быть изменен извне.
  • Не загружайте таблицы парсинга из пользовательских или внешне доступных мест. Любой .pkl нужно считать потенциально опасным.
  • Если вы поддерживаете инструменты, которые принимают грамматики или входные файлы от пользователей, убедитесь, что они не могут повлиять на загрузку pickle-таблиц.
CVE-2025-56005 PLY Pickle Python RCE Уязвимости