Северокорейские хакеры, связанные с операцией 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()" в коде зависимостей.
Государственные хакеры из КНДР не останавливаются: их инструменты становятся сложнее, а атаки - масштабнее. Компаниям и отдельным разработчикам важно оставаться настороже и применять инструменты для мониторинга подозрительной активности в своих проектах.
Индикаторы компрометации
IPv4
- 144.217.86.88
URLs
- https://1215.vercel.app/api/ipcheck
- https://api.npoint.io/1f901a22daea7694face
- https://log-writter.vercel.app/api/ipcheck
- https://process-log-update.vercel.app/api/ipcheck
- https://soc-log.vercel.app/api/ipcheck
Emails
- ahmadbahai07@gmail.com
- ahmedali06091@gmail.com
- alexandercruciata11@gmail.com
- c258789456@gmail.com
- chulovskaolena@outlook.com
- csilvagalaxy87@gmail.com
- danxeth436@gmail.com
- david262721@outlook.com
- david36271@outlook.com
- davisjosephinewnk807@outlook.com
- denniswinter727@outlook.com
- derek00144@gmail.com
- devin.s@gedu.demo.ta-39.com
- devin1571@outlook.com
- dmytroputko@gmail.com
- drgru854@gmail.com
- filip.porter9017@outlook.com
- garnerbrandy1230@gmail.com
- h96452582@gmail.com
- hades19910712@outlook.com
- hera19970204@outlook.com
- imanwdr30@hotmail.com
- jacksonblau11ai@gmail.com
- jaksonas11@outlook.com
- jasonharry198852@gmail.com
- jennyjenkins783@gmail.com
- jgod19960520@outlook.com
- jinping0821@outlook.com
- jinping0822@outlook.com
- magalhaesbruno236@gmail.com
- millosmike3@gmail.com
- oleksandrkazadaiev522@gmail.com
- r29728098@gmail.com
- rkupriyanof@gmail.com
- rodolfguerr@gmail.com
- samuelhuggins3@gmail.com
- scarlet112603@outlook.com
- souzaporto800@gmail.com
- star712418@gmail.com
- stefanofrick2@gmail.com
- vallierhilaire@gmail.com
- vitalii214.ilnytskyi@gmail.com
- willsuccess47@gmail.com
- zeus19970204@outlook.com
Malicious npm Packages
- 1imit
- async-queuelite
- cronek
- dev-filterjs
- ecom-config
- eth-auditlog
- figwrap
- flowframe
- flowmark
- flush-plugins
- husky-logger
- js-log-print
- jsonli-conf
- jsonlis-conf
- jsonloggers
- jsonlogs
- jsonskipy
- jsonslicer
- jsons-pack
- jsonspack-logger
- jsontostr
- jsonwebstr
- js-prettier
- logs-bind
- midd-js
- middy-js
- nextjs-https-supertest
- nextjs-package-purify
- node-log-streamer
- node-mongodb-logger
- node-mongodb-orm
- node-mongo-orm
- node-mongoose-orm
- nodestream-log
- notification-loggers
- notification-logs
- notifier-loggers
- parser-query
- parsing-query
- phlib-config
- pino-req
- postcss-preloader
- pretty-chalk
- proc-logger
- querypilot
- reqnexus
- reqweaver
- restpilot
- servula
- springboot-js
- springboot-md
- tailwind-base-theme
- tailwind-config-plugin
- utx-config
- velocky
- vitejs-log
- vitejs-plugin-refresh
- vite-lightparse
- vite-logging-tool
- vite-log-handler
- vite-logify
- vite-meta-plugin
- vite-plugin-enhance
- vite-postcss-tools
- vite-proc-log
- vite-tsconfig-log
- vite-usageit