Napadači su ukrali dugovječni npm pristupni token koji pripada glavnom održavatelju axiosnajpopularniju HTTP klijentsku biblioteku u JavaScriptu, te ju je upotrijebio za objavljivanje dviju zatrovanih verzija koje instaliraju trojanca za udaljeni pristup na više platformi. Zlonamjerna izdanja ciljaju na macOS, Windows i Linux. Bile su aktivne u npm registru otprilike tri sata prije uklanjanja.
Axios ima više od 100 milijuna preuzimanja tjedno. Wiz javlja nalazi se u približno 80% okruženja u oblaku i kodu, dotičući se svega, od React frontendova do CI/CD cjevovoda do funkcija bez poslužitelja. Otkrivena lovica prve infekcije 89 sekundi nakon što je maliciozni paket postao aktivan i potvrdio najmanje 135 kompromitiranih sustava među svojim korisnicima tijekom prozora izloženosti.
Ovo je treći major npm kompromis u opskrbnom lancu za sedam mjeseci. Svatko je iskorištavao vjerodajnice održavatelja. Ovaj put, meta je prihvatila svaku obranu koju je sigurnosna zajednica preporučila.
Sadržaj objave
Jedna vjerodajnica, dvije grane, 39 minuta
Napadač je preuzeo npm račun @jasonsaaymana, glavnog održavatelja axios-a, promijenio je e-poštu računa u anonimnu ProtonMail adresu i objavio zatrovane pakete putem npmsučelje naredbenog retka. Time je u potpunosti zaobiđen GitHub Actions CI/CD cjevovod projekta.
Napadač nikada nije dirao izvorni kod Axiosa. Umjesto toga, obje grane izdanja dobile su jednu novu ovisnost: plain-crypto-js@4.2.1. Nijedan dio baze koda ga ne uvozi. Paket postoji isključivo za pokretanje postinstalacijske skripte koja ispušta RAT za više platformi na stroj razvojnog programera.
Inscenacija je bila precizna. Osamnaest sati prije objave axiosa, napadač je objavio čistu verziju plain-crypto-js pod posebnim npm račun za izgradnju povijesti objavljivanja i izbjegavanje upozorenja skenera o novim paketima. Zatim je došao naoružani 4.2.1. Obje grane oslobađanja pogodile su unutar 39 minuta. Tri tereta specifična za platformu su unaprijed izgrađena. Zlonamjerni softver se briše nakon izvršenja i mijenja u čisti package.json kako bi osujetio forenzičku inspekciju.
StepSecuritykoji je identificirao kompromis uz Utičnicanazvao ga je jednim od operativno najsofisticiranijih napada na opskrbni lanac ikada dokumentiranih protiv top-10 npm paket.
Obrana koja je postojala na papiru
Axios je radio prave stvari. Legitimna 1.x izdanja isporučena putem GitHub Actions pomoću npmOIDC Trusted Publisher mehanizam, koji kriptografski povezuje svaku objavu s potvrđenim CI/CD tijek rada. Projekt je proveo SLSA potvrde o podrijetlu. Prema svim suvremenim mjerama, sigurnosni sklop izgledao je solidno.
Ništa od toga nije bilo važno. Huntress se ukopala u radni tijek objave i pronašao prazninu. Projekt je ipak prošao NPM_TOKEN kao varijabla okruženja odmah uz OIDC vjerodajnice. Kada su oboje prisutni, npm zadana vrijednost tokena. Dugotrajni klasični token bio je prava metoda provjere autentičnosti za svaku objavu, bez obzira na to kako je OIDC konfiguriran. Napadač nikada nije morao poraziti OIDC. Zaobišli su ga. Naslijeđeni token nalazio se tamo kao paralelni put autentifikacije, i npmVlastita hijerarhija tiho je to preferirala.
“Iz mog iskustva u AWS-u, vrlo je uobičajeno da se stari mehanizmi autentifikacije zadržavaju”, rekao je Merritt Baer, CSO u Enkrypt AI i bivši zamjenik CISO-a u AWS-u, u ekskluzivnom intervjuu za VentureBeat. “Moderne kontrole se implementiraju, ali ako naslijeđeni tokeni ili ključevi nisu povučeni, sustav im tiho daje prednost. Baš kao što smo vidjeli sa SolarWinds, gdje su naslijeđene skripte zaobišle noviji nadzor.”
Održavatelj objavljeno na GitHubu nakon otkrivanja kompromisa: “Pokušavam dobiti podršku da shvatim kako se to uopće dogodilo. Imam 2FA / MFA na praktički svemu s čime komuniciram.”
Endor Labs dokumentiran forenzička razlika. Legitiman axios@1.14.0 pokazao je OIDC porijeklo, zapis pouzdanog izdavača i gitHead koji povezuje s određenim predanjem. Zlonamjeran axios@1.14.1 nije imao. Svaki alat koji provjerava porijeklo odmah bi označio prazninu. Ali provjera porijekla je opt-in. Nijedan pristupnik registra nije odbio paket.
Tri napada, sedam mjeseci, isti uzrok
Tri npm kompromise u opskrbnom lancu u sedam mjeseci. Svaki je počeo s ukradenom vjerodajnicom za održavanje.
The Crv Shai-Hulud hit u rujnu 2025. Jedan račun održavatelja krađe identiteta dao je napadačima uporište koje se samorepliciralo više od 500 paketaberba npm tokena, vjerodajnica u oblaku i GitHub tajni kako se širio. CISA je izdala upozorenje. GitHub remontiran npm’cijeli model autentifikacije kao odgovor.
Zatim u siječnju 2026., Koi Security’s PackageGate istraživanje ispustio je šest ranjivosti nultog dana u npm-u, pnpm, vlti Bun koji je probio samu obranu koju je ekosustav usvojio nakon Shai-Huluda. Integritet zaključane datoteke i blokiranje skripti nisu uspjeli pod određenim uvjetima. Tri od četiri upravitelja paketa zakrpana su u roku od nekoliko tjedana. npm je zatvorio izvješće.
Sada axios. Ukradeni dugovječni token objavio je RAT kroz obje grane izdanja unatoč OIDC-u, SLSA-i i svim mjerama očvršćivanja nakon Shai-Huluda.
npm poslao stvarne reforme nakon Shai-Huluda. Stvaranje novih klasičnih tokena zastarjelo je, iako su već postojeći preživjeli do strogog roka za opoziv. FIDO 2FA postao je obavezan, granularni pristupni tokeni bili su ograničeni na sedam dana za objavljivanje, a pouzdano objavljivanje putem OIDC-a dalo je projektima kriptografsku alternativu pohranjenim vjerodajnicama. Uzete zajedno, te su promjene očvrsnule sve nizvodno od računa održavatelja. Ono što nisu promijenili je sam račun. Vjerodajnica je ostala jedina točka neuspjeha.
“Kompromis vjerodajnica je tema koja se stalno ponavlja npm kršenja”, rekao je Baer. “Ovo nije samo problem sa slabom lozinkom. To je strukturalno. Bez efemernih vjerodajnica, nametnutog MFA-a ili izoliranih okruženja za izgradnju i potpisivanje, pristup održavatelja ostaje slaba karika.”
Što je npm poslao u odnosu na ono što je ovaj napad prošao
|
Što treba čelnicima SPC-a |
|
naspram axios napada |
Jaz |
|
Blokirajte objavljivanje ukradenih tokena |
Potreban je FIDO 2FA. Granularni tokeni, istek 7 dana. Klasični tokeni su zastarjeli |
Zaobiđen. Legacy token koegzistirao je uz OIDC. |
Nikakva provedba ne uklanja naslijeđene tokene kada je OIDC konfiguriran |
|
Provjerite porijeklo paketa |
OIDC Trusted Publishing putem GitHub akcija. SLSA ateste |
Zaobiđen. Zlonamjerne verzije nisu imale porijeklo. Objavljeno putem CLI-ja |
Nijedan pristup ne odbija pakete kojima nedostaje porijeklo iz projekata koji su ga prethodno imali |
|
Uhvatite zlonamjerni softver prije instalacije |
Socket, Snyk, Aikido automatizirano skeniranje |
Djelomično. Utičnica označena za 6 min. Prve infekcije dogodile su se nakon 89 sekundi |
Razmak između otkrivanja i uklanjanja. Skeneri ga hvataju, uklanjanje registra traje satima |
|
Blokiraj izvršenje nakon instalacije |
–ignore-skripte preporučene u CI/CD |
Ne provodi se. |
postinstall ostaje primarni vektor zlonamjernog softvera u svim većim |
|
Zaključaj verzije ovisnosti |
Provedba zaključane datoteke putem |
Učinkovito samo ako je zaključana datoteka potvrđena prije kompromitacije. Automatski razriješeni rasponi kareta |
Rasponi karata su |
Što sada učiniti u vašem poduzeću
Čelnici SOC-a čije organizacije pokreću Node.js trebali bi ovo tretirati kao aktivni incident dok ne potvrde čiste sustave. Trosatni prozor izloženosti pao je tijekom vršnih sati razvoja u azijsko-pacifičkim vremenskim zonama, a svaki CI/CD cjevovod koji je pokrenuo npm instalaciju preko noći mogao je automatski povući ugroženu verziju.
“Prvi prioritet je procjena utjecaja: koje su građevine i daljnji potrošači progutali ugroženi paket?” rekao je Baer. “Zatim obuzdavanje, krpanje i konačno transparentno izvješćivanje rukovodstva. Što se dogodilo, što je izloženo i koje će kontrole spriječiti ponavljanje. Lekcije iz log4j-a i toka događaja pokazuju da su brzina i jasnoća važni koliko i sam popravak.”
-
Provjerite izloženost. Pretražite zaključane datoteke i CI zapisnike
axios@1.14.1,axios@0.30.4iliplain-crypto-js. Prikvači naaxios@1.14.0iliaxios@0.30.3. -
Pretpostaviti kompromis ako je pogođen. Ponovo izgradite pogođene strojeve iz poznatog dobrog stanja. Rotirajte sve dostupne vjerodajnice: npm tokene, AWS ključeve, SSH ključeve, vjerodajnice za oblak, CI/CD tajne, .env vrijednosti.
-
Blokirajte C2. Dodati sfrclak.com i 142.11.206.73 na popise blokiranih DNS-a i pravila vatrozida.
-
Provjerite RAT artefakte.
/Library/Caches/com.apple.act.mondna macOS-u.%PROGRAMDATA%\wt.exena Windowsima./tmp/ld.py on Linux. Ako se pronađe, izvršite potpunu ponovnu izgradnju. -
Očvrsnuti naprijed. Provoditi
npm ci --ignore-scriptsu CI/CD. Zahtijevajte instalacije samo za zaključanu datoteku. Odbijte pakete kojima nedostaje porijeklo iz projekata koji su ga prethodno imali. Provjerite postoje li naslijeđeni tokeni zajedno s OIDC-om u vašim vlastitim tijekovima rada objavljivanja.
Rupu u vjerodajnicama nitko nije zatvorio
Tri napada u sedam mjeseci. Svaki različit u izvedbi, identičan u korijenskom uzroku. npmSigurnosni model još uvijek tretira pojedinačne račune održavatelja kao krajnje sidro povjerenja. Ti računi ostaju osjetljivi na otmicu vjerodajnica, bez obzira na to koliko se slojeva doda nizvodno.
“AI uočava rizične pakete, revidira naslijeđenu autentifikaciju i ubrzava odgovor SOC-a”, rekao je Baer. “Ali ljudi i dalje kontroliraju vjerodajnice održavatelja. Mi smanjujemo rizik. Ne eliminiramo ga.”
Obavezna potvrda porijekla, gdje je ručno CLI objavljivanje u potpunosti onemogućeno, uhvatila bi ovaj napad prije nego što je stigao do registra. Isto bi bilo i obvezno potpisivanje više strana, pri čemu niti jedan održavatelj ne može sam pokrenuti izdanje. Niti se danas ne provodi. npm je signalizirao da je na planu onemogućavanje tokena prema zadanim postavkama kada je pouzdano objavljivanje omogućeno. Dok se ne isporuči, svaki projekt koji pokreće OIDC zajedno s naslijeđenim tokenom ima iste aksiote mrtve točke.
Održavatelj axios-a učinio je ono što je zajednica tražila. Naslijeđeni token za koji nitko nije znao da je još uvijek aktivan i potkopao je sve.