Kurz gesagt
Am 30.–31. März 2026 wurden die axios-Versionen 1.14.1 und 0.30.4 auf npm mit einer bösartigen Abhängigkeit kompromittiert, die einen Remote Access Trojaner (RAT) auf infizierten Maschinen platziert. Beide Versionen wurden von der Veröffentlichung zurückgezogen. Die sichere Version ist 1.14.0. Wenn Sie axios@1.14.1 oder 0.30.4 installiert haben, behandeln Sie die Maschine als kompromittiert und ändern Sie sofort alle Zugangsdaten.
Was axios ist und warum dies wichtig ist
axios hat wöchentlich 100 Millionen Downloads auf npm. Es ist der HTTP-Client in unzähligen Frontend-Frameworks, Backend-Node.js-Diensten und Unternehmensanwendungen. Wenn ein so grundlegendes Paket kompromittiert wird, ist das Ausmaß der Auswirkungen enorm – Entwickler, die in einem engen Zeitfenster am 30.–31. März `npm install` ausgeführt haben, haben unwissentlich Malware auf ihre Maschinen heruntergeladen.
Dies ist kein hypothetisches Lieferkettenrisiko. Es ist geschehen, wurde bestätigt, und die Nutzlast war ernst: ein mehrstufiger Remote Access Trojaner, der beliebige Befehle ausführen, Systemdaten exfiltrieren und auf infizierten Maschinen persistent bleiben kann.
Wenn Ihr Team axios verwendet und Sie Apidog zum Entwerfen und Testen Ihrer HTTP-Client-Integrationen nutzen, lesen Sie dies vor Ihrem nächsten Deployment.
Chronologie des Angriffs
30. März 2026 — 23:59:12 UTC: Ein bösartiges Paket namens plain-crypto-js@4.2.1 wird von einem Konto mit nrwise@proton.me auf npm veröffentlicht. Eine frühere saubere Version (4.2.0) wurde 18 Stunden zuvor als überzeugendes Typosquatting der legitimen crypto-js-Bibliothek veröffentlicht.
31. März 2026 — 00:05:41 UTC: Die automatisierte Malware-Erkennung von Socket kennzeichnet plain-crypto-js@4.2.1 als bösartig – sechs Minuten nach der Veröffentlichung.
31. März 2026 — kurz nach Mitternacht: axios@1.14.1 wird auf npm veröffentlicht und zieht plain-crypto-js@4.2.1 als Abhängigkeit ein. Die Veröffentlichung erscheint nicht in den offiziellen Tags des axios GitHub-Repositorys. Der aktuellste legitime Tag bleibt v1.14.0.
31. März 2026 — Vormittag: Das GitHub-Issue #10604 wird öffentlich eröffnet und meldet sowohl axios@1.14.1 als auch axios@0.30.4 als kompromittiert. Die axios-Betreuer bestätigen, dass sie den Zugriff des Angreifers zunächst nicht widerrufen können – das kompromittierte Konto hat höhere npm-Berechtigungen als die legitimen Betreuer.
31. März 2026: Sowohl axios@1.14.1 als auch axios@0.30.4 werden von npm zurückgezogen. Die axios-Betreuer beginnen mit dem Widerruf von Tokens, der Verschärfung der Veröffentlichungskontrollen und der Untersuchung, wie ein langlebiges npm-Token ausgenutzt wurde, um unbefugten Veröffentlichungszugriff zu erhalten.
Wie der Angriff funktionierte
Der Angriff nutzte eine Lücke im Veröffentlichungs-Workflow von axios aus: ein langlebiges npm-Token, das zusammen mit vertrauenswürdiger Veröffentlichung verwendet worden war. Der Angreifer – wahrscheinlich nach der Kompromittierung der Zugangsdaten eines Betreuers – verwendete dieses Token, um eine neue Version außerhalb des normalen Release-Prozesses zu veröffentlichen.
Die neue Version führte plain-crypto-js@4.2.1 als Abhängigkeit ein. Der Paketname wurde so konzipiert, dass er wie ein legitimes Kryptographie-Dienstprogramm aussieht; die frühere saubere Version 4.2.0 etablierte eine kurze Historie, um den Verdacht zu mindern.
Innerhalb von plain-crypto-js@4.2.1 fand die Analyse von Socket eine mehrstufige Nutzlast:
- Stufe 1 — Ausführung: Das Paket führt zum Installationszeitpunkt Code aus (über npm-Lifecycle-Skripte), um eine sekundäre Nutzlast abzulegen.
- Stufe 2 — RAT-Bereitstellung: Die Nutzlast installiert einen Remote Access Trojaner, der eine persistente Hintertür öffnet.
- Stufe 3 — Exfiltration: Der RAT ist in der Lage, beliebige Shell-Befehle von einem C2-Server auszuführen, Umgebungsvariablen und Geheimnisse vom Dateisystem zu lesen und Systemdaten über das Netzwerk zu versenden.
Der RAT bleibt über Neustarts hinweg bestehen, was bedeutet, dass Maschinen, die die kompromittierte Version installiert haben, weiterhin gefährdet sind, selbst nachdem das npm-Paket entfernt wurde, es sei denn, der RAT wird explizit aufgespürt und entfernt.
Bin ich betroffen?
Sie sind potenziell betroffen, wenn:
- Sie zwischen ungefähr 30. März, 23:59 UTC und 31. März 2026, mittags UTC `npm install axios` oder `npm install` (mit axios in `package.json`) ausgeführt haben.
- Ihre
node_modules/axios/package.jsonVersion1.14.1oder0.30.4anzeigt. - Ihre
package-lock.jsonoderyarn.lockaxios auf1.14.1oder0.30.4auflöst.
Sofort überprüfen:
# Check installed version
npm list axios
# Check lock file
grep '"axios"' package-lock.json | head -5
# Check for plain-crypto-js presence
npm list plain-crypto-js
ls node_modules/plain-crypto-js 2>/dev/null && echo "INFECTED" || echo "Not found"
Wenn plain-crypto-js in Ihren node_modules vorhanden ist, haben Sie die bösartige Version ausgeführt.
Was jetzt zu tun ist
1. axios sofort aktualisieren
npm install axios@1.14.0
# or pin to latest safe
npm install axios@latest
Verifizieren:
npm list axios
# Should show 1.14.0 or higher (once a clean 1.14.x is published)
2. Wenn Sie die kompromittierte Version installiert haben
Behandeln Sie dies nicht als ein routinemäßiges Abhängigkeits-Update. Behandeln Sie die Maschine als kompromittiert:
- Ändern Sie alle Zugangsdaten (Secrets), die von dieser Maschine aus zugänglich sind: API-Schlüssel, Datenbankzugangsdaten, SSH-Schlüssel, Cloud-Provider-Tokens, `.env`-Variablen.
- Überprüfen Sie Ihre Umgebungsvariablen – der RAT zielt speziell auf Geheimnisse in der Prozessumgebung und im Dateisystem ab.
- Überprüfen Sie ausgehende Netzwerkverbindungen aus dem betroffenen Zeitraum – suchen Sie nach Verbindungen zu unbekannten IPs.
- Suchen Sie nach Persistenz – überprüfen Sie Cron-Jobs, Startskripte und systemd-Dienste, die im Zeitraum der Kompromittierung hinzugefügt wurden.
- Setzen Sie die Maschine neu auf (Re-Image), wenn es sich um einen CI-Runner oder einen Produktionsserver handelt, der die kompromittierte Version installiert hatte. Wenn es sich um einen Entwickler-Laptop handelt, behandeln Sie Zugangsdaten als verbraucht und ändern Sie alles, bevor Sie die Maschine als sauber betrachten.
3. Überprüfen Sie Ihre CI/CD-Pipelines
Wenn Ihre Build-Pipeline im betroffenen Zeitraum `npm install` ausgeführt hat, könnte Ihre CI-Umgebung kompromittiert worden sein. Überprüfen Sie:
# Check build logs for the affected timeframe
# Look for axios@1.14.1 in any install output
# Verify current CI node_modules are clean
npm list axios plain-crypto-js
Ändern Sie alle Geheimnisse (Secrets), auf die Ihre CI-Pipeline Zugriff hat: Bereitstellungsschlüssel, Cloud-Provider-Zugangsdaten, Registry-Tokens.
4. Überprüfen Sie Ihre Lock-Datei
Lock-Dateien (package-lock.json, yarn.lock) sollten exakte Versionen festlegen. Wenn Ihre Lock-Datei 1.14.1 enthält, generieren Sie sie neu:
# Remove and regenerate
rm package-lock.json
npm install
Überprüfen Sie, ob die neue Lock-Datei axios auf eine sichere Version auflöst, bevor Sie sie committen.
Apidog zur Überprüfung Ihrer axios API-Aufrufe verwenden
Wenn Sie axios als HTTP-Client für API-Aufrufe verwenden, kann Apidog Ihnen helfen zu überprüfen, ob Ihre Integration nach dem Abhängigkeits-Update noch die richtigen Anfragen sendet.
Nach dem Update auf axios@1.14.0 importieren Sie Ihre bestehenden API-Endpunkte in Apidog und führen Sie einen schnellen Regressionstest durch, um zu bestätigen, dass sich das Verhalten nicht geändert hat. Dies ist besonders nützlich, wenn Sie befürchten, dass die bösartige Version Anforderungs- oder Antwort-Payloads manipuliert haben könnte – die Antwort-Assertions von Apidog ermöglichen es Ihnen, genaue Feldwerte, Header und Statuscodes zu validieren:
// Apidog post-response assertion
pm.test("Response is clean — no injected fields", () => {
const body = pm.response.json();
pm.expect(body).to.not.have.property('__injected');
pm.expect(pm.response.headers.get('X-Injected-Header')).to.be.null;
});
Das Ausführen Ihrer vollständigen Testsuite gegen die aktualisierte axios-Version in Apidog liefert Ihnen eine dokumentierte saubere Ausgangsbasis, bevor Sie in die Produktion gehen.
Apidog kostenlos testen, um HTTP-Client-Regressionstests einzurichten.
Warum Lieferkettenangriffe auf npm schwer zu stoppen sind
Der axios-Angriff ist keine Anomalie. Er folgt einem Muster:
- event-stream (2018): Ein bösartiger Betreuer fügte eine Nutzlast hinzu, die Bitcoin-Wallets angriff. 8 Millionen wöchentliche Downloads.
- ua-parser-js (2021): Kompromittiert, um einen Cryptominer und Passwortdieb zu platzieren.
- node-ipc (2022): Betreuer fügte absichtlich destruktiven Code hinzu, der auf russische/weißrussische IPs abzielte.
- xz utils (2024): Eine zweijährige Social-Engineering-Kampagne zur Hintertür einer zentralen Linux-Komprimierungsbibliothek.
- axios (2026): Kompromittierte Betreuer-Zugangsdaten wurden verwendet, um einen RAT über eine bösartige Abhängigkeit zu veröffentlichen.
Der rote Faden: Vertrauen in das veröffentlichende Konto, nicht in den Code. Das npm-Modell gewährt Betreuern Veröffentlichungszugriff, und wenn die Zugangsdaten eines Betreuers kompromittiert werden, erbt der Angreifer dieses Vertrauen.
Maßnahmen, die tatsächlich helfen:
| Maßnahme | Was es bewirkt |
|---|---|
Lock-Dateien (package-lock.json) |
Fixiert exakte Versionen, verhindert stille Upgrades |
npm audit in CI |
Kennzeichnet bekannte Schwachstellen vor der Bereitstellung |
| Socket.dev / Snyk | Verhaltensanalyse — kennzeichnet verdächtige Pakete, noch bevor CVEs existieren |
| Zwei-Faktor-Authentifizierung auf npm | Erschwert die Kompromittierung von Zugangsdaten |
npm publish mit kurzlebigen Tokens |
Begrenzt das Expositionsfenster, falls ein Token undicht wird |
| Lock-Dateien in PRs lesen | Unerwartete Abhängigkeitsänderungen im Code-Review erkennen |
Das axios-Team hat seitdem anerkannt, dass langlebige npm-Tokens Teil des Problems waren, und geht zu strengeren Veröffentlichungskontrollen über. Die Lösung muss jedoch vom Ökosystem kommen, nicht nur von einzelnen Paketen.
Indikatoren einer Kompromittierung (IOCs)
Laut Sockets Analyse:
- Bösartige Pakete:
plain-crypto-js@4.2.1,axios@1.14.1,axios@0.30.4 - E-Mail des Herausgebers:
nrwise@proton.me - Verhalten: Netzwerkverbindungen zum Zeitpunkt der npm-Installation, RAT-Persistenz, Exfiltration von Umgebungsvariablen
- Sichere axios-Versionen: 1.14.0 und darunter (außer 0.30.4), 1.13.x, 1.12.x
Wenn Sie eine Infektion vermuten, reichen Sie einen Bericht bei npm security unter security@npmjs.com ein und sichern Sie die Protokolle.
Fazit
Die Kompromittierung von axios 1.14.1 ist eine Erinnerung daran, dass Abhängigkeitssicherheit keine einmalige Prüfung ist – es ist ein kontinuierlicher Prozess. Sperren Sie Ihre Versionen, führen Sie Verhaltensanalysetools wie Socket in Ihrer CI aus, ändern Sie Zugangsdaten, wenn etwas ungewöhnlich aussieht, und überprüfen Sie Ihre Lock-Dateien im Code-Review.
Wenn Sie nach dem Aktualisieren von axios das Vertrauen in Ihre API-Integration wiederherstellen müssen, bietet Ihnen Apidog die Testszenarien, Assertions und Mocking-Tools, um das Verhalten Ihres HTTP-Clients zu überprüfen, bevor Sie ihn veröffentlichen.
Häufig gestellte Fragen (FAQ)
Welche axios-Versionen sind kompromittiert?axios@1.14.1 und axios@0.30.4. Beide wurden von npm zurückgezogen. Die sichere Version ist 1.14.0 (oder jede Version der Reihen 1.13.x, 1.12.x).
Was bewirkt die bösartige axios-Nutzlast?Sie zieht plain-crypto-js@4.2.1 ein, welches eine mehrstufige Nutzlast einschließlich eines Remote Access Trojaners (RAT) bereitstellt. Der RAT kann beliebige Befehle von einem entfernten C2-Server ausführen, Umgebungsvariablen und Geheimnisse exfiltrieren und über Neustarts hinweg bestehen bleiben.
Woher weiß ich, ob ich die kompromittierte Version installiert habe?Führen Sie `npm list axios` aus – wenn es 1.14.1 oder 0.30.4 anzeigt, sind Sie betroffen. Überprüfen Sie auch `npm list plain-crypto-js` – wenn dieses Paket vorhanden ist, wurde der bösartige Code auf Ihrer Maschine ausgeführt.
Reicht es aus, axios einfach zu aktualisieren?Nein. Das Update entfernt die bösartige Abhängigkeit für die Zukunft, aber der RAT könnte bereits auf der Maschine installiert sein und bestehen bleiben. Wenn Sie die kompromittierte Version installiert haben, ändern Sie alle Geheimnisse (Secrets) und überprüfen Sie die Maschine auf Persistenzmechanismen.
Wie konnte der Angreifer auf npm veröffentlichen, ohne ein Betreuer zu sein?Der Angreifer hat wahrscheinlich die Zugangsdaten eines Betreuers kompromittiert und ein langlebiges npm-Token ausgenutzt, das über Veröffentlichungszugriff verfügte. Das axios-Team untersucht den Vorfall und verschärft die Veröffentlichungskontrollen.
Was ist der Unterschied zwischen diesem und einer regulären Schwachstelle?Eine Schwachstelle ist ein Fehler in legitimen Code. Ein Lieferkettenangriff führt bösartigen Code über einen vertrauenswürdigen Veröffentlichungskanal ein. Der kompromittierte Code befand sich nie im axios GitHub-Repository – er wurde direkt in die npm-Veröffentlichung injiziert.
Wie kann ich meine Projekte vor zukünftigen Lieferkettenangriffen schützen?Verwenden Sie Lock-Dateien, führen Sie `npm audit` in CI aus, fügen Sie ein Tool wie Socket.dev zur Verhaltensanalyse hinzu, aktivieren Sie 2FA für npm-Konten, verwenden Sie kurzlebige Veröffentlichungs-Tokens und überprüfen Sie Ihre Lock-Datei-Diffe im Code-Review.
