Новая кампания по краже криптовалют нацелена на разработчиков, у которых на компьютерах с наибольшей вероятностью могут храниться ключи от кошельков, учетные данные облачных сервисов и доступ к производственным средам.
Исследователи из компании по безопасности Socket сообщили в начале этой недели, что выявили атаку на цепочку поставок под названием TrapDoor, распространяющуюся через три крупных реестра пакетов с открытым исходным кодом. В нее входит более 34 вредоносных пакетов и сотни связанных версий и артефактов.
Ключевой вывод заключается в том, что атакующие становятся более сфокусированными. Помимо социальной инженерии, нацеленной на лиц, владеющих ключевой информацией, атаки на цепочку поставок разработаны не для случайных розничных пользователей, а именно для разработчиков. Это те самые люди, которые могут хранить файлы кошельков, SSH-ключи, токены GitHub, учетные данные облачных сервисов и доступ к производственным средам на той же машине, которую используют для создания крипто- и ИИ-инструментов.
Socket не назвала жертв или суммы похищенных средств, но отметила, что пакеты были активны в npm, PyPI и Crates.io и содержали полезные нагрузки, способные красть данные кошельков, эксфильтровать учетные данные, тестировать токены AWS и GitHub, а также оставлять файлы для сохранения активного доступа.
Пакеты, написанные на JavaScript, Python и Rust, маскировались под помощники для разработчиков, сканеры безопасности, инструменты для кошельков, утилиты Solidity, пакеты промптов для ИИ и помощники для сборки Sui или Move.
Скучные названия по замыслу
Названия были намеренно сделаны скучными. Пакеты назывались «wallet-security-checker», «defi-risk-scanner», «solidity-build-guard», «move-compiler-tools» и «llm-context-compressor», выглядя как те небольшие утилиты, которые крипто- или ИИ-разработчик мог бы установить без лишних раздумий.
Однако после установки полезные нагрузки пытались извлечь гораздо больше, чем просто данные пакетов.
В пакетах npm вредоносное ПО искало на компьютере разработчика приватные ключи, пароли, токены GitHub и данные для входа в облачные сервисы. Оно также тестировало некоторые украденные учетные данные, пыталось переместиться в другие системы через SSH-ключи и оставляло файлы, которые могли поддерживать активность заражения.
SSH-ключи — это файлы для входа, которые разработчики используют для доступа к серверам, репозиториям кода и другим машинам. В случае кражи они позволяют атакующему перейти с одного зараженного ноутбука в более широкую инфраструктуру компании.
Атака также использует файлы .cursorrules и claude.md, позволяющие разработчикам давать специфичные для проекта инструкции инструментам ИИ-кодирования. Socket сообщила, что кампания внедряла скрытые инструкции с использованием нулевой ширины Unicode-символов, очевидно пытаясь заставить будущие сессии ИИ-ассистентов запускать фальшивые «сканирования безопасности», которые собирали и эксфильтровали секреты.
Это превратило атаку из обычного похитителя пакетов во что-то более близкое к вредоносному ПО для среды разработки. Установка пакета — лишь первый шаг, а реальной целью является рабочая станция, включая кошельки, репозитории, данные браузера, облачные ключи, доступ по SSH и все, что далее прочитают инструменты ИИ-кодирования.
Пакеты Rust использовали вредоносные скрипты build.rs, запускаемые во время компиляции, нацеливаясь на разработчиков sui и move. Пакеты PyPI выполняли удаленный JavaScript при импорте. Пакеты в npm использовали хуки postinstall.
Socket сообщила, что передала информацию о пакетах в затронутые реестры и классифицировала пакеты кампании как вредоносные. Компания также предупредила, что злоумышленник открывал pull-запросы к проектам в сфере ИИ и разработки, пытаясь добавить файлы .cursorrules и CLAUDE.md через обычные пути внесения вклада в открытый исходный код.