Северокорейские хакеры, связанные с операцией Contagious Interview, значительно расширили свою активность, распространив 67 вредоносных пакетов в экосистеме npm. Как обнаружила команда Socket Threat Research, эти пакеты используют новый загрузчик XORIndex, который маскирует вредоносные действия с помощью XOR-кодирования и индексного шифрования. В совокупности эти пакеты были загружены более 17 000 раз, причем 27 из них до сих пор остаются доступными в реестре npm. Уже отправлены запросы на их удаление и блокировку связанных аккаунтов.
Описание
Эта атака является продолжением кампании, обнаруженной в июне 2025 года, когда использовался другой загрузчик - HexEval. Однако теперь злоумышленники добавили в свой арсенал XORIndex, который также предназначен для скрытой доставки вредоносного ПО BeaverTail - второго этапа атаки, связанного с бэкдором InvisibleFerret. Ранее эта связка уже использовалась в атаках на разработчиков, соискателей работы и владельцев криптовалют.
Особенность новой кампании заключается в том, что XORIndex и HexEval работают параллельно. За короткий промежуток времени (с июня по июль 2025 года) XORIndex собрал более 9 000 загрузок, в то время как активность HexEval остаётся стабильной - около 8 000 загрузок для новых пакетов.
Как работает XORIndex?
Анализ показал, что XORIndex использует пять заранее подготовленных C2-серверов (например, "https://log-writter[.]vercel[.]app/api/ipcheck"). После установки пакета загрузчик собирает метаданные системы (имя пользователя, IP-адрес, геолокацию, версию ОС) и отправляет их на сервер злоумышленников. Затем он выполняет JavaScript-код, полученный в ответ, - это обычно BeaverTail, который крадёт криптокошельки, данные браузеров и другие конфиденциальные файлы.
BeaverTail ищет данные MetaMask, Coinbase Wallet, Solana и других криптовалютных сервисов, упаковывает их в архив и отправляет на сервер злоумышленников. Затем он может загрузить дополнительные вредоносные модули, включая InvisibleFerret - полноценный бэкдор для удалённого управления системой.
Эволюция XORIndex: от простого к сложному
Исследователи выдели три этапа развития загрузчика.
- Первый прототип - "postcss-preloader" - был примитивным: он просто отправлял запрос на сервер и выполнял полученный код без какой-либо маскировки.
- Второй вариант - "js-log-print" - добавил сбор системных данных, но содержал ошибку в логике получения IP-адреса.
- Третье поколение - "dev-filterjs" - впервые применило шифрование строк через ASCII-буферы и исправило прошлые недочёты, сделав загрузчик более скрытным.
- Современные версии XORIndex используют XOR-кодирование, ротацию C2-серверов и сложные методы обфускации, что делает их труднее для обнаружения.
Чем это грозит разработчикам?
Злоумышленники продолжают активно загружать вредоносные пакеты, меняя их названия и слегка модифицируя код. Их цель - внедриться в цепочки поставок программного обеспечения и заражать компьютеры разработчиков через зависимости npm.
Socket рекомендует тщательно проверять устанавливаемые пакеты, особенно если их названия похожи на популярные библиотеки (например, "vite-*", "*-log*"). Также стоит обращать внимание на подозрительные HTTP-запросы и использование "eval()" в коде зависимостей.
Государственные хакеры из КНДР не останавливаются: их инструменты становятся сложнее, а атаки - масштабнее. Компаниям и отдельным разработчикам важно оставаться настороже и применять инструменты для мониторинга подозрительной активности в своих проектах.