Уязвимость заброшенного домена в экосистеме Python открывает вектор атак на цепочку поставок

Исследователь Владимир Пезо из компании ReversingLabs, специализирующейся на безопасности цепочек поставок программного обеспечения, обнаружил критическую проблему в устаревших пакетах Python. В репозитории Python Package Index (PyPI) был выявлен уязвимый код, создающий риск компрометации через захват домена. Основной причиной угрозы стал отказ от своевременного вывода из эксплуатации модуля «Distribute», из-за чего в проектах сохранились опасные загрузочные скрипты.
Уязвимость заброшенного домена в экосистеме Python открывает вектор атак на цепочку поставок
Изображение носит иллюстративный характер

Техническая суть проблемы кроется в инструменте автоматизации сборки и развертывания zc.buildout, а конкретно в старом скрипте инициализации среды bootstrap.py. Этот файл предназначен для автоматической загрузки, сборки и установки библиотек. В процессе работы он извлекает и запускает установочный скрипт distribute_setup.py. Триггером для выполнения вредоносного действия служит попытка установки «Distribute», происходящая либо по умолчанию, либо при использовании опций командной строки -d или --distribute. Механизм включает извлечение полезной нагрузки с жестко закодированного домена, что является паттерном, характерным для вредоносного ПО.

Центральным элементом уязвимости выступает целевой домен python-distribute[.]org. Этот устаревший веб-адрес выставлен на продажу с 2014 года и в настоящее время находится в премиальном ценовом диапазоне, используется для генерации рекламных доходов. Угроза заключается в латентном риске: злоумышленники могут приобрести этот домен и разместить на нем вредоносный код. Если загрузочный скрипт будет случайно запущен разработчиком, это приведет к выполнению атаки, потенциальным итогом которой может стать кража конфиденциальных данных.

Уязвимый скрипт, обращающийся к указанному домену, содержится в ряде пакетов PyPI. В список затронутых проектов входят tornado (в версии для разработки и обслуживания), pypiserver, roman, xlutils и testfixtures. Особо отмечается пакет slapos.core, который до сих пор поставляет этот уязвимый код. Исторически модуль «Distribute» был недолговечным форком проекта Setuptools, созданным из-за отсутствия активной разработки последнего. В 2013 году функции форка были интегрированы обратно в Setuptools, что сделало «Distribute» устаревшим, однако скрипт, изначально созданный для загрузки форка вместо оригинала, остался в кодовой базе.

Существуют определенные факторы, снижающие вероятность немедленной эксплуатации. Скрипт не запускается автоматически при установке пакета и написан на языке Python 2, что делает невозможным его выполнение в среде Python 3 без модификаций. Эксперты классифицируют эту угрозу как «ненужную поверхность атаки», реализация которой зависит от того, удастся ли обманом заставить разработчиков запустить устаревший код.

Для демонстрации реальности подобных угроз приводится сравнительный пример инцидента 2023 года с пакетом npm под названием fsevents. Уязвимости был присвоен идентификатор CVE-2023-45311 и критический рейтинг CVSS 9.8. Злоумышленник захватил контроль над невостребованным облачным ресурсом по адресу fsevents-binaries.s3-us-west-2.amazonaws[.]com. В результате пользователям, устанавливавшим определенные версии пакета, отправлялись вредоносные исполняемые файлы.

Параллельно с описанной проблемой была зафиксирована активность вредоносного пакета spellcheckers, обнаруженного системой HelixGuard. Пакет, загруженный пользователем под ником leo636722 15 ноября 2025 года, ложно позиционировался как инструмент для проверки орфографии с использованием «OpenAI Vision». На самом деле ПО содержало бэкдор и троян удаленного доступа (RAT). Цепочка атаки включала соединение с внешним сервером, загрузку полезной нагрузки следующей стадии и выполнение подконтрольного атакующему кода Python через функцию exec(), обеспечивая полный удаленный контроль над хостом жертвы. До момента удаления пакет был скачан 955 раз.


Новое на сайте

19857Острова как политический побег: от Атлантиды до плавучих государств Питера Тиля 19856Яйца, которые спасли предков млекопитающих от худшего апокалипсиса на Земле? 19855Могут ли омары чувствовать боль, и почему учёные требуют запретить варить их живыми? 19854Премия в $3 млн за первое CRISPR-лечение серповидноклеточной анемии 19853Почему сотрудники игнорируют корпоративное обучение и как это исправить 19852Тинтагель: место силы Артура или красивая легенда? 19851Голоса в голове сказали правду: что происходит, когда галлюцинации ставят диагноз точнее... 19850Куда исчезает информация из чёрных дыр, если они вообще исчезают? 19849Чёрная дыра лебедь Х-1 бросает джеты со скоростью света — но кто ими управляет? 19848Что увидели фотографы над замком Линдисфарн — и почему они закричали? 19847Почему антисептики в больницах могут создавать устойчивых к ним микробов? 19846Правда ли, что курица может жить без головы? 19845Как Оскар Уайльд использовал причёску как оружие против викторианской морали? 19844Назальный спрей против всех вирусов: как далеко зашла наука 19843«Я ещё не осознал, что мы только что сделали»: первая пресс-конференция экипажа Artemis II
Ссылка