Shai-Hulud пак в npm: Tensorlake краде достъпи

Червеят Shai-Hulud се появи отново в npm. На 8 октомври 2026 г. в 01:12 ч. UTC в регистъра беше публикувана версия 0.5.144 на пакета tensorlake — официалният TypeScript SDK на компанията Tensorlake за нейната инфраструктура за AI агенти. Единайсет минути по-късно, в 01:23 ч., Socket засече обфускиран зловреден код в архива. Пакетът има около 12 000 изтегляния седмично и над 1000 звезди в GitHub.
Ден по-рано The Hacker News съобщи и за втора, напълно отделна кампания: осем зловредни npm пакета, изтеглени общо 40 767 пъти, които разнасят троянец за отдалечен достъп и крадец на пароли.
Снимка: Aikido Security
Какво прави версия 0.5.144
Заразата тръгва от preinstall hook — скрипт, който npm изпълнява още при инсталацията, преди да сте написали и ред код с библиотеката. Hook-ът стартира node lib/setup.mjs, обфускиран зареждач, който пуска истинския payload през runtime-а Bun.
Оттам нататък списъкът с цели е дълъг:
- npm токени — от
.npmrc, през token API и OIDC обмен - GitHub токени, с проверка какви права имат върху хранилищата и workflow-ите
- AWS креденшъли — през IMDS, ECS, Secrets Manager и SSM Parameter Store
- HashiCorp Vault на
127.0.0.1:8200 - Kubernetes service-account токени и kubeconfig файлове
- SSH ключове,
.envфайлове и крипто портфейли - конфигурации на AI инструменти — Claude, Cursor, Kiro, Windsurf и Zed
Допълнително се сваля и binary-то HackBrowserData за изтегляне на данни от браузъра. Aikido брои над 40 променливи на средата, около 50 файлови пътя и 14 браузърни разширения за криптовалути сред целите.
C2 през Ethereum и ключалка за самоунищожение
Най-любопитната част е как зловредният код намира сървъра си. Няма зашит домейн — вместо това payload-ът пита около 30 публични Ethereum RPC endpoint-а и чете адреса на C2 от smart contract, с GitHub като резервен канал. Според Aikido контрактът е бил обновен с настройките за тази вълна още на 21 септември. Такава схема не може да бъде свалена с едно обаждане до регистратор на домейни.
Персистентността е също толкова неприятна: задача по график gh-token-monitor с тригер ONLOGON пуска PowerShell монитор, който периодично проверява дали откраднатият GitHub токен още е валиден. Ако го отзовете, докато мониторът работи, се задейства dead-man switch — wiper, който трие домашната директория на потребителя.
Отделно кодът се вписва в .claude/settings.json и .vscode/tasks.json, тоест достъпът оцелява и след като махнете зависимостта. И накрая — червеят се разпространява сам, като преиздава други пакети под самоличността на жертвата в npm.
Как е влязъл
Според анализа на StepSecurity атакуващите са получили достъп до хранилището и са добавили кода с commit на 7 октомври около 01:20 ч. UTC. Между компрометирането на кода и публикуването в npm е минало около 24 часа. Засегнат е само npm пакетът — дистрибуциите за PyPI и Cargo са чисти, както и предишната версия 0.5.143.
Кампанията е известна като ChainDrop / Shai-Hulud и е документирана за първи път през август 2026 г., когато по същия начин паднаха пакетите Keyv и Cacheable. Това е същият клас атака, за който вече писахме при фалшивите TLS сертификати и Pwn2Own — доверието във веригата на доставки е слабото звено, а не криптографията.
Ако сте инсталирали tensorlake@0.5.144, третирайте машината като изцяло компрометирана: сменете всички креденшъли, които процесът е виждал, проверете за задачата gh-token-monitor и прегледайте .claude/settings.json и .vscode/tasks.json. Отзоваването на GitHub токена преди да сте спрели монитора може да задейства wiper-а.
Втората кампания: MALFEX и 40 767 изтегляния
Паралелно CloudSEK и Checkmarx описаха кампания с кодово име MALFEX — осем зловредни пакета от общо 12, публикувани от един и същ автор от август 2023 г. насам.
Пакетите са function-flag, function-color, cdn-img-fetch, img-to-native, native-runner, tlxbnhd, tldriver и mxdriver. Лъвският пай от трафика е на function-flag — 37 419 от общо 40 767 изтегляния, и то без нито един публикуван advisory. Към снимката на регистъра от 29 септември три от тях все още са били инсталируеми: function-flag, function-color и cdn-img-fetch.
Полезните товари са три. tlxbnhd, tldriver и mxdriver доставят Overlord RAT — троянец на Go, който вади адреса на C2 от блокчейна на Solana. Втората верига (native-runner, img-to-native, cdn-img-fetch) пуска movinlike — крадец на Node.js, насочен към браузъри, Discord, Telegram и крипто портфейли. Третият компонент е обикновен downloader.
Авторът дори не се крие особено: описанието на пакета гласи „този проект е създаден с много любов и отдаденост от екипа Malfex, чийто собственик е Murizada“. По часовата зона на git commit-ите (-0300), описанията на португалски и GitHub профила изследователите предполагат бразилски произход.
Изводът
Двата случая се различават по всичко освен по входната точка. При Tensorlake имаме компрометиран легитимен пакет с хиляди легитимни потребители, засечен за 11 минути. При MALFEX — тихи пакети-примамки, които събират изтегляния над три години без да ги флагне никой.
Общото е, че и в двата случая npm install изпълнява чужд код на машината ви с вашите права. Ако още нямате политика срещу install скриптове (npm config set ignore-scripts true), pinning на версии и lockfile-ове, които някой реално преглежда, двете новини от тази седмица са добър повод.
Харесва ви? Отбележете ни и ще ни виждате по-нагоре в Google.
Предпочитан източник в Google