Twee versies van de veelgebruikte JavaScript-library axios zijn op 31 maart 2026 kwaadaardig gepubliceerd op npm. Achter de aanval zit een gekaapt maintaineraccount. De besmette versies installeren stilletjes een cross-platform Remote Access Trojan (RAT) op macOS, Windows en Linux.
Securitybedrijf StepSecurity ontdekte dat axios@1.14.1 en axios@0.30.4 zijn gepubliceerd via het gecompromitteerde npm-account van jasonsaayman, de voornaamste maintainer van het axios-project. De aanvaller wijzigde het e-mailadres van dat account naar een anoniem ProtonMail-adres en publiceerde de besmette packages handmatig via de npm CLI, volledig buiten het normale GitHub Actions CI/CD-proces om.
Axios telt meer dan 300 miljoen wekelijkse downloads en wordt gebruikt in vrijwel elk Node.js- en browserproject dat HTTP-verzoeken doet. Een gecompromitteerde versie heeft daardoor een enorm potentieel bereik. Opvallend genoeg bevat axios zelf geen enkele kwaadaardige regel code.
Nep-dependency als aanvalsvector
De aanvaller injecteerde een onbekende dependency genaamd plain-crypto-js@4.2.1 in beide axios-versies. Deze package is nergens in de axios-broncode geïmporteerd of gebruikt. Met andere woorden: het enige doel is het uitvoeren van een postinstall-script dat als RAT-dropper fungeert. De package vermomt zich wel als de legitieme crypto-js library, inclusief dezelfde beschrijving, auteursnaam en repository-URL.
Het dropper-script setup.js neemt na uitvoering drie opruimstappen. Het verwijdert zichzelf allereerst, verwijdert vervolgens het package.json met de malafide postinstall-hook, en vervangt dat bestand door een ‘schone’ vervanger. Wie achteraf node_modules/plain-crypto-js inspecteert, ziet een volkomen onschuldig ogende package. Maar de aanwezigheid van de map plain-crypto-js in node_modules is voldoende bewijs dat de dropper actief is geweest.
De aanval was zorgvuldig voorbereid, stellen de onderzoekers van Step Security. Op 30 maart om 07:57 Nederlandse tijd publiceerde de aanvaller eerst plain-crypto-js@4.2.0, een schone versie, puur om publicatiegeschiedenis op te bouwen. Pas bijna achttien uur later verscheen de kwaadaardige versie 4.2.1. Daarna volgden binnen een uur beide besmette axios-versies.
RAT bereikt macOS, Windows en Linux
Het dropper-script controleert het besturingssysteem en voert een platformspecifieke aanval uit. Op macOS wordt een RAT-binary opgeslagen in /Library/Caches/com.apple.act.mond — een pad dat bewust lijkt op een legitiem Apple-systeemproces. Op Windows kopieert de malware PowerShell naar %PROGRAMDATA%\wt.exe en voert een verborgen PowerShell-script uit. Op Linux downloadt het een Python-script naar /tmp/ld.py. Alle drie de payloads communiceren met dezelfde command-and-control-server op sfrclak.com:8000.
Zo dendert de dreiging vanuit npm-packages verder. Het is in feite een herhaling van een berucht recent incident. In december bleek de Shai-Hulud 2.0-worm zo’n 400.000 secrets van developers te hebben buitgemaakt via geïnfecteerde npm-packages, waarbij eveneens postinstall-scripts voor het aanvalspad werden gebruikt. En in september waren Chalk en Debug al gecompromitteerd na een phishingaanval op een maintaineraccount. Het gebruikte dus dezelfde tactiek als nu bij deze axios-aanval.
Wat te doen bij installatie van de besmette versies
Wie axios@1.14.1 of axios@0.30.4 heeft geïnstalleerd, moet ervan uitgaan dat het systeem gecompromitteerd is. StepSecurity adviseert te downgraden naar axios@1.14.0 of axios@0.30.3, de map node_modules/plain-crypto-js te verwijderen en te herinstalleren met npm install –ignore-scripts. Alle credentials op getroffen systemen, zoals npm-tokens, cloud-sleutels, SSH-sleutels en CI/CD-secrets, moeten worden geroteerd. In CI/CD-pipelines is –ignore-scripts als standaard maatregel aanbevolen om te voorkomen dat postinstall-scripts automatisch worden uitgevoerd.
StepSecurity bevestigde de werking van de malware via runtime-analyse met zijn Harden-Runner tool. Daarbij werd een verbinding naar het C2-domein gedetecteerd al 1,1 seconde na het starten van npm install.