Das weitverbreitete JavaScript-HTTP-Client-Paket Axios ist Ziel eines gezielten Supply-Chain-Angriffs auf das npm-Ökosystem geworden. Zwei manipulierte Versionen des Pakets installierten unbemerkt eine zusätzliche Abhängigkeit, die wiederum einen plattformübergreifenden Remote-Access-Trojaner (RAT) nachlud und ausrollte. Angesichts von über 83 Millionen Downloads pro Woche verdeutlicht dieser Vorfall das Risiko, das von kompromittierten Open-Source-Paketen ausgeht.
Axios-Supply-Chain-Angriff auf npm: Betroffene Versionen und Einstiegspunkt
Nach Analysen von StepSecurity waren die Versionen Axios 1.14.1 und Axios 0.30.4 betroffen. Beide enthielten eine zuvor unbekannte Abhängigkeit [email protected]. Der eigentliche Axios-Quellcode wurde nicht verändert; die Kompromittierung erfolgte allein über diese zusätzliche, scheinbar legitime Bibliothek.
Auffällig ist, dass plain-crypto-js im Axios-Code nirgendwo importiert oder genutzt wurde. Die Abhängigkeit diente ausschließlich dazu, ein postinstall-Skript auszuführen. Dieses Skript fungierte als Dropper, also als kleine Komponente, die nach der Installation einen vollwertigen RAT für Windows, macOS und Linux nachlud und installierte.
Die betroffenen Versionen wurden inzwischen aus dem npm-Registry entfernt, ebenso wie das Paket plain-crypto-js. Nutzerinnen und Nutzern wird dringend empfohlen, sofort auf Axios 1.14.0 bzw. 0.30.3 zurückzurollen und alle möglicherweise betroffenen Systeme als kompromittiert zu behandeln. Dazu gehört insbesondere die Rotation sämtlicher Zugangsdaten (API-Tokens, SSH-Keys, Passwörter), die auf Systemen mit den manipulierten Versionen genutzt wurden.
Angriffsvektor: Kompromittiertes npm-Konto und Umgehung der CI/CD-Pipeline
Die Untersuchungen zeigen, dass Angreifer Zugriff auf das npm-Konto des Hauptmaintainers „jasonsaayman“ erlangten und die hinterlegte E-Mail-Adresse auf eine Proton-Mail-Adresse unter ihrer Kontrolle änderten. Das schadhafte Paket plain-crypto-js wurde über ein separates npm-Konto mit dem Namen „nrwise“ verteilt.
Vermutet wird der Missbrauch eines langfristig gültigen classic access token von npm. Ein solcher Token erlaubt Veröffentlichungen direkt ins npm-Registry und kann – wenn außerhalb der regulären CI/CD-Pipelines verwendet – Qualitätssicherungs- und Sicherheitsprüfungen (z. B. GitHub Actions) umgehen. Dieser Aspekt ist aus Sicht der Software-Lieferkette besonders kritisch, da die Integrität des Build- und Release-Prozesses unterlaufen wird.
Laut den Forschern war der Angriff klar vorbereitet und zeitlich koordiniert: Die bösartige Abhängigkeit wurde bereits rund 18 Stunden vor der Axios-Manipulation bereitgestellt, drei plattformspezifische Payloads wurden vorab gebaut, und beide Axios-Release-Linien wurden innerhalb von weniger als 40 Minuten angepasst.
Technische Analyse: postinstall-Dropper, C2-Infrastruktur und Tarnmechanismen
Postinstall-Skript und C2-Kommunikation
Im Kern von plain-crypto-js befindet sich ein stark obfuskierter Node.js-Dropper „setup.js“. Er wird automatisch bei der Installation über den postinstall-Hook gestartet, ermittelt zunächst das Betriebssystem und initiiert dann die nächste Stufe der Attacke.
Für jede Plattform sendet der Dropper einen individuellen HTTP-POST-Request an denselben Command-&-Control-Server (C2) unter der Adresse packages.npm.org, aber mit unterschiedlichen Pfaden: /product0 für macOS, /product1 für Windows und /product2 für Linux. Dadurch kann der C2-Server abhängig von der Plattform die passende Binärdatei zurückliefern, ohne mehrere Domains oder komplexe Routing-Logik zu benötigen.
Remote-Access-Trojaner: Fähigkeiten und Verhalten
Unter macOS wird ein in C++ entwickelter RAT nachgeladen. Dieser führt zunächst ein detailliertes System-Fingerprinting durch (z. B. Hostname, Betriebssystemversion, Hardware-Informationen) und meldet sich anschließend in regelmäßigen Abständen von rund 60 Sekunden beim C2-Server.
Der RAT ist in der Lage, beliebige Shell-Kommandos auszuführen, weitere Payloads nachzuladen, die Dateisystemstruktur zu enumerieren und sich auf Befehl wieder zu deaktivieren. Solche Fähigkeiten entsprechen typischen Remote-Access-Trojanern, wie sie auch in anderen Supply-Chain-Vorfällen beobachtet wurden. Branchenberichte wie der State of the Software Supply Chain von Sonatype dokumentieren seit Jahren einen wachsenden Missbrauch populärer Open-Source-Pakete für genau diese Art von Zugriff.
Spurenverwischung in der Paketstruktur
Um forensische Analysen zu erschweren, führt das Node.js-Skript nach Installation des RAT mehrere Schritte zur Verschleierung durch:
Es entfernt den postinstall-Eintrag aus dem installierten Paket, löscht die zugehörige package.json und benennt eine harmlose Datei package.md in package.json um. Diese alternative Manifestdatei enthält keine Hooks. So wirkt das installierte Paket bei oberflächlicher Betrachtung unauffällig, selbst wenn später eine manuelle Analyse erfolgt.
Weitere betroffene Pakete und Indikatoren für Kompromittierung
Das auf Software-Lieferkettensicherheit spezialisierte Unternehmen Socket identifizierte zwei weitere Pakete im Zusammenhang mit dieser Kampagne:
– @shadanai/openclaw, in dem plain-crypto-js tief in der Verzeichnisstruktur als vendored-Abhängigkeit eingebettet ist.
– @qqbrowser/[email protected], das einen manipulierten [email protected] im eigenen node_modules-Verzeichnis mitbringt.
Ein wichtiger Indikator für Kompromittierung ist die Liste der Abhängigkeiten: Der legitime Axios-Release benötigt lediglich follow-redirects, form-data und proxy-from-env. Das Auftauchen von plain-crypto-js als zusätzlicher Dependency ist ein klarer Hinweis auf Manipulation und einen Angriff auf die Lieferkette.
Risiken für die Software-Lieferkette und empfohlene Gegenmaßnahmen
Der Vorfall reiht sich ein in eine Serie von npm-Supply-Chain-Angriffen, bei denen populäre Pakete als Hebel genutzt werden, um in Entwicklungs- und Produktionsumgebungen einzudringen. Ähnliche Muster waren in der Vergangenheit u. a. bei event-stream oder ua-parser-js zu beobachten. Das Grundproblem bleibt dasselbe: transitive Abhängigkeiten und das Vertrauen in Maintainer-Konten.
Konkrete Maßnahmen für Entwickler und Unternehmen
Organisationen sollten umgehend prüfen, ob sie die Versionen Axios 1.14.1 oder 0.30.4, @shadanai/openclaw oder @qqbrowser/[email protected] in Projekten oder Build-Pipelines eingesetzt haben. Lockfiles wie package-lock.json und yarn.lock sollten gezielt auf Einträge zu plain-crypto-js durchsucht werden.
Werden Spuren der kompromittierten Pakete gefunden, ist die betroffene Umgebung als vollständig kompromittiert zu behandeln. Empfohlen sind ein vollständiger Malware-Scan, gegebenenfalls das Neuaufsetzen der Systeme, die Rotation aller Secrets (inklusive npm-, GitHub- und Cloud-Tokens) sowie eine saubere Neuinstallation aller Abhängigkeiten aus vertrauenswürdigen Quellen.
Darüber hinaus sollten Unternehmen ihre Account-Sicherheit und Token-Strategie überarbeiten: verpflichtende 2-Faktor-Authentifizierung für npm- und GitHub-Konten, Einsatz kurzlebiger oder fein granuliert berechtigter Tokens und klare Trennung von CI/CD- und Entwicklerzugängen. Ergänzend helfen Software-Composition-Analysis(SCA)-Tools, automatisierte Prüfungen auf verdächtige postinstall-Skripte und ungewohnte Abhängigkeiten zu implementieren.
Der Axios-Vorfall unterstreicht, dass Supply-Chain-Sicherheit im npm-Ökosystem kein Randthema mehr ist, sondern ein zentrales Element moderner Cybersecurity-Strategien. Wer auf Open-Source-Bibliotheken setzt, sollte nicht nur Schwachstellen-Reports im Blick behalten, sondern systematisch prüfen, wer veröffentlicht, wie Pakete gebaut werden und welche zusätzlichen Skripte oder Abhängigkeiten eingeschleust werden. Jede investierte Stunde in die Härtung der Lieferkette reduziert das Risiko, dass ein einzelnes kompromittiertes Paket zur Einfallstür für die gesamte Infrastruktur wird.