Злоумышленники распространяют вредоносные пакеты в репозиториях с открытым кодом, чтобы похитить данные криптокошельков, SSH‑ключей, токенов GitHub и учетных данных облачных сервисов. Кампания нацелена на разработчиков в сфере криптовалют, DeFi, искусственного интеллекта и кибербезопасности.
На этой неделе исследователи из компании по кибербезопасности 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 request) в проекты в сфере ИИ и разработки, пытаясь добавить файлы .cursorrules и CLAUDE.md через обычные каналы вклада в проекты с открытым кодом.