Целевая атака на разработчиков через npm: вредоносные пакеты крадут ключи AI-инструментов и данные кошельков

information security

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

Описание

20 марта 2026 года в npm под именем пользователя "gemini-check" был опубликован пакет "gemini-ai-checker", заявленный как утилита для проверки токенов Google Gemini AI. Однако анализ сразу выявил несоответствия: документация в файле README была дословно скопирована с легитимного пакета "chai-await-async", не имеющего отношения к Gemini. При установке пакет связывался с промежуточным доменом "server-check-genimi.vercel[.]app", чтобы получить и выполнить JavaScript-полезную нагрузку, никогда не сохраняя её на диск. Этот метод, использующий "Function.constructor" вместо "eval", был выбран для усложнения статического анализа.

Снимок экрана

На момент обнаружения аккаунт злоумышленника также содержал два других вредоносных пакета - "express-flowlimit" и "chai-extensions-extras", которые суммарно были загружены более 500 раз. Все они используют одну и ту же инфраструктуру на платформе Vercel для доставки зловредного кода. Несмотря на то что пакет "gemini-ai-checker" был удалён незадолго до 1 апреля, два других остаются активными и продолжают привлекать жертв, среди которых могут быть как исследователи, так и ничего не подозревающие разработчики. Эксперты издания CyberandRamen обнаружили, что для регистрации аккаунта в npm была использована скомпрометированная учётная запись Hotmail, что осложняет дальнейшее расследование.

Расшифровка обфусцированного кода, полученного с домена Vercel, выявила сложную четырёхмодульную архитектуру вредоносной программы. Для повышения живучести внешняя полезная нагрузка запускает четыре независимых процесса Node.js, каждый со своей таблицей закодированных строк. Это позволяет доставлять вторичные модули без дополнительных запросов к серверу управления и контроля, делая работу бэкдора менее зависимой от доступности инфраструктуры злоумышленника. Модуль 0 устанавливает соединение с C2-сервером "216.126.237[.]71" по протоколу Socket.IO, обеспечивая оператору возможности удалённого управления, включая захват экрана и контроль ввода. Модуль 1 является похитителем учётных данных, нацеленным на базы данных браузеров и файлы криптовалютных кошельков, таких как MetaMask и Phantom, в macOS он также атакует связку ключей (Keychain). Модуль 2 выполняет поиск и эксфильтрацию файлов с определёнными расширениями из домашней директории пользователя. Модуль 3 мониторит буфер обмена, передавая его содержимое злоумышленнику.

Проведённый анализ выявил многочисленные сходства с бэкдором OtterCookie, который связывают с кампанией Contagious Interview, атрибутируемой северокорейским угрозам. В частности, совпадают структура обфускации, архитектура, использование Socket.IO и логика работы модуля мониторинга буфера обмена. Недавно аналогичный вариант этой вредоносной программы был описан исследователями Microsoft. Учитывая эти данные, атрибуция данной активности северокорейской группировке оценивается как умеренно-высокая.

Особенностью данной кампании стало явное внимание к новым векторам кражи данных. Помимо традиционных целей вроде файлов ".ssh" или ".aws", модуль эксфильтрации целенаправленно ищет директории, связанные с AI-инструментами для программирования: ".cursor" (Cursor AI IDE), ".claude" (Anthropic Claude Code), ".gemini" (Gemini CLI), ".windsurf" (Windsurf AI IDE) и другие. Это указывает на прямой интерес операторов к API-ключам, токенам доступа и, возможно, журналам бесед с большими языковыми моделями (Large Language Model, LLM), которые могут содержать фрагменты проприетарного кода или коммерческой тайны. Такое целеполагание отражает глубокое понимание злоумышленниками современных рабочих процессов разработки, где AI-ассистенты стали неотъемлемой частью. Кража этих данных в сочетании с SSH-ключами и облачными учётными данными открывает путь не только к контролю над рабочей станцией жертвы, но и к проникновению в корпоративную сеть.

Данный инцидент является очередным напоминанием об уязвимости цепочки поставок программного обеспечения. Разработчики, стремящиеся ускорить работу с помощью готовых пакетов, остаются приоритетной мишенью для APT-групп, которые умело маскируют свои инструменты под легитимные библиотеки. Добавление в арсенал целевого поиска данных от AI-инструментов знаменует новую опасную тенденцию. Борьба с подобными угрозами в репозиториях вроде npm напоминает игру в "whack-a-mole": по мере удаления одних вредоносных пакетов появляются новые. Для эффективного противодействия необходимы как усилия команд безопасности платформ, так и повышенная осмотрительность самих разработчиков, которым следует критически оценивать устанавливаемые зависимости, проверять несоответствия между описанием и кодом, а также относиться к конфиденциальным данным AI-ассистентов с той же строгостью, что и к паролям или криптографическим ключам.

Индикаторы компрометации

IPv4 Port Combinations

  • 216.126.237.71:4891

URLs

  • server-check-genimi.vercel.app/defy/v3

SHA256

  • d26da2d0f14d8a160f2f937a6081dae0c4b31bb4e5539187a56d658372f33b22
Комментарии: 0