Специалисты компании ReversingLabs обнаружили вредоносный код в криптовалютном торговом проекте. Код попал туда после того, как ИИ-агент добавил подозрительную зависимость в репозиторий. Речь идет о пакете @validate-sdk/v2, который маскируется под обычный инструмент для проверки данных. На деле он выкачивает секретные данные из среды выполнения.
Описание
Новую кампанию исследователи назвали PromptMink. Зараженная зависимость появилась в коммите от 28 февраля репозитория автономного торгового агента. Забавно, что автором коммита стал ИИ-ассистент - нейросеть Claude Opus компании Anthropic. После установки зловред открывает злоумышленникам доступ к криптовалютным кошелькам и средствам пользователей.
Инцидент является частью более крупной кампании, которую связывают с северокорейской группой Famous Chollima. Эта группировка активно использует код, сгенерированный большими языковыми моделями, и многоуровневую стратегию упаковки, чтобы обходить системы обнаружения. Примечательно, что такие атаки эффективнее обманывают автоматизированные ИИ-ассистенты, чем живых разработчиков.
Исследователи ReversingLabs отслеживают вредоносные версии пакета @validate-sdk/v2 с октября 2025 года. Пакет экспортирует функции, которые притворяются шифрованием данных и проверкой хэшей. В действительности они собирают все секреты, найденные в окружении. Этот пакет используется в составе openpaw-graveyard - npm-пакета, реализующего автономного криптовалютного торгового агента.
Именно в результате добавления этого зловреда как зависимости в февральский коммит торговый агент начал выполнять вредоносный код. Злоумышленники получили доступ к учетным данным пользователя, а через них - к криптокошелькам и средствам.
Группа Famous Chollima известна интенсивным использованием больших языковых моделей для генерации вредоносных пакетов. По мнению исследователей, их успех объясняется многоуровневым подходом. Вредоносные пакеты разделены на два уровня. Первый уровень - так называемые "приманки", которые выглядят легитимно и не содержат опасного кода. Однако они импортируют пакеты второго уровня, в которых уже реализована вредоносная функциональность. Такие "расходные" пакеты легко заменяются, как только их обнаруживают или удаляют из реестра npm.
История этой кампании уходит корнями в сентябрь 2025 года. Тогда был опубликован пакет @hash-validator/v2, обладающий функциями кражи информации. Позже, 7 октября, его удалили из npm после того, как ReversingLabs выявили угрозу. Злоумышленники отреагировали мгновенно. В тот же день они выпустили пакет @validate-sdk/v2, присвоив ему тот же номер версии 1.22.11, что был у предшественника. Исходный код при этом остался неизменным.
В последующие недели атакующие расширили арсенал зловредных пакетов в обоих уровнях. Им пришлось несколько раз заменять обнаруженные зависимости на новые, не замеченные системами контроля. Такая стратегия позволяет сохранять доверие к пакетам-приманкам: их репутация не страдает, даже если внутренние зловреды удаляют.
Эволюция самой вредоносной нагрузки в пакете @validate-sdk/v2 напоминает метаморфозу бабочки. В первой фазе (сентябрь 2025 - январь 2026) зловред представлял собой обфусцированный JavaScript. Для сокрытия агенты использовали помощь больших языковых моделей. В README-файле даже сохранился остаток диалога с нейросетью: она спрашивала, не нужно ли заодно обфусцировать и сам файл документации.
Во второй фазе, в феврале 2026 года, злоумышленники опубликовали пакет на PyPI с такой же вредоносной функциональностью, но уже на Python. Также они начали оставлять на взломанных машинах свои SSH-ключи для удаленного доступа.
Третья фаза пришлась на конец февраля. Вместо чистого кода атакующие стали упаковывать обфусцированный JavaScript вместе с исполняемыми файлами Node, используя технологию SEA (Single Executable Applications). Это позволило спрятать вредоносную нагрузку внутри бинарника, что сильно затрудняет обнаружение. Размер пакета вырос с 5 килобайт до 85 мегабайт.
Четвертая, самая продвинутая фаза началась в середине марта 2026 года. Зловреды начали писать на Rust и поставлять предварительно скомпилированные модули для Node с помощью набора инструментов NAPI-RS. К этому моменту они уже не просто крали отдельные файлы, а упаковывали и выкачивали целые проекты вместе с исходным кодом. Это позволяет похищать интеллектуальную собственность компаний.
Интересно, что злоумышленники явно тестировали свои разработки, используя легальные пакеты и оставляя там подробные комментарии. Например, в пакете pino-pretty-logger, выпущенном за несколько дней до финальной версии, обнаружились закомментированные объявления функций на TypeScript, которые дословно описывают вредоносную логику.
ReversingLabs связывают кампанию PromptMink с северокорейской группировкой Famous Chollima по нескольким признакам. Во-первых, использование фермы Vercel для командных серверов. Во-вторых, нацеленность именно на блокчейн- и крипторазработчиков. В-третьих, типичные для этой группы маршруты выкачивания данных: /api/validate/files, /api/validate/project-env, /api/validate/system-info. И, наконец, высокая настойчивость - разработка одного пакета длится уже более полугода.
В результате анализа отчёта ReversingLabs выявлено более 20 различных доменов и IP-адресов, задействованных в кампании. Выпущено свыше 300 версий 60 уникальных пакетов за семь месяцев. Признаков прекращения деятельности не наблюдается.
Функционально зловред умеет добавлять SSH-ключи на Linux- и Windows-машины, собирать базовую информацию об операционной системе и пользователе, сканировать директории на наличие файлов с расширениями .env и .json, а также файлов с криптовалютными названиями. В Rust-версии добавилась возможность сжимать и выкачивать целые проекты.
Исследователи подчеркивают, что PromptMink не является новой версией известных северокорейских зловредов вроде OtterCookie или BeaverTail. Он создан с нуля с помощью генерации кода большими языковыми моделями. Тем не менее стиль ошибок и промахи с публикацией необфусцированного кода выдают ту же руку.
Кампания открывает новую главу в атаках на цепочки поставок программного обеспечения. Теперь злоумышленники могут не просто обманывать разработчиков, а манипулировать ИИ-ассистентами, которые пишут код. Документация и README-файлы подбираются так, чтобы нейросеть сочла пакет идеальным для текущего проекта. Вредоносная нагрузка прячется в бинарные файлы, которые нейросеть не может легко проанализировать.
Специалисты советуют разработчикам и компаниям усилить контроль за зависимостями, особенно если в процессе разработки используются ИИ-ассистенты. Необходимо проводить статический анализ всех добавляемых пакетов, отслеживать подозрительные изменения в размере и составе файлов, а также подключать к рабочим процессам инструменты проверки безопасности репозиториев. Следующий раз, когда вы примете предложение нейросети изменить код, подумайте: не добавили ли вы зловред, который украдет ваши токены, кошельки и доступ к серверам.