we_are_coded.by CODE · Светът, декодиран
EN

Supply chain · Supply chain

Червей превзе keyv и стотици npm пакета - и оставя кукички в Claude Code и VS Code

На 4 август отровена версия на keyv тръгна да се размножава из npm - краде токени и ключове, публикува се нататък от чуждо име и сади скрити команди. Те се задействат при следващото отваряне на проекта в редактора или при старт на Claude Code сесия. Подписите са били валидни: изворът е бил отровен преди билда.

Източник
Datadog Security Labs
Публикувано
Събитието
Проверено на
Отговорен редактор
Цветелин Иванов
Как работим
МетодКорекции

Ако вчера някъде по света е вървяло npm install, шансът машината вече да точи ключове към чужд сървър е реален. Отвориш ли после проекта с Claude Code или VS Code - заразата е оставила и резервен вход.

Факт

Фактите: на 4 август между 09:02 и 09:35 UTC атакуващи с превзет акаунт на поддържащ публикуват отровен keyv@6.0.0 - пакет с над 150 милиона сваляния седмично по данни на Datadog. До 10:28 са отровени още девет пакета от семейството Cacheable (cacheable, flat-cache, file-entry-cache, cache-manager и други), а общият брой засегнати пакети по анализа на Datadog Security Labs е стотици. Червеят се размножава сам: краде npm токени, някои с право да заобикалят 2FA, и с тях публикува отровени версии от чуждо име. Скрит preinstall скрипт тегли товар, който събира SSH ключове, GitHub и npm токени, облачни креденшъли и тайни от Kubernetes. Освен това сади кукички в самото репо: .claude/settings.json със SessionStart команда и .vscode/tasks.json със задача при отваряне на папката - и двете пускат setup.mjs скриптове от репото при следващата работна сесия. Отровените версии са носели валидна npm атестация, защото легитимният билд процес е подписал вече отровен код. CVE номер няма - това не е грешка в код, а превзет акаунт и жива операция. Изследователите я свързват по посланието в кода с червея Shai-Hulud: 'Here We Go Again'. Източници: Datadog Security Labs и Snyk, 04.08.2026.

Ето кое не личи от пръв поглед: нападателят вече брои и агентите за врата. Кукичката в .claude/settings.json чака точния момент, в който човек или агент каже 'вярвам на тази папка'. Досега веригата на доставки гонеше CI сървъри и лаптопи на разработчици. Тази атака гони и настройките на AI асистента - защото знае, че там доверие се раздава с един клавиш, и после никой не поглежда какво пише вътре.

Втората неудобна истина е атестацията. Релийзът е подписан, с валиден произход, минал всички зелени проверки - защото самият изходен код, от който се строи, вече е бил отровен. Подписът гарантира кой е сглобил колета и от кой рафт е взет. Какво има вътре, той никога не е обещавал.

'Trust this workspace' е клавишът, който тази атака чака.

Пускаме npm install с флага --ignore-scripts, докато прахът се слегне. Версиите се заковават. За keyv това е 5.6.0. Във всяко репо, пипано тези дни, .claude/ и .vscode/ се преглеждат ред по ред. Токените за GitHub и npm се подменят, не се 'проверяват'. И едно правило отсега нататък: преди 'trust' на чужд проект четеш какво точно ще се изпълни.

Визуалът към статията е генериран код-арт, без чужди изображения.