- 4. augustil 2026 rikkus isepaljunev uss nimega ChainDrop nelja tunni jooksul üle 400 npm paketi, sealhulgas keyv ja flat-cache.
- Rünnakus kasutati varastatud GitHubi sisselogimisandmeid, et avaldada kehtiva päritoluga pahatahtlikke versioone, muutes need legitiimsetest versioonidest eristamatuks.
- Kasulik koormus varastab volitusi, filtreerib andmeid Ethereumi-põhise C2 kaudu ja avaldab nakatunud pakette uuesti varastatud npm-tokenite abil.
- Mõju leevendamiseks peavad organisatsioonid kontrollima lukustusfaile, vahetama volitusi ja eemaldama püsivusmehhanismid.

NPM-i ökosüsteem on vapustatud ühest agressiivsemast tarneahela rünnakust läbi aegade. 4. augustil 2026 rebis uss nimega ChainDrop läbi registri, mürgitades sadu pakette vähem kui nelja tunniga. Rünnak kasutas ohustatud GitHubi kontot, et avaldada pahatahtlikke versioone laialdaselt kasutatavatest teekidest nagu keyv ja flat-cache, mis kokku moodustavad sadu miljoneid allalaadimisi iganädalaselt. Selle juhtumi teeb eriti murettekitavaks asjaolu, et pahatahtlikud versioonid kandsid kehtivat SLSA päritolu, mistõttu need paistavad automatiseeritud turvakontrollide jaoks täiesti legitiimsed.
Turvaeksperdid ettevõtetest StepSecurity, Unit 42, Sonatype ja Aikido on võistelnud ussi analüüsimise ja selle leviku piiramisega. Esimene laine tabas jaredwray ökosüsteemi, kuid uss levis kiiresti ka teistele hooldajatele ja organisatsioonidele, sealhulgas ServiceTitanile, Qlikile ja Deliveroole. Viimase värskenduse kohaselt kasvab nakatunud pakettide arv jätkuvalt ning uusi nakkusi ilmub iga paari minuti tagant. See pole lihtsalt järjekordne trükivigade varastamise kampaania; see on keerukas, ennast levitav uss, mis varastab volitusi ja kasutab neid enda uuesti avaldamiseks kogu npm-i registris.
Rünnak lühidalt

Rünnak algas siis, kui keyv ja sellega seotud pakettide hooldaja Jared Wray GitHubi konto sattus ohtu. Ründaja saatis pahatahtlikud commit'id otse peaharusse ja lõikas välja uued versioonid, mis seejärel avaldati npm-is projekti enda usaldusväärse avaldamise töövoo kaudu. See tähendas, et mürgitatud versioonidel olid kehtivad SLSA päritolu kinnitused – funktsioon, millele paljud meeskonnad turvasignaalina toetuvad. Päritolu tõendab aga ainult seda, milline commit ehitati, mitte seda, kas commit oli autoriseeritud. Ründaja postitas ka võltsitud testfaile ja muudetud väljalaskeskripte, et tagada pahatahtlike versioonide saamine uusimaks dist-märgiseks.
Pahatahtlikud paketid sisaldasid eelinstallimisskripti, mis käivitas dropperi nimega setup.mjs. See dropper laadis GitHubist alla legitiimse Bun JavaScripti käituskeskkonna ja kasutas seda 727 KB suuruse hägustatud kasuliku koormuse Math_Symbol.js käivitamiseks. Kasulik koormus oli täisfunktsionaalne uss, mis kogus ohvri süsteemist volikirju, sealhulgas npm-tokeneid, GitHubi tokeneid, pilve volikirju, SSH-võtmeid ja isegi tehisintellekti tööriistade konfiguratsioone. Seejärel filtreeris see andmed käsklus- ja juhtimisserverisse, mis lahendati Ethereumi nutika lepingu abil – tehnika, mida tuntakse kui EtherHiding.
Mõjutatud paketid ja ulatus

Esialgne laine sihtis 11 jaredwray ökosüsteemi paketti, sealhulgas keyv@6.0.0, flat-cache@6.1.24 ja file-entry-cache@11.1.6. Need paketid on lugematute projektide transitiivsed sõltuvused, alates ESLintist kuni cache-managerini. Seejärel kasutas uss varastatud sisselogimisandmeid 433 täiendava paketi uuesti avaldamiseks, viies pakettide koguarvu esimeste tundide jooksul 444-ni ja versioonini 2,212. Sonatype'i ja Aikido hilisemad aruanded näitavad, et see arv on veelgi kasvanud, kusjuures ajaks, mil tolm vaibus, oli mõjutatud üle 1,000 paketi.
Teine laine tabas selliste organisatsioonide nagu @servicetitan, @qlik, @onereach ja @deliveroo pakette, mis viitab sellele, et uss oli avalikest arendustööriistadest liikunud ettevõtete ehitustorustikesse. Ründajad lõid ka Dune-teemaliste nimedega avalikke repositooriume, et levitada väljafiltreeritud andmeid, ning paigaldasid .vscode ja .claude kataloogidesse püsivusmehhanismid, et uuesti nakatada arendajaid, kes olid nakatunud repositooriumid avanud.
Kuidas keti langetamise uss töötab
See rünnakuahel on meistriklass maast sissetulekust elatise teenimises. Eelinstallimisskript käivitatakse enne mis tahes sõltuvuse installimist, seega käivitub uss kasutaja õigustega. Tilgutaja kontrollib, kas Bun on juba olemas; kui ei, siis laadib see GitHubist alla legitiimse Buni binaarfaili. See jätab võrguliiklusest mulje, et see pärineb github.com-ist. Seejärel eraldub teise etapi kasulik koormus taustaprotsessina ja alustab oma musta tööd.
Üks iseloomulikumaid tehnikaid on jooksja mälu kraapimine . Kasulik koormus käivitab Pythoni abiprogrammi, mis loeb GitHub Actions Runner.Worker protsessi mälu, otsides töövoogu sisestatud saladusi. See võimaldab tal jäädvustada OIDC tokeneid ja muid ajutisi volitusi, mis muidu töö lõppedes kaoksid. Uss kasutab ka vene keele kill switch'i, väljudes puhtalt, kui süsteemikeel on vene – see on levinud taktika SRÜ riikide sihtimise vältimiseks.
Rakendus sisaldab täielikku npm-i avaldamismootorit. See loetleb kõik paketid, mida ohver saab avaldada, laadib alla praeguse tarballi, süstib pahatahtliku eelinstalli skripti ja rakenduskoormuse ning avaldab paketi uuesti suurendatud versioonina. See genereerib isegi oma Sigstore'i ja SLSA päritolupaketid, pannes pahatahtlikud versioonid näima legitiimselt loodud olevat. See iselevimise mehhanism võimaldas ussil nii kiiresti levida omavahel mitteseotud organisatsioonides.
Kompromissi näitajad
Kui installisite mõne mõjutatud versiooni, eeldage, et teie süsteem on ohustatud. Otsige neid indikaatoreid:
- Failid nimega setup.mjs, Math_Symbol.js või math_init.js kataloogides node_modules.
- Ootamatud Buni binaarfailid teie süsteemis, eriti kui te pole Buni kunagi installinud.
- Muudatused failides .claude/settings.json või .vscode/tasks.json, mis viitavad failile setup.mjs.
- Väljaminevad ühendused npm-cache.com või awqhnjewqjkl.icu-ga või Ethereumi RPC-kõned lepingu 0xE1f2395ee43e45A1556EC6438a88c31B83493103 loomiseks.
- Uued GitHubi repositooriumid kirjeldustega nagu „Shai-Hulud: Here We Go Again” või Dune-teemalised nimed.
Samuti kontrollige pärast väljavoolu installitud token monitori: ~/.local/bin/gh-token-monitor.sh, ~/.config/gh-token-monitor/ ja systemd või LaunchAgent teenuseid. Uss installib selle mandaatide vahetamise karistamiseks, käivitades ründaja koormuse varastatud tokeni tühistamisel.
Leevendamine ja taastumine
Kui see mõjutab ka sind, tegutse kiiresti. Esmalt isoleeri masin ja säilita logid. Seejärel vaheta kõik süsteemis olnud volikirjad, sealhulgas npm-tokenid, GitHubi PAT-id, pilvevõtmed ja SSH-võtmed. Eemalda enne vahetamist tokenimonitor, kuna see käivitub tokeni tühistamisel. Seejärel puhasta lukustusfailid ja kinnita need teadaolevate toimivate versioonidega. Keyv, flat-cache ja file-entry-cache puhul kasuta pahatahtlike versioonide blokeerimiseks alistamisi. Lõpuks installi uuesti –ignore-scripts abil, et vältida võimalike installikonksude käivitumist.
CI/CD torujuhtmete puhul vaadake üle logid kõigi installide kohta, mis lahendasid kahjustatud versioonid kokkupuuteperioodi jooksul. Käsitlege iga käivitajat, kes installis mürgitatud paketi, ohustatuna ja vahetage kõiki sellele tööle saadaolevaid saladusi. Samuti auditeerige oma GitHubi organisatsioone ootamatute töövoogude suhtes nimega „Run Copilot” või artefaktide nimega „format-results”, mis on märgid ussi salajaste programmide pesemisest.
Sügavkaitse on ülioluline. Kasutage CI-jooksjatel väljuva andmevoo lubamisloendeid, et blokeerida dropperil Buni toomine. Rakendage jahtumisaja poliitikaid, mis nõuavad, et paketid oleksid enne kasutuselevõttu paar päeva vanad. Ja ärge lootke ainult päritolule – see ei ole ohutuse garantii. Parim kaitse on installiskriptide kasutamise minimeerimine ja anomaalse käitumise jälgimine.
Uurimise jätkudes kasvab mõjutatud pakettide arv endiselt. Ussi võime oma C2 infrastruktuuri ühe Ethereumi tehingu kaudu vahetada muudab selle eriti vastupidavaks. Turvameeskonnad peaksid jälgima nutilepingu muudatusi ja olema kursis uute näitajatega. npm-i register on alustanud pahatahtlike versioonide eemaldamist, kuid puhastamine on veel pooleli.
See intsident on terav meeldetuletus, et avatud lähtekoodiga ökosüsteem on sama turvaline kui selle nõrgim lüli. Üksainus ohustatud hooldajakonto võib viia ulatusliku tarneahela rünnakuni. ChainDropi uss on äratuskell arendajatele ja organisatsioonidele, et nad võtaksid kasutusele tugevamad turvapraktikad, sealhulgas mitmefaktorilise autentimise, vähimõigustega märgid ja pideva sõltuvuste jälgimise.