Троян mrmustard в PyPI похищал SSH-, AWS- и Kubernetes-учётные данные

23 июля 2026 года Python Package Index (PyPI) стал площадкой для очередной целевой атаки на цепочку поставок. Вредоносная версия библиотеки mrmustard, применяемой в фотонных квантовых вычислениях, была загружена под видом легитимного обновления. Инцидент обнажил сразу несколько болевых точек экосистемы открытого ПО: от компрометации учётных записей мейнтейнеров до изощрённых техник закрепления, нацеленных на высокопроизводительные вычислительные среды.

Механизм атаки: скрытый payload в безобидном обновлении

Версия 0.7.4 пакета mrmustard, опубликованная через учётную запись ключевого участника проекта ziofil, практически полностью повторяла предыдущий легитимный релиз 0.7.3. Единственное изменение было внесено в файл mrmustard/__init__.py: в функцию _check_tf_compatibility() длиной 258 строк оказался вшит троянский payload. При импорте библиотеки этот код немедленно начинал сбор конфиденциальных данных и их отправку на управляемый злоумышленником сервер (C2).

Анализ показал, что злоумышленник получил доступ к учётным данным мейнтейнера, что позволило выпустить вредоносный релиз напрямую, минуя все стандартные процедуры проверки.

Что попадало под удар

Payload осуществлял прицельную разведку хост-системы, фокусируясь на типичных для разработчиков и исследователей артефактах. В перечень похищаемой информации входили:

  • SSH-ключи (приватные ключи и конфигурация);
  • учетные данные AWS (файлы credentials и config);
  • конфигурационные файлы Kubernetes;
  • информация об окружении высокопроизводительных вычислений (HPC): очереди задач SLURM, инвентаризация GPU.

Собранные данные упаковывались в формат JSON, шифровались и отправлялись POST-запросами на закодированную C2-конечную точку. Такой подход затруднял детектирование трафика стандартными сетевыми средствами.

Уклонение и нацеливание на «живые» машины разработчиков

Вредоносная программа демонстрировала высокую осведомлённость об инфраструктуре жертв. Она намеренно избегала выполнения в средах непрерывной интеграции (CI), где долгоживущие секреты встречаются редко, и активировалась только на машинах разработчиков, хранящих актуальные учётные данные на постоянной основе. Это поведение указывает на то, что атакующих интересовал не единовременный доступ к песочнице сборки, а долговременное присутствие в рабочем окружении исследователей и инженеров.

Закрепление: троян остаётся даже после удаления библиотеки

Особую опасность представляли механизмы персистентности, встроенные в payload. Они были спроектированы так, чтобы сохранить своё присутствие даже после того, как скомпрометированная версия mrmustard будет деинсталлирована. Код использовал сразу несколько методов закрепления:

  • модификация скриптов инициализации оболочки (файлы rc);
  • создание задач cron для периодического выполнения вредоносных действий;
  • размещение файла mmcompat.pth, который, согласно устройству Python, автоматически исполняется при каждом запуске интерпретатора.

Таким образом, даже удаление пакета не гарантировало очистку системы — требовались целенаправленные действия по обнаружению и уничтожению оставленных артефактов.

Рекомендации по устранению последствий

Всем пользователям, которые устанавливали или обновляли пакет mrmustard в указанный период, необходимо немедленно принять следующие меры:

  • Ротировать все потенциально скомпрометированные учётные данные: SSH-ключи, ключи доступа AWS, токены Kubernetes и иные секреты, к которым имела доступ поражённая машина.
  • Провести ревизию Python-окружений на наличие файла mmcompat.pth и удалить его.
  • Проверить и очистить записи пользовательского crontab (crontab -l), удалив подозрительные задания.
  • Проинспектировать файлы инициализации оболочки (.bashrc, .zshrc и аналогичные) на предмет вставок, активирующих вредоносный код.
  • Удалить кэшированные файлы пакета и переустановить проверенную версию 0.7.3 из доверенного источника.

Эти шаги позволят разорвать цепочку закрепления и предотвратить дальнейшую утечку данных.

Уроки для индустрии

Инцидент с mrmustard — очередное жёсткое напоминание о необходимости сквозной верификации происхождения кода. Расхождение между версией, опубликованной в PyPI, и соответствующим коммитом в репозитории исходного кода должно рассматриваться как красный флаг. Компрометация учётной записи мейнтейнера, обладающей правами на публикацию, свела на нет все нижележащие защитные механизмы.

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

Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.

Ознакомиться подробнее с отчетом можно по ссылке.

Технологии киберугроз
Автор: Технологии киберугроз
Технологии киберугроз – технологическая компания, специализирующаяся на решениях по анализу угроз для предприятий любого размера. Мы собираем, нормализуем, обогащаем информацию о киберугрозах со всего мира. Нашими источниками являют более 260 открытых фидов, более 100 открытых поставщиков Threat Intelligence-отчетов, открытые online sandbox, социальные сети и репозитории GitHub. Мы также предоставляем ряд сервисов по: семантическом анализу Threat Intelligence-отчетов и приведения их в машиночитаемый формат STIX 2.1, проверки IoC на потенциальные ложноположительные сработки, а также получению WHOIS-записей для доменных имен.
Комментарии: