Kurz gesagt
Am 31. März 2026 haben Angreifer das npm-Konto des Hauptbetreuers von Axios kompromittiert, dem beliebtesten JavaScript HTTP-Client mit 83 Millionen wöchentlichen Downloads. Sie veröffentlichten bösartige Versionen (1.14.1 und 0.30.4), die einen plattformübergreifenden RAT (Remote Access Trojan) enthielten, der Zugangsdaten, SSH-Schlüssel und Cloud-Tokens von Entwicklercomputern stiehlt. Führen Sie sofort ein Downgrade auf Axios 1.14.0 durch, ändern Sie alle Geheimnisse und suchen Sie nach Kompromittierungsindikatoren auf Ihrem System.
Einleitung
Axios verarbeitet mehr HTTP-Anfragen als jede andere JavaScript-Bibliothek. Wenn Sie in den letzten fünf Jahren einen API-Client erstellt, Endpunkte getestet oder ein Frontend mit einem Backend verbunden haben, haben Sie es wahrscheinlich verwendet.
Am 31. März 2026, um 00:21 Uhr UTC, veröffentlichte ein Bedrohungsakteur Axios Version 1.14.1 über ein kompromittiertes Betreuerkonto. Das Paket sah identisch mit der legitimen Version aus. Der Unterschied war chirurgisch: Nur package.json änderte sich über 86 Dateien hinweg. Aber diese einzelne Datei injizierte eine Phantom-Abhängigkeit namens plain-crypto-js, die einen Remote Access Trojaner auf jedem Computer bereitstellte, der npm install ausführte.
Die bösartigen Versionen blieben etwa zwei bis drei Stunden lang aktiv, bevor npm sie entfernte. Zwei bis drei Stunden bei 83 Millionen wöchentlichen Downloads.
Dieser Artikel erläutert, wie der Angriff funktionierte, wie Sie erkennen können, ob Ihre Systeme kompromittiert sind, und welche Änderungen API-Teams zukünftig bei ihrem Abhängigkeitsmanagement vornehmen sollten.
Wie sich der Axios-Supply-Chain-Angriff entfaltete
Der Zeitplan
Der Angreifer führte diese Operation mit Präzision innerhalb eines 18-stündigen Zeitfensters aus:
- 30. März, 05:57 Uhr UTC: Ein sauberes Köderpaket
plain-crypto-js@4.2.0wurde auf npm veröffentlicht. Das erstmalige Veröffentlichen einer „sauberen“ Version gab dem Paket eine kurze Historie im Register, wodurch es weniger verdächtig aussah. - 30. März, 23:59 Uhr UTC: Die bösartige Version
plain-crypto-js@4.2.1wurde veröffentlicht und fügte einenpostinstall-Hook hinzu, der den Dropper enthielt. - 31. März, 00:21 Uhr UTC:
axios@1.14.1wurde unter Verwendung des kompromittierten Kontosjasonsaaymanveröffentlicht. - 31. März, 01:00 Uhr UTC:
axios@0.30.4folgte 39 Minuten später und zielte auf Projekte ab, die an den 0.x-Zweig gebunden waren. - 31. März, ~03:15 Uhr UTC: npm hob beide Axios-Versionen nach Meldungen aus der Community auf.
- 31. März, 04:26 Uhr UTC: npm veröffentlichte einen Security-Holder-Stub für
plain-crypto-js, um eine erneute Veröffentlichung zu verhindern.
Wie das Konto kompromittiert wurde
Der Angreifer übernahm das jasonsaayman npm-Konto, den primären Axios-Betreuer. Sie änderten die registrierte E-Mail-Adresse in ifstap@proton.me. Die wichtigsten forensischen Beweise:
- Legitime Axios-Releases verwenden GitHub Actions mit npms OIDC Trusted Publisher-Mechanismus. Den bösartigen Versionen fehlte die OIDC-Bindung vollständig.
- In den kompromittierten Releases war kein
gitHead-Feld vorhanden, was bedeutet, dass keine entsprechenden GitHub-Commits existierten. - Der Angreifer verwendete gestohlene, langlebige npm-Zugriffstoken, um manuell zu veröffentlichen, anstatt über CI/CD zu gehen.
Dieser Unterschied ist wichtig. Wenn Ihre Organisation npm-Pakete veröffentlicht, ist das Fehlen von OIDC-Bindung und CI/CD-Herkunft bei einem Release eine rote Flagge, die eine automatisierte Überprüfung wert ist.
Die Abhängigkeitsinjektionstechnik
Das machte diesen Angriff subtil. Der Angreifer modifizierte den Axios-Quellcode nicht. Sie änderten eine Zeile in package.json, um plain-crypto-js@^4.2.1 als Laufzeitabhängigkeit hinzuzufügen. Dieses Paket wurde nirgendwo im Axios-Code importiert. Es existierte ausschließlich, um seinen postinstall-Hook während npm install auszulösen.
Die Binäranalyse bestätigte die chirurgische Präzision: Nur package.json unterschied sich zwischen der sauberen 1.14.0-Version und der kompromittierten 1.14.1 über alle 86 Dateien im Paket hinweg.
Was die bösartige Nutzlast tut
Der Dropper-Mechanismus
Der postinstall-Hook in plain-crypto-js führte eine 4,2 KB große, obfuskierte Datei namens setup.js aus. Er verwendete zwei Obfuskationsschichten:
- Schicht 1: XOR-Chiffre unter Verwendung eines Schlüssels, der aus der Zeichenfolge
"OrDeR_7077"abgeleitet wurde - Schicht 2: Base64-Kodierung mit Zeichenumkehr
Einmal dekodiert, identifizierte der Dropper das Host-Betriebssystem und führte plattformspezifische Nutzlasten aus.
Plattformspezifische Angriffswege
macOS:
Writes AppleScript to /tmp/6202033
Executes via osascript
Downloads payload to /Library/Caches/com.apple.act.mond
Windows:
Copies PowerShell to %PROGRAMDATA%\wt.exe (persistence artifact)
Executes VBScript dropper via cscript
Linux:
Downloads Python RAT to /tmp/ld.py
Executes via nohup python3
Alle drei Zweige kontaktierten einen Command-and-Control-Server mit plattformspezifischen POST-Bodies:
- macOS:
packages.npm.org/product0 - Windows:
packages.npm.org/product1 - Linux:
packages.npm.org/product2
RAT-Fähigkeiten
Der bereitgestellte Remote Access Trojan unterstützt:
- Ausführung beliebiger Shell-Befehle
- Dateisystem-Enumeration und -Exfiltration
- Prozessauflistung und -injektion
- In-Memory-Binärinjektion (dateilose Ausführung)
- 60-Sekunden-Beacon-Intervalle zur C2-Infrastruktur
Einfach ausgedrückt: Der Angreifer erhält die vollständige Fernsteuerung über Ihren Entwicklungscomputer. Er kann Ihre .env-Dateien lesen, Ihre API-Schlüssel stehlen, Ihre SSH-Schlüssel kopieren und Cloud-Anbieter-Tokens abgreifen.
Anti-Forensik: Die selbstreinigende Nutzlast
Nach der Ausführung führte der Dropper drei Bereinigungsschritte durch:
- Löschte
setup.jsselbst - Löschte die bösartige
package.json - Benannte eine vorab vorbereitete
package.md(die Version 4.2.0 meldete) inpackage.jsonum
Dies schuf eine Täuschungsschicht, bei der npm list Version 4.2.0 statt 4.2.1 melden würde, die die Nutzlast ausführte. Ein Entwickler, der seine Abhängigkeiten nachträglich überprüfte, würde nichts Falsches sehen.
Wer steckt hinter diesem Angriff
Die Google Threat Intelligence Group schrieb den Axios-Angriff UNC1069 zu, einem mutmaßlichen nordkoreanischen Bedrohungsakteur. Die macOS-Malware weist „erhebliche Überschneidungen“ mit WAVESHAPER auf, einer C++-Backdoor, die Mandiant im Februar 2026 verfolgte.
Nordkoreanische staatlich gesponserte Gruppen haben umfassende Erfahrung mit Supply-Chain-Angriffen. Sie haben historisch kompromittierte Entwicklertools verwendet, um Kryptowährung zu stehlen, und diese Operation folgt dem gleichen Muster: Kompromittieren eines weit verbreiteten Entwicklertools, um Zugang zu Anmeldeinformationen und Cloud-Infrastruktur in Tausenden von Organisationen zu erhalten.
Das Niveau der Raffinesse ist bemerkenswert. Die zweistufige Abhängigkeitsinjektion, die plattformübergreifende RAT-Bereitstellung und die antiforensische Bereinigung deuten alle auf eine gut ausgestattete Operation hin. Dies ist kein Script-Kiddie, das einen Kryptominer ablegt. Es ist eine Geheimdienstoperation, die auf Entwickler-Workstations abzielt.
So überprüfen Sie, ob Sie betroffen sind
Schritt 1: Überprüfen Sie Ihre Axios-Version
Führen Sie dies in jedem Projekt aus, das Axios verwendet:
npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
Wenn dies Ergebnisse liefert, hat Ihr Projekt eine kompromittierte Version installiert.
Schritt 2: Überprüfen Sie die bösartige Abhängigkeit
ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENZIELL BETROFFEN"
Selbst wenn der Dropper danach aufgeräumt hat, bestätigt die Existenz des Verzeichnisses, dass die Nutzlast ausgeführt wurde.
Schritt 3: Überprüfen Sie Ihr System auf RAT-Artefakte
macOS:
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null
Linux:
ls -la /tmp/ld.py 2>/dev/null
Windows (PowerShell):
Test-Path "$env:PROGRAMDATA\wt.exe"
Schritt 4: Überprüfen Sie Netzwerkindikatoren
Blockieren und scannen Sie auf Verbindungen zu:
- C2-Domain:
sfrclak.com - C2-IP:
142.11.206.73 - C2-URL:
http://sfrclak.com:8000/6202033
Schritt 5: Überprüfen Sie CI/CD-Build-Protokolle
Überprüfen Sie alle CI/CD-Pipeline-Ausführungen zwischen dem 31. März, 00:21 Uhr UTC und 03:15 Uhr UTC. Jede npm install- oder npm ci-Ausführung während dieses Zeitfensters, die Axios auflöste, könnte den Dropper in Ihrer Build-Umgebung ausgeführt haben.
Sofortige Abhilfemaßnahmen
Wenn Sie Indikatoren für eine Kompromittierung finden, behandeln Sie das betroffene System als vollständig kompromittiert. Hier ist die Prioritätenliste:
1. Axios sofort downgraden
npm install axios@1.14.0
Oder für den 0.x-Zweig:
npm install axios@0.30.3
2. Versions-Overrides zu Ihrer package.json hinzufügen
Verhindern Sie die transitive Auflösung zu bösartigen Versionen:
{
"overrides": {
"axios": "1.14.0"
}
}
Für Yarn:
{
"resolutions": {
"axios": "1.14.0"
}
}
3. Entfernen Sie das bösartige Paket
rm -rf node_modules/plain-crypto-js
4. Alle Zugangsdaten ändern
Wenn der Dropper auf Ihrem Computer ausgeführt wurde, gehen Sie davon aus, dass Folgendes kompromittiert ist:
- npm-Tokens
- AWS-/GCP-/Azure-Anmeldeinformationen
- SSH-Schlüssel
- GitHub-Tokens
- API-Schlüssel in
.env-Dateien - Datenbank-Zugangsdaten
- Alle in Umgebungsvariablen gespeicherten Geheimnisse
Ändern Sie alles. Es gibt keine Möglichkeit zu wissen, was der RAT während seines aktiven Fensters exfiltriert hat.
5. C2 auf Netzwerkebene blockieren
Fügen Sie zu Ihrer Hosts-Datei oder Firewall-Regeln hinzu:
echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts
6. Wenn Artefakte gefunden werden, den Computer neu aufsetzen
Ein RAT mit Shell-Ausführung und Dateisystemzugriff kann alles ändern. Wenn Sie Artefakte aus Schritt 3 gefunden haben, trauen Sie dem System nicht. Setzen Sie es aus einem bekanntermaßen guten Zustand neu auf.
Langfristige Schutzmaßnahmen für API-Entwicklungsteams
Lockfiles verwenden und genaue Versionen festlegen
Der Axios-Angriff nutzte ^-Semver-Bereiche aus. Wenn Ihre package.json "axios": "^1.14.0" besagt, löst npm die neueste kompatible Version auf, die während des Angriffsfensters 1.14.1 war.
{
"dependencies": {
"axios": "1.14.0"
}
}
Legen Sie genaue Versionen fest. Committen Sie immer Ihre package-lock.json oder yarn.lock. Führen Sie npm ci anstelle von npm install in CI/CD aus, um die Auflösung der Lockfile zu erzwingen.
Postinstall-Skripte in CI/CD deaktivieren
Der gesamte Angriff hing von der Ausführung von postinstall-Hooks während npm install ab. Sie können dies deaktivieren:
npm ci --ignore-scripts
Dies bricht einige Pakete, die native Kompilierung benötigen. Testen Sie Ihre Builds zuerst und erlauben Sie dann selektiv Skripte für Pakete, die sie benötigen, über .npmrc:
ignore-scripts=true
Abhängigkeiten regelmäßig prüfen
npm audit
npx socket-security/cli audit
Führen Sie diese in CI/CD als Gate aus. Jede kritische oder hohe Schwachstelle sollte den Build blockieren.
Reduzieren Sie Ihre Abhängigkeitsfläche für HTTP-Clients
Hier ist die tiefere Frage, die dieser Angriff aufwirft: Warum hängt Ihr API-Test-Workflow von einer Drittanbieter-HTTP-Bibliothek ab, die kompromittiert werden kann?
Apidog bietet einen integrierten HTTP-Client für API-Tests, Debugging und Dokumentation. Sie benötigen kein Axios, node-fetch oder got in Ihrem Test-Stack. Der HTTP-Client ist Teil der Plattform, ohne Drittanbieter-Abhängigkeiten, die kompromittiert werden könnten.
Speziell für API-Tests eliminiert das Verschieben Ihrer HTTP-Anfragen in Apidog die gesamte Angriffsfläche:
- API-Tests: Verwenden Sie den visuellen Test-Builder von Apidog anstelle des Schreibens von Axios-basierten Testskripten
- API-Debugging: Verwenden Sie den integrierten Anfragen-Inspektor von Apidog anstelle von benutzerdefiniertem HTTP-Client-Code
- Mock-Server: Verwenden Sie den Smart Mock von Apidog anstelle des Aufbaus von Mock-Endpunkten mit Express + Axios
- CI/CD-Integration: Verwenden Sie Apidog CLI für automatisierte API-Tests ohne npm-HTTP-Abhängigkeiten
Testen Sie Apidog kostenlos, um zu sehen, wie das Entfernen von HTTP-Bibliotheksabhängigkeiten aus Ihrem API-Workflow Ihr Supply-Chain-Risiko reduziert.
Paket-Provenienz überprüfen
npm unterstützt jetzt Paket-Provenienz über Sigstore. Überprüfen Sie, ob Pakete, von denen Sie abhängen, dies verwenden:
npm audit signatures
Den bösartigen Axios-Versionen fehlte die OIDC-Provenienz. Legitime Releases aus CI/CD-Pipelines enthalten eine kryptografische Bestätigung ihres Build-Ursprungs. Wenn eine neue Version ohne Provenienz erscheint, behandeln Sie sie mit Misstrauen.
Was das für das JavaScript-Ökosystem bedeutet
Das Vertrauensmodell ist kaputt
Npms Vertrauensmodell hängt von der Kontosicherheit des Betreuers ab. Eine einzige kompromittierte Anmeldeinformation gibt einem Angreifer die Kontrolle über ein Paket, das 83 Millionen Projekte jede Woche installieren. Die Zwei-Faktor-Authentifizierung hilft, aber langlebige Zugriffstoken können immer noch von kompromittierten Entwicklungsumgebungen gestohlen werden.
Die Community diskutiert mehrere strukturelle Änderungen:
- Obligatorische OIDC-Veröffentlichung: Alle Pakete über einem Download-Schwellenwert müssen eine CI/CD-basierte Veröffentlichung mit OIDC-Token anstelle von langlebigen Anmeldeinformationen verwenden.
- Zwei-Personen-Freigabe-Genehmigung: Für kritische Pakete ist die Genehmigung eines zweiten Betreuers erforderlich.
- Laufzeit-Bereichsbeschränkung für Berechtigungen: Beschränken Sie, auf welche
postinstall-Skripte zugreifen können, ähnlich dem Berechtigungsmodell von Deno.
Supply-Chain-Angriffe verlangsamen sich nicht
Dieser Angriff ereignete sich nur wenige Tage nach dem RubyGems-Zwischenfall und den anhaltenden PyPI-Abhängigkeitsproblemen. Paketregister in jedem Sprach-Ökosystem stehen unter ständigem Angriff. API-Entwickler müssen ihren Abhängigkeitsbaum als Angriffsfläche und nicht als Bequemlichkeit betrachten.
Die Reddit-Diskussion fasste die Stimmung gut zusammen: „NPM ist heute die größte Schwachstelle des Internets und wird immer noch eine riesige Katastrophe verursachen.“ Unabhängig davon, ob Sie der Übertreibung zustimmen oder nicht, der Axios-Angriff zeigt, dass der Explosionsradius real ist.
Vergleich: HTTP-Client-Abhängigkeitsansätze
| Ansatz | Supply-Chain-Risiko | Wartungsaufwand | Testfähigkeit |
|---|---|---|---|
| Axios + benutzerdefinierte Skripte | Hoch (Drittanbieter-Abhängigkeit) | Hoch (Versionsverwaltung) | Manuelle Einrichtung erforderlich |
| Node.js native Fetch | Niedrig (im Laufzeitumgebung integriert) | Niedrig | Eingeschränkte Testfunktionen |
| Apidog integrierter Client | Keine (keine npm-Abhängigkeit) | Keine (Plattform-verwaltet) | Volle Test-, Mock- und Dokumentationsfunktionen |
| curl/httpie Skripte | Niedrig (System-Tool) | Mittel | Eingeschränkte Automatisierung |
FAQ
Ist Axios jetzt sicher zu verwenden?
Ja. Die Versionen 1.14.0 und 0.30.3 sind sauber. Die kompromittierten Versionen (1.14.1 und 0.30.4) wurden innerhalb von etwa drei Stunden deinstalliert. Überprüfen Sie Ihre installierte Version mit npm list axios und überprüfen Sie Ihre Lockfile, um zu bestätigen, dass Sie eine sichere Version verwenden.
Wie erfahre ich, ob der RAT auf meinem Computer ausgeführt wurde?
Suchen Sie nach plattformspezifischen Artefakten: /Library/Caches/com.apple.act.mond unter macOS, /tmp/ld.py unter Linux oder %PROGRAMDATA%\wt.exe unter Windows. Überprüfen Sie auch, ob node_modules/plain-crypto-js in einem Ihrer Projekte existiert. Der Dropper bereinigt sich selbst, daher garantiert das Fehlen von Artefakten nicht, dass Sie sicher sind, wenn Sie die kompromittierte Version installiert haben.
Sollte ich die Verwendung von Axios ganz einstellen?
Nicht unbedingt. Axios bleibt eine gut gewartete Bibliothek mit einer starken Erfolgsbilanz. Dieser Angriff sollte Sie jedoch dazu anregen, zu bewerten, ob Sie überhaupt einen HTTP-Client eines Drittanbieters benötigen. Node.js 18+ enthält natives fetch. Für API-Tests bieten Plattformen wie Apidog integrierte HTTP-Clients, die diese Abhängigkeit eliminieren.
Wie kann ich Supply-Chain-Angriffe in meinen Projekten verhindern?
Legen Sie genaue Abhängigkeitsversionen fest, committen Sie Lockfiles, führen Sie npm ci --ignore-scripts in CI/CD aus, überprüfen Sie Abhängigkeiten regelmäßig, überprüfen Sie die Paket-Provenienz mit npm audit signatures und minimieren Sie Ihren Abhängigkeitsbaum. Erwägen Sie, API-Test-Workflows in integrierte Plattformen zu verlagern, die nicht auf npm-Pakete für die HTTP-Kommunikation angewiesen sind.
Stand dieser Angriff in Zusammenhang mit dem Claude-Code-Quellcode-Leak?
Beide Ereignisse ereigneten sich am selben Tag (31. März 2026), sind aber unabhängig voneinander. Der Axios-Angriff war eine bewusste Supply-Chain-Kompromittierung durch einen staatlich gesponserten Bedrohungsakteur. Der Claude-Code-Leak resultierte aus einem Fehler im Bun-Build-Tool, das Quellkarten in der Produktion auslieferte. Der zufällige Zeitpunkt hat die Diskussion über die Sicherheit des npm-Registers insgesamt angeheizt.
Wer steckte hinter dem Axios-Angriff?
Die Google Threat Intelligence Group schrieb den Angriff UNC1069 zu, einem mutmaßlichen nordkoreanischen Bedrohungsakteur. Die macOS-Malware weist erhebliche Überschneidungen mit WAVESHAPER auf, einer von Mandiant verfolgten Backdoor. Nordkoreanische Gruppen verfügen über umfangreiche Erfahrung mit Supply-Chain-Angriffen, die typischerweise auf Entwickleranmeldeinformationen und Kryptowährungsinfrastruktur abzielen.
Wie viele Entwickler waren betroffen?
Die bösartigen Versionen waren etwa zwei bis drei Stunden lang aktiv. Bei 83 Millionen wöchentlichen Downloads ist das potenzielle Risiko erheblich. npm hat keine offiziellen Zahlen zu den Auswirkungen veröffentlicht. Die Laufzeit-Erkennung von StepSecurity bestätigte, dass der Dropper den C2 innerhalb von 1,1 Sekunden nach dem Start von npm install kontaktierte, noch bevor die Abhängigkeitsauflösung abgeschlossen war.
Kann Apidog helfen, Supply-Chain-Angriffe zu verhindern?
Apidog eliminiert einen wichtigen Angriffsvektor, indem es einen integrierten HTTP-Client für API-Tests, Debugging und Dokumentation bereitstellt. Sie müssen Axios, node-fetch oder andere HTTP-Bibliotheken nicht in Ihren Test-Workflow installieren. Dies reduziert Ihre npm-Abhängigkeitsfläche und beseitigt das Risiko, dass kompromittierte HTTP-Client-Pakete Ihren API-Entwicklungsprozess beeinträchtigen.
Wichtige Erkenntnisse
- Der Axios-Supply-Chain-Angriff kompromittierte über 83 Millionen wöchentliche Downloads durch ein einziges gestohlenes Betreuerkonto
- Der RAT zielt auf alle Plattformen (macOS, Windows, Linux) ab und stiehlt Zugangsdaten, SSH-Schlüssel und Cloud-Token
- Überprüfen Sie Ihre Systeme sofort mit den oben genannten Erkennungsschritten
- Legen Sie genaue Abhängigkeitsversionen fest und deaktivieren Sie Postinstall-Skripte in CI/CD
- Reduzieren Sie Ihre Abhängigkeitsfläche für HTTP-Clients, indem Sie integrierte Tools wie Apidog für API-Tests verwenden
- Die Sicherheit von Paketregistern ist ein systemisches Problem, das npm, PyPI und RubyGems betrifft
Der Axios-Angriff ist ein Weckruf. Jede Abhängigkeit in Ihren node_modules ist eine Vertrauensentscheidung. Stellen Sie sicher, dass Sie diese Entscheidungen bewusst treffen und nicht standardmäßig.
