Пакет elementary-data на Python Package Index (PyPI), имеющий 1,1 млн загрузок в месяц, стал жертвой атаки и начал распространять вредоносный код для кражи этих разработчиков и криптовалютных кошельков. Вредоносный релиз версии 0.23.3 оказался на PyPI, включая Docker-образ, благодаря механизму загрузки, используемому для публикации обновлений.
Что произошло
Атакующий воспользовался уязвимостью в рабочем процессе проекта, а не компрометировал учетные записи администраторов, как это происходит чаще всего. Вредоносный код был внедрён через комментарий на запросе на слияние, что позволило исполнить скрипт с контролируемым злоумышленником кодом. Это привело к тому, что рабочий процесс получил доступ к GITHUB_TOKEN, который был использован для создания подписанного коммита и запуска обоснованного процесса публикации.
Релиз версии 0.23.3 содержал файл elementary.pth, который автоматически запускался при старте, загружая инструмент кражи секретов. По этим исследователей StepSecurity, вредоносный код был нацелен на кражу критической информации, включая SSH-ключи, учетные эти Git, токены облака и файлы кошельков криптовалют.
Наследствия и рекомендации
Пользователи, загрузившие вредоносный пакет, должны срочно сменить все свои секреты и восстановить свои среды из безопасных резервных копий. Особенно это касается тех, кто использовал версии без жесткой привязки к версиям. Анализ инцидента показал, что системы, не использующие зафиксированные версии, были автоматически обновлены до зараженного билда.
Для разработчиков это ещё одна напоминание о важности использования защищенного рабочего процесса и регулярного обновления своих инструментов безопасности. Важно проверять пакеты на наличие известной угрозы и не полагаться исключительно на репозитории, даже если они кажутся официальными.
Следующий шаг — разработка более строгих мер по обеспечению безопасности для хранения и распределения пакетов, чтобы защитить пользователей от подобных инцидентов в будущем.