Aanvallers hebben een langlevend npm-toegangstoken gestolen dat toebehoort aan de hoofdonderhouder axioma’sde meest populaire HTTP-clientbibliotheek in JavaScript, en gebruikte deze om twee vergiftigde versies uit te brengen die een platformonafhankelijke trojan voor externe toegang installeren. De kwaadaardige releases zijn gericht op macOS, Windows en Linux. Ze stonden ongeveer drie uur live in het npm-register voordat ze werden verwijderd.
Axios krijgt meer dan 100 miljoen downloads per week. Wiz meldt het bevindt zich in ongeveer 80% van de cloud- en codeomgevingen en heeft betrekking op alles, van React-front-ends tot CI/CD-pijplijnen en serverloze mogelijkheden. Jager ontdekt de eerste infecties 89 seconden nadat het kwaadaardige pakket live ging, waarbij tijdens de blootstellingsperiode ten minste 135 gecompromitteerde systemen onder zijn klanten werden bevestigd.
Dit is de derde grote npm compromis in de toeleveringsketen binnen zeven maanden. Alle gebruikte beheerdersreferenties. Deze keer had het doelwit elke verdediging overgenomen die de veiligheidsgemeenschap had aanbevolen.
Eén ID, twee vestigingen, 39 minuten
De aanvaller nam het over npm account van @jasonsaayman, een hoofdonderhouder van axios, veranderde het e-mailadres van het account in een anoniem ProtonMail-adres en publiceerde de vergiftigde pakketten via npm’s opdrachtregelinterface. Het omzeilde de GitHub Actions CI/CD-pijplijn van het project volledig.
De aanvaller heeft nooit de broncode van Axios aangeraakt. In plaats daarvan kregen beide release-takken één nieuwe afhankelijkheid: plain-crypto-js@4.2.1. Geen enkel deel van de codebase importeert het. Het pakket bestaat uitsluitend om een postinstall-script uit te voeren dat een platformonafhankelijke RAT op de computer van de ontwikkelaar plaatst.
De enscenering was perfect. Achttien uur voordat axios wordt vrijgegeven, heeft de aanvaller een schone versie van plain-crypto-js onder een aparte npm account om de releasegeschiedenis op te bouwen en scannerwaarschuwingen voor nieuwe pakketten te vermijden. Toen kwam de gewapende 4.2.1. Beide releasetakken waren binnen 39 minuten raak. Er zijn drie platformspecifieke payloads vooraf gebouwd. De malware verwijdert zichzelf na uitvoering en wisselt in een schoon package.json om forensische inspectie te frustreren.
Veiligheid op stapdie het compromis naast de deur identificeerde Stekkerdoosnoemde het een van de meest operationeel geavanceerde supply chain-aanvallen ooit gedocumenteerd, vergeleken met een top-10 npm pakket.
De verdediging die op papier bestond
Axios deed de juiste dingen. Legitieme 1.x-releases ingediend via GitHub Actions met behulp van npm’s OIDC Trusted Publisher-mechanisme, dat elke publicatie cryptografisch bindt aan een geverifieerde CI/CD-workflow. Het project beschikte over SLSA-oorsprongscertificaten. Volgens alle moderne normen zag de beveiligingsstack er solide uit.
Dat deed er allemaal niet toe. Huntress verdiepte zich in de publicatieworkflow en vond het gat. Het project bleef bestaan NPM_TOKEN als een omgevingsvariabele direct naast de OIDC-inloggegevens. Wanneer beide aanwezig zijn, npm standaard token. Het klassieke langlevende token was de juiste authenticatiemethode voor elke release, ongeacht hoe OIDC was geconfigureerd. De aanvaller hoefde de OIDC nooit te verslaan. Ze liepen er omheen. Een verouderd token zat daar als een parallel authenticatiepad, en npm’s eigen hiërarchie gaf er stilletjes de voorkeur aan.
“Uit mijn ervaring bij AWS is het heel gebruikelijk dat oude authenticatiemechanismen blijven hangen”, zegt Merritt Baer, CSO bij Enkrypt AI en voormalig plaatsvervangend CISO bij AWS, in een exclusief interview met VentureBeat. “Er zijn moderne controles geïmplementeerd, maar als oudere tokens of sleutels niet worden teruggetrokken, geeft het systeem daar stilletjes de voorkeur aan. Net zoals we zagen bij SolarWinds, waar oudere scripts nieuwere monitoring omzeilden.”
De onderhouder gepubliceerd op GitHub nadat ik het compromis had ontdekt: “Ik probeer steun te krijgen om te begrijpen hoe dit überhaupt is gebeurd. Ik heb 2FA / MFA voor vrijwel alles waarmee ik communiceer.”
Endor Labs gedocumenteerd het forensische verschil. Legitiem axios@1.14.0 toonde OIDC-herkomst, een vertrouwd uitgeversrecord en een gitHead die naar een specifieke commit linkte. Kwaadwillend axios@1.14.1 had er geen. Elk hulpmiddel dat de afkomst controleert, zou het gat onmiddellijk hebben gemarkeerd. Maar ouderschapsverificatie is opt-in. Geen enkel registratieportaal heeft het pakket afgewezen.
Drie aanvallen, zeven maanden, dezelfde oorzaak
Drie npm supply chain-compromissen binnen zeven maanden. Het begon allemaal met een gestolen beheerdersreferentie.
De Shai-Hulud-worm werd in september 2025 getroffen. Eén enkel phishing-onderhoudsaccount gaf aanvallers voet aan de grond en repliceerde zichzelf over de hele wereld. ruim 500 pakkettenoogst npm tokens, cloudreferenties en GitHub-geheimen terwijl deze zich verspreidden. CISA heeft een kennisgeving uitgegeven. GitHub ingehaald npm’s volledige authenticatiemodel als reactie.
Dus in januari 2026 komt Koi Security PackageGate-onderzoek zes zero-day-kwetsbaarheden in npm gedaald, pnpm, vlten Bun, die de verdedigingsmechanismen doorbrak die het ecosysteem na Shai-Hulud had aangenomen. Het vergrendelen van de bestandsintegriteit en het blokkeren van scripts mislukten beide onder specifieke omstandigheden. Drie van de vier pakketbeheerders hadden binnen enkele weken een patch. npm sloot het rapport.
Nu axioma’s. Een gestolen token met een lange levensduur bracht een RAT vrij via beide vrijgavetakken, ondanks OIDC, SLSA en alle verhardingsmaatregelen na Shai-Hulud.
npm stuurde echte hervormingen na Shai-Hulud. Het maken van nieuwe klassieke tokens werd verouderd, hoewel reeds bestaande tokens bleven bestaan tot een harde intrekkingsdeadline. FIDO 2FA werd verplicht, gedetailleerde toegangstokens waren beperkt tot zeven dagen voor uitgifte, en vertrouwde uitgifte via OIDC gaf projecten een cryptografisch alternatief voor opgeslagen inloggegevens. Samen hebben deze veranderingen alles stroomafwaarts van de onderhoudsrekening verhard. Wat ze niet veranderden, was het account zelf. Het bewijs bleef het enige punt van mislukking.
“Credential compromis is het gemeenschappelijke thema over de hele linie npm inbreuk,” zei Baer. “Dit is niet alleen een zwak wachtwoordprobleem. Het is structureel. Zonder vluchtige inloggegevens, afgedwongen MFA of geïsoleerde bouw- en ondertekeningsomgevingen blijft onderhoudstoegang de zwakke schakel.”
Wat npm heeft verzonden versus hoe deze aanval is verlopen
|
Wat SOC-leiders nodig hebben |
|
versus axios-aanval |
De kloof |
|
Blokkeer gestolen tokens voor publicatie |
FIDO 2FA vereist. Gedetailleerde tokens, vervaldatum van 7 dagen. Klassieke tokens zijn verouderd |
Omzeild. Naast OIDC bestond er een Legacy-token. |
Geen handhaving verwijdert verouderde tokens wanneer OIDC is geconfigureerd |
|
Controleer de herkomst van het pakket |
OIDC Trusted Publishing via GitHub-acties. SLSA-certificaten |
Omzeild. Schadelijke versies hadden geen oorsprong. Gepubliceerd via CLI |
Geen enkele poort wijst pakketten af die geen herkomst hebben van projecten die deze voorheen wel hadden |
|
Vang malware vóór de installatie |
Socket, Snyk, Aikido geautomatiseerd scannen |
Gedeeltelijk. Stekkerdoos gemarkeerd in 6 min. De eerste infectie vond plaats na 89 seconden |
Interval van detectie tot verwijdering. Scanners vangen het op, het verwijderen van het register duurt uren |
|
Blokuitvoering na installatie |
–negeer scripts aanbevolen in CI/CD |
Niet afgedwongen. |
postinstall blijft de primaire malwarevector in alle grote gevallen |
|
Afhankelijkheidsversies vergrendelen |
Bestandshandhaving vergrendelen via |
Alleen effectief als het lockfile wordt vastgelegd voordat er een compromis is gesloten. Caret-intervallen worden automatisch opgelost |
Caret-intervallen zijn |
Wat moet u nu doen in uw bedrijf?
SOC-managers van wie de organisaties Node.js gebruiken, moeten dit als een actief incident behandelen totdat ze schone systemen bevestigen. Het blootstellingsvenster van drie uur viel tijdens piekuren in de tijdzones van Azië en de Stille Oceaan, en elke CI/CD-pijplijn die ’s nachts een NPM-installatie draaide, had de gecompromitteerde versie automatisch kunnen ophalen.
“De eerste prioriteit is impactanalyse: welke bouwers en downstream-consumenten hebben het gecompromitteerde pakket gebruikt?” zei Baer. “Dan inperking, patching en ten slotte transparante rapportage aan het management. Wat er is gebeurd, wat er is onthuld en welke controles een herhaling kunnen voorkomen. De lessen die zijn geleerd uit log4j en de evenementenstroom demonstreren snelheid en duidelijkheid, net zo goed als de oplossing zelf.”
-
Controleer de belichting. Zoeken naar vergrendelingsbestanden en CI-logboeken
axios@1.14.1,axios@0.30.4ofplain-crypto-js. Bevestig aanaxios@1.14.0ofaxios@0.30.3. -
Sluit een compromis als je geraakt wordt. Herstel de getroffen machines vanuit een bekende goede staat. Roteer alle beschikbare inloggegevens: npm-tokens, AWS-sleutels, SSH-sleutels, cloudinloggegevens, CI/CD-geheimen, .env-waarden.
-
Blok C2. Toevoegen sfrclak.com en 142.11.206.73 voor DNS-blokkeerlijsten en firewallregels.
-
Controleer op RAT-artefacten.
/Library/Caches/com.apple.act.mondop macOS.%PROGRAMDATA%wt.exeop Windows./tmp/ld.py on Linux. Indien gevonden, voer dan een volledige herbouw uit. -
Harden gaat vooruit. Afdwingen
npm ci --ignore-scriptsin CI/CD. Vereist alleen installaties van vergrendelingsbestanden. Weiger pakketten zonder herkomst van projecten die deze voorheen wel hadden. Controleer of verouderde tokens naast OIDC bestaan in uw eigen publicatieworkflows.
Het gat in de referenties is door niemand gedicht
Drie aanvallen in zeven maanden. Elk is verschillend in uitvoering, identiek in basisoorzaak. npmHet beveiligingsmodel van Google beschouwt individuele beheerdersaccounts nog steeds als het ultieme vertrouwensanker. Deze accounts blijven kwetsbaar voor het kapen van inloggegevens, ongeacht hoeveel lagen er stroomafwaarts worden toegevoegd.
“AI detecteert risicovolle pakketten, controleert oude authenticatie en versnelt de SOC-reactie”, aldus Baer. “Maar mensen controleren nog steeds de inloggegevens van de beheerder. We beperken het risico. We elimineren het niet.”
Verplichte herkomst, waarbij handmatige CLI-publicatie volledig was uitgeschakeld, zou deze aanval hebben opgevangen voordat deze het register bereikte. Dat geldt ook voor verplichte ondertekening door meerdere partijen, waarbij geen enkele onderhouder alleen een release kan doorvoeren. Geen van hen wordt vandaag de dag gehandhaafd. npm heeft aangegeven dat het standaard uitschakelen van tokens wanneer vertrouwd publiceren is ingeschakeld op de routekaart staat. Totdat het wordt verzonden, heeft elk project dat OIDC naast een oud token uitvoert, dezelfde blinde vlekken.
De Axios-onderhouder deed wat de gemeenschap vroeg. Een oud teken waarvan niemand besefte dat het nog steeds actief was en alles ondermijnde.

