Červ šířící se přes balíček Keyv nakazil stovky npm balíčků a zanechal háčky pro Claude Code a VS Code
Škodlivý kód, který se poprvé objevil v balíčku keyv@6.0.0, se z jeho jmenného prostoru rozšířil do stovek dalších npm balíčků napříč několika organizacemi a krade přihlašovací údaje vývojářů i CI prostředí.
Do npm registru pronikl 4. srpna červ šířící se přes balíček Keyv, který se z jmenných prostorů Keyv a Cacheable rozšířil do stovek dalších balíčků napříč více organizacemi. Bezpečnostní firma SafeDep potvrdila 353 nakažených verzí u 79 názvů balíčků, její monitoring odhadl širší dosah na 442 verzí u 353 názvů, zatímco firma Aikido později uvedla odhad nejméně 868 balíčků a 1 381 verzí. Ani jedno z širších čísel se k uzávěrce zpravodajství nepodařilo nezávisle ověřit z úplného veřejného seznamu – jde navíc o počty nakažených verzí balíčků, nikoliv o počet zasažených systémů, které je skutečně nainstalovaly a spustily.
Prvním potvrzeným škodlivým vydáním byl balíček keyv@6.0.0, který do sebe přidal příkaz node setup.mjs spouštěný automaticky při instalaci (preinstall) a dva nové soubory, setup.mjs a Math_Symbol.js, zatímco zkompilovaný kód samotné knihovny zůstal beze změny. První stupeň kódu zkontroloval přítomnost runtime prostředí Bun, v případě potřeby stáhl jeho verzi 1.3.13 přímo z oficiálních vydání na GitHubu a předal řízení zkompilovanému balíčku o velikosti necelých 730 kilobajtů. Podle analýzy SafeDep tento balíček sbírá přístupové údaje ke GitHubu, npm, cloudovým službám, nástroji Vault, Kubernetes, databázím i soukromé klíče, čte paměť běžců GitHub Actions a instaluje sledovací mechanismus, který se spustí ve chvíli, kdy oběť začne odcizené přístupy rušit (revoke) – SafeDep proto doporučuje nejprve odstranit tento sledovací mechanismus a teprve poté rotovat klíče a tokeny, protože opačný postup může spustit útočníkem dodaný lokální handler. Balíček zároveň obsahoval vlastní nástroje pro publikování npm balíčků, takže jakmile útočníci ukradli přístup správce balíčku, mohli automatizovaně nakazit další projekty.

Repozitář Keyv navíc obsahoval samostatnou cestu spuštění přes soubory .claude/settings.json a .vscode/tasks.json, které při otevření projektu nebo zahájení relace volají stejný škodlivý skript. Novější verze VS Code i Claude Code sice automatické spouštění úloh z nedůvěryhodného pracovního prostoru standardně blokují a vyžadují potvrzení uživatele, oba soubory ale byly k uzávěrce zpravodajství stále přítomny v hlavní větvi repozitáře. Otrávené vydání navíc proteklo legitimním publikačním procesem projektu na GitHub Actions, takže neslo platné kryptografické potvrzení původu (OIDC/SLSA provenance) – to ale jen dokládá, že balíček prošel správným procesem sestavení, nikoliv že zdrojový kód, který do něj vstoupil, byl bezpečný.
Bezpečnostní firmy incident řadí do rodiny útoků Shai-Hulud, se kterou souvisí i dřívější kompromitace balíčku PyTorch Lightning na PyPI z dubna 2026 se stejným názvem souboru setup.mjs a stejnou verzí prostředí Bun. Kdo za srpnovou vlnou stojí a jakým způsobem útočníci poprvé získali přístup k účtu správce balíčku, se k uzávěrce zpravodajství nepodařilo zjistit – k incidentu se dosud veřejně nevyjádřili ani správce projektu, ani npm, ani GitHub.
Pro organizace, jejichž vývojářské týmy používají balíčky ze jmenných prostorů Keyv nebo Cacheable, případně z projektů na ně navázaných, je namístě ověřit přesný název balíčku a konkrétní staženou verzi podle uzamčeného souboru závislostí (lockfile), nikoliv jen podle aktuálně zobrazeného tagu „latest", protože ten se v průběhu incidentu opakovaně měnil. Každou stanici nebo běžec CI, který otrávenou verzi nainstaloval, je třeba považovat za prostředí s odhalenými přístupovými údaji a při jejich rotaci postupovat v pořadí, které doporučuje SafeDep – nejprve odstranit sledovací mechanismus reagující na zneplatnění klíčů, teprve poté hesla a klíče skutečně změnit.
Další články

Italská pokuta za prodej kontaktů profesionálů, zrušená pokuta Amazonu ve Španělsku a rakouské tajné nahrávání pohovorů: výběr rozhodnutí z GDPRhub

Nové zranitelnosti v katalogu CISA KEV – vydání 32b

