На 4 август отровена версия на keyv тръгна да се размножава из npm - краде токени и ключове, публикува се нататък от чуждо име и сади скрити команди. Те се задействат при следващото отваряне на проекта в редактора или при старт на Claude Code сесия. Подписите са били валидни: изворът е бил отровен преди билда.
- Превзет акаунт на поддържащ публикува отровен keyv@6.0.0 (04.08, 09:35 UTC); червеят се размножава със задигнати npm токени и по анализа на Datadog стига стотици пакети.
- Товарът краде SSH ключове, GitHub и npm токени и облачни креденшъли - и сади кукички в .claude/settings.json и .vscode/tasks.json, които го пускат отново при отваряне на проекта.
- Отровените версии носят валидна npm атестация. Защита: npm install с --ignore-scripts, заковаване на чисти версии, преглед на .claude/ и .vscode/, подмяна на токени.
Ако вчера някъде по света е вървяло npm install, шансът машината вече да точи ключове към чужд сървър е реален. Отвориш ли после проекта с Claude Code или VS Code - заразата е оставила и резервен вход.
Ето кое не личи от пръв поглед: нападателят вече брои и агентите за врата. Кукичката в .claude/settings.json чака точния момент, в който човек или агент каже 'вярвам на тази папка'. Досега веригата на доставки гонеше CI сървъри и лаптопи на разработчици. Тази атака гони и настройките на AI асистента - защото знае, че там доверие се раздава с един клавиш, и после никой не поглежда какво пише вътре.
Втората неудобна истина е атестацията. Релийзът е подписан, с валиден произход, минал всички зелени проверки - защото самият изходен код, от който се строи, вече е бил отровен. Подписът гарантира кой е сглобил колета и от кой рафт е взет. Какво има вътре, той никога не е обещавал.
Пускаме npm install с флага --ignore-scripts, докато прахът се слегне. Версиите се заковават. За keyv това е 5.6.0. Във всяко репо, пипано тези дни, .claude/ и .vscode/ се преглеждат ред по ред. Токените за GitHub и npm се подменят, не се 'проверяват'. И едно правило отсега нататък: преди 'trust' на чужд проект четеш какво точно ще се изпълни.