Бомба замедленного действия тикала в самых надёжных проектах более десяти лет.
Наследие старых инструментов развёртывания снова привлекло внимание специалистов: сразу в нескольких пакетах PyPI обнаружены устаревшие Python-скрипты, создающие риск подмены домена и последующей цепочки заражений. Поводом для анализа стала находка компании ReversingLabs, которая изучала код автоматизации сборки и обнаружила, что многие пакеты до сих пор содержат старый файл «bootstrap.py», использовавшийся вместе с инструментом zc.buildout.
Этот файл предназначался для подготовки окружения Buildout и умел загружать установщик библиотеки Distribute — короткоживущего ответвления от Setuptools. Скрипт получал «distribute_setup.py» с ресурса python-distribute.org, который с 2014 года выставлен на продажу и используется для показа рекламы. Разработчики когда-то добавили эту опцию, чтобы упростить переход с Setuptools на более свежие инструменты, но позже функциональность Distribute была полностью перенесена обратно, а сам проект перестал развиваться.
Несмотря на прекращение поддержки, унаследованный механизм остался в ряде пакетов. Среди них tornado, pypiserver, slapos.core, roman, xlutils и testfixtures. В ReversingLabs подчёркивают, что часть проектов уже удалили проблемный файл, но в slapos.core он присутствует до сих пор, а также встречается в актуальных версиях разработки Tornado. Наличие скрипта опасно тем, что злоумышленник, получив контроль над доменом python-distribute.org, сможет подменить устанавливаемые файлы и внедрить вредоносный код.
Дополнительным фактором риска стало то, что «bootstrap.py» написан для Python 2 и не запускается под Python 3 без доработки. Однако сам факт сохранения файла создаёт лишнюю точку атаки: подмена кода возможна, если разработчик случайно или по ошибке выполнит этот скрипт. Аналогичные инциденты уже происходили в экосистеме JavaScript. Так, в 2023 году злоумышленник получил доступ к незанятому облачному ресурсу, связанному с пакетом fsevents, и распространил вредоносные двоичные файлы, что получило идентификатор CVE-2023-45311 с высоким уровнем опасности.
Параллельно с этим HelixGuard сообщила о другой угрозе: в PyPI выявлен вредоносный пакет «spellcheckers», замаскированный под средство для проверки орфографии с использованием OpenAI Vision. Код подключался к внешнему серверу, загружал дополнительный модуль и разворачивал троян удалённого доступа. Пакет был опубликован 15 ноября 2025 года пользователем, известным под именем Леон, и успел собрать почти тысячу загрузок, прежде чем его удалили.
Проблемы вокруг PyPI вновь указывают на то, что оставшиеся без контроля старые решения в цепочке поставок ПО могут быстро превратиться в точку входа для атакующих, если ими воспользоваться в нужный момент.
Наследие старых инструментов развёртывания снова привлекло внимание специалистов: сразу в нескольких пакетах PyPI обнаружены устаревшие Python-скрипты, создающие риск подмены домена и последующей цепочки заражений. Поводом для анализа стала находка компании ReversingLabs, которая изучала код автоматизации сборки и обнаружила, что многие пакеты до сих пор содержат старый файл «bootstrap.py», использовавшийся вместе с инструментом zc.buildout.
Этот файл предназначался для подготовки окружения Buildout и умел загружать установщик библиотеки Distribute — короткоживущего ответвления от Setuptools. Скрипт получал «distribute_setup.py» с ресурса python-distribute.org, который с 2014 года выставлен на продажу и используется для показа рекламы. Разработчики когда-то добавили эту опцию, чтобы упростить переход с Setuptools на более свежие инструменты, но позже функциональность Distribute была полностью перенесена обратно, а сам проект перестал развиваться.
Несмотря на прекращение поддержки, унаследованный механизм остался в ряде пакетов. Среди них tornado, pypiserver, slapos.core, roman, xlutils и testfixtures. В ReversingLabs подчёркивают, что часть проектов уже удалили проблемный файл, но в slapos.core он присутствует до сих пор, а также встречается в актуальных версиях разработки Tornado. Наличие скрипта опасно тем, что злоумышленник, получив контроль над доменом python-distribute.org, сможет подменить устанавливаемые файлы и внедрить вредоносный код.
Дополнительным фактором риска стало то, что «bootstrap.py» написан для Python 2 и не запускается под Python 3 без доработки. Однако сам факт сохранения файла создаёт лишнюю точку атаки: подмена кода возможна, если разработчик случайно или по ошибке выполнит этот скрипт. Аналогичные инциденты уже происходили в экосистеме JavaScript. Так, в 2023 году злоумышленник получил доступ к незанятому облачному ресурсу, связанному с пакетом fsevents, и распространил вредоносные двоичные файлы, что получило идентификатор CVE-2023-45311 с высоким уровнем опасности.
Параллельно с этим HelixGuard сообщила о другой угрозе: в PyPI выявлен вредоносный пакет «spellcheckers», замаскированный под средство для проверки орфографии с использованием OpenAI Vision. Код подключался к внешнему серверу, загружал дополнительный модуль и разворачивал троян удалённого доступа. Пакет был опубликован 15 ноября 2025 года пользователем, известным под именем Леон, и успел собрать почти тысячу загрузок, прежде чем его удалили.
Проблемы вокруг PyPI вновь указывают на то, что оставшиеся без контроля старые решения в цепочке поставок ПО могут быстро превратиться в точку входа для атакующих, если ими воспользоваться в нужный момент.
- Источник новости
- www.securitylab.ru