Сигурност

Редакция Overclock.bg ·

Shai-Hulud зарази 868 npm пакета и краде ключове

Shai-Hulud зарази 868 npm пакета и краде ключове

На 4 август 2026 г. саморазмножаващ се червей от семейството Shai-Hulud плъзна из npm и за около половин час зарази стотици пакети. Aikido Security преброи 868 пакета в 1381 версии с над 2 милиарда месечни изтегляния; SafeDep потвърди 2234 отровени версии в 444 имена на пакети, разпределени в дванайсет организации. Зловредният код краде npm токени, GitHub идентификации, облачни ключове и Vault тайни — и се разпространява сам нататък.

Всичко тръгна от keyv

Първата потвърдена зловредна публикация е keyv@6.0.0. Нападателят е превзел GitHub акаунта на поддържащия библиотеката, комитнал е директно в главния клон и веднага е издал нови версии — така пакетите излизат с легитимен provenance от GitHub Actions.

Проблемът е в мащаба: keyv прави около 604 млн. изтегляния месечно, а същият човек поддържа и flat-cache (580 млн.), file-entry-cache (571 млн.) и cacheable-request (137 млн.). Оттам вълната стигна до пакети на Deliveroo, PicsArt, Qlik, @onereach и @servicetitan.

Новите версии съдържат preinstall скрипт:

"scripts": {
  "preinstall": "node setup.mjs"
}

Тоест кодът се изпълнява при обикновено npm install — на вашата машина и в CI средите ви.

Схема на заразата през npm пакетите Снимка: Datadog Security Labs

Bun, 728 KB полезен товар и памет на CI runner-ите

Първата степен е малък 11-килобайтов loader. Той проверява дали има инсталиран Bun, а ако няма — сваля Bun 1.3.13 директно от официалните GitHub releases, без каквато и да е криптографска проверка. После пуска обфускиран файл от около 728 KB (Math_Symbol.js, във втора генерация — math_init.js).

Оттам нататък анализът на Datadog Security Labs описва методичен обир: 290 шаблона за търсене в Linux, 129 за macOS и 50 за Windows, насочени към SSH ключове, .npmrc, Git конфигурации, .env файлове, Terraform state, Docker конфигурации. Добавете AWS (STS, Secrets Manager, Parameter Store), Kubernetes service account токени и HashiCorp Vault.

Най-грозното: на Linux зловредният код вгражда Python, за да чете /proc/<pid>/mem на GitHub Actions runner-ите и да вади тайни направо от паметта на процеса.

Хуковете в Claude Code и VS Code

Тук идва частта, която засяга всеки, който работи с AI асистент в редактора. Когато червеят се сдобие с ghs_ токен, той комитва в клоновете на хранилището (до 50 на repo) два файла:

  • .claude/settings.json — SessionStart хук, който пуска node .vscode/setup.mjs
  • .vscode/tasks.json — задача при отваряне на папка, която пуска node .claude/setup.mjs

Кръстосаните пътища не са грешка, а начин да се скрие връзката между двата файла. Резултатът е, че заразата се задейства при отваряне на проекта в VS Code или при старт на сесия в Claude Code — без никаква инсталация.

Важно уточнение от The Hacker News: и двата редактора искат одобрение на workspace trust, преди да изпълнят такива задачи. Тоест механичното кликане на „Доверявам се на авторите” е единствената преграда. Semgrep е документирала абсолютно същите хукове и същото сваляне на Bun при компрометирането на PyPI пакета lightning през април 2026 г. — почеркът е един и същ.

Изнасяне на данните през GitHub и Ethereum

Откраднатите тайни се пакетират, криптират с AES-256-GCM и се качват в публични GitHub хранилища с описание „Shai-Hulud: Here We Go Again”. Броят им варира между около 821 и 1300 според различните екипи. Резервният канал минава през npm-cache[.]com, а адресът на актуалния сървър се чете от смарт контракт в Ethereum (0xE1f2395ee43e45A1556EC6438a88c31B83493103) — dead drop, който не може да бъде свален с едно писмо до хостинга.

В кода има и опит за изнудване: токените се вграждат с надпис „IfYouBlockThisAPIKeyItWillCrashTheLiveProductionServersOfAllThirdPartyClients”, за да ви разубеди да ги отменяте.

Внимание

Не бързайте да ротирате токените. SafeDep предупреждава, че зловредният код инсталира наблюдател за отмяна на токени — самото анулиране може да задейства обработчик на нападателя. Първо махнете малуера, после сменяйте ключовете.

Какво да направите

Проверете lock файловете си срещу списъците с компрометирани версии и потърсете в хранилищата си неочаквани директории .claude/ и .vscode/. Datadog посочва два лесни индикатора: заключващ файл tmp.dpkg_14527.lock и променлива на средата _NODE_RUNTIME_INIT=1. След почистване ротирайте всичко — npm токени, GitHub PAT-ове, облачни ключове.

Отровените версии на Keyv и Cacheable вече са свалени, но при повечето останали пакети етикетът latest дълго остана зловреден. Публична позиция от npm и GitHub към момента на писане няма.

Не е единственият сигнал тази седмица

Паралелно Manifold Security откри 77 зловредни разширения в Open VSX, които между 26 юли и 1 август са събирали hostname, имена на работни папки и версии на редактора; 19 от тях са вадели и данни за CI/cloud среда. Те не са пипали код и токени и са премахнати до 3 август. Fortinet пък описа тровен инсталатор на VPN клиента QuickFox, който от август 2025 г. разнася backdoor-а FDMTP.

Заключение

Shai-Hulud не е нова атака, а нова итерация — и този път скокът от npm към редактора е това, което трябва да ви притеснява. Веригата „чужд пакет → хук в проекта → сесия на AI асистент” превръща всяко клониране на непознато хранилище в риск, сравним с пускането на непознат инсталатор. Ако сте следили как AI агенти вече опитваха да вкарат зловреден код в реален open source проект или как малуер краде синхронизирани passkeys, моделът е познат: атакуват се не хората, а автоматизациите около тях.

Новините на Overclock — директно в Telegram, без алгоритми.

Следвайте ни в Telegram

Прочетете още