Aikido

axios auf npm kompromittiert: Maintainer-Konto gekapert, RAT bereitgestellt

Verfasst von
Madeline Lawrence

Wichtige Erkenntnisse

  • Das npm-Konto des Hauptentwicklers von axios wurde gehackt. Zwei bösartige Versionen wurden veröffentlicht: axios@1.14.1 und axios@0.30.4. npm hat beide Versionen inzwischen entfernt.
  • Jeder, der eine der Versionen vor der Deaktivierung installiert hat, sollte davon ausgehen, dass sein System kompromittiert ist. Die bösartigen Versionen injizieren eine Abhängigkeit (plain-crypto-js) die einen plattformübergreifenden Remote-Access-Trojaner bereitstellt, der auf macOS, Windows und Linux abzielt.
  • axios verzeichnet rund 100 Millionen wöchentliche Downloads. Dies ist einer der folgenreichsten npm Lieferkettenangriffe, die je verzeichnet wurden.
  • Die Malware zerstört sich nach der Ausführung selbst, sodass eine Inspektion nach der Infektion von node_modules sie nicht aufdecken wird. Sie müssen Ihre Logfiles überprüfen.

Dank der hervorragenden Berichterstattung über diesen Vorfall durch:

So überprüfen Sie, ob Sie vom axios-Angriff betroffen sind

Option 1) Manuelle Überprüfung

1. Auf bösartige axios-Versionen prüfen

Scannt Ihre installierten Pakete und die Lock-Datei nach 1.14.1 oder 0.30.4.

npm list axios 2>/dev/null | grep -E "1.14.1|0.30.4"
grep -A1 '"axios"' package-lock.json | grep -E "1.14.1|0.30.4"

2. Auf das versteckte Dropper-Paket prüfen

Auch wenn setup.js sich selbst gelöscht hat, existiert das Verzeichnis noch. Allein seine Anwesenheit bestätigt, dass der Dropper ausgeführt wurde.

ls node_modules/plain-crypto-js 2>/dev/null && echo "POTENZIELL BETROFFEN"

3. Auf RAT-Artefakte auf der Festplatte prüfen

macOS

ls -la /Library/Caches/com.apple.act.mond 2>/dev/null && echo "KOMPROMITTIERT"

Windows

dir "%PROGRAMDATA%\wt.exe" 2>nul && echo KOMPROMITTIERT

Linux

ls -la /tmp/ld.py 2>/dev/null && echo "KOMPROMITTIERT"

Option 2) Aikido nutzen (kostenlos)

Verbinden Sie Ihre Repositories mit Aikido (https://app.aikido.dev). Aikidos Malware Monitor vergleicht Ihre Abhängigkeiten mit dem Live-Malware-Feed von Aikido Intel. Wenn axios@1.14.1, axios@0.30.4, oder plain-crypto-js@4.2.1 in einem Ihrer Projekte vorhanden ist, kennzeichnet Aikido diese sofort. Dies funktioniert im kostenlosen Tarif.

Prüfen Sie, ob Ihr Code vom Axios Lieferkettenangriff betroffen ist – scannen Sie ihn kostenlos mit Aikido

Abhilfemaßnahmen

  1. Auf sichere Versionen pinnen:
npm install axios@1.14.0   # Benutzer von Version 1.x
npm install axios@0.30.3   # 0.x-Benutzer
  1. Überschreibungen hinzufügen, um transitive Auflösung zu verhindern:
{
  "dependencies": { "axios": "1.14.0" },
  "overrides":    { "axios": "1.14.0" },
  "resolutions":  { "axios": "1.14.0" }
}
  1. Entfernen Sie plain-crypto-js aus node_modules:
rm -rf node_modules/plain-crypto-js
npm install --ignore-scripts
  1. Wenn ein RAT-Artefakt gefunden wird (com.apple.act.mond, wt.exe, ld.py), versuchen Sie nicht, es vor Ort zu bereinigen. Stellen Sie aus einem bekanntermaßen guten Zustand wieder her.
  2. Rotieren Sie alle auf dem betroffenen System zugänglichen Anmeldeinformationen: npm-Tokens, AWS-Zugriffsschlüssel, SSH-Privatschlüssel, CI/CD Secrets, .env Werte.
  3. Überprüfen Sie die CI/CD-Pipeline-Logs auf alle Ausführungen, die die betroffenen Versionen installiert haben. Rotieren Sie alle injizierten Secrets.
  4. Führen Sie npm ci --ignore-scripts als feste Richtlinie in CI/CD.

Was beim axios Supply-Chain-Angriff geschah

Der Angreifer kompromittierte das jasonsaayman npm-Konto, den Hauptbetreuer von axios. Die Konto-E-Mail wurde geändert in ifstap@proton.me. Der Angreifer veröffentlichte dann axios@1.14.1 am 31. März um 00:21 UTC und axios@0.30.4 um 01:00 UTC. Sowohl die 1.x- als auch die älteren 0.x-Branches waren innerhalb von 39 Minuten betroffen.

Keine der Versionen hatte einen entsprechenden Commit, Tag oder Release im axios GitHub-Repository. Legitime axios-Releases werden über GitHub Actions mit OIDC Trusted Publisher-Bindung veröffentlicht. Diese wurden manuell mit einem gestohlenen npm-Zugriffstoken veröffentlicht.

Die einzige Änderung in beiden Versionen war das Hinzufügen von plain-crypto-js@^4.2.1 als Abhängigkeit. Dieses Paket wird nirgendwo im axios-Quellcode importiert. Es existiert ausschließlich, um einen Postinstall-Hook auszuführen, der einen RAT bereitstellt.

Die Abhängigkeit wurde etwa 18 Stunden zuvor von einem separaten Angreiferkonto vorab bereitgestellt (nrwise, nrwise@proton.me). Eine saubere Köderversion (4.2.0) wurde zuerst veröffentlicht, um die Registry-Historie aufzubauen, gefolgt von der bösartigen 4.2.1 am 30. März um 23:59 UTC.

Der RAT-Dropper (setup.js) kontaktiert sfrclak[.]com:8000 und liefert plattformspezifische Payloads: eine macOS-Binärdatei, die als Apple-Cache-Daemon getarnt ist, unter /Library/Caches/com.apple.act.mond, ein PowerShell-Skript unter Windows, das über ein verstecktes VBScript ausgeführt wird, wobei der Interpreter nach %PROGRAMDATA%\wt.exekopiert wird, und ein Python-Skript unter Linux unter /tmp/ld.py. Nach der Ausführung löscht sich der Dropper selbst und ersetzt seine eigene package.json durch einen sauberen Stub, um Spuren zu verwischen.

{{cta}}

Indicators of Compromise (IOCs)

Bösartige axios-Versionen und Abhängigkeiten:

  • axios@1.14.1 (shasum: 2553649f2322049666871cea80a5d0d6adc700ca)
  • axios@0.30.4 (shasum: d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71)
  • plain-crypto-js@4.2.1 (shasum: 07d889e2dadce6f3910dcbc253317d28ca61c766)

Netzwerk:

  • C2: sfrclak[.]com / 142.11.206[.]73 / http://sfrclak[.]com:8000/6202033

Dateisystem:

  • macOS: /Library/Caches/com.apple.act.mond
    • sha256: 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
  • Windows: %PROGRAMDATA%\wt.exe, %TEMP%\6202033.vbs, %TEMP%\6202033.ps1
    • sha256: 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101 (powershell)
  • Linux: /tmp/ld.py
    • sha256: fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf

Angreiferkonten:

Schutz vor der Installation von Malware

Aikido Safe Chain (https://github.com/AikidoSec/safe-chain) ist ein Open-Source-Tool, das npm, yarn und pnpm umschließt. Es prüft jedes Paket anhand des Malware-Feeds von Aikido Intel, bevor es Ihre Maschine erreicht, und erzwingt ein konfigurierbares Mindestalter für Pakete (standardmäßig 48 Stunden), wodurch neu veröffentlichte Versionen unterdrückt werden, bis sie validiert wurden. Bei diesem axios-Angriff, plain-crypto-js@4.2.1 existierte weniger als 24 Stunden, bevor die kompromittierten axios-Versionen es einbezogen. Die Altersprüfung von Safe Chain hätte es allein blockiert.

Kostenlos, keine Tokens erforderlich:

curl -fsSL https://github.com/AikidoSec/safe-chain/releases/latest/download/install-safe-chain.sh | sh

Die Geschichte entwickelt sich... Bleiben Sie dran für Updates.

{{cta}}

Teilen:

https://www.aikido.dev/blog/axios-npm-compromised-maintainer-hijacked-rat

News abonnieren

4.7/5
Falschpositive Ergebnisse leid?

Probieren Sie Aikido, wie 100.000 andere.
Jetzt starten
Erhalten Sie eine personalisierte Führung

Von über 100.000 Teams vertraut

Jetzt buchen
Scannen Sie Ihre App nach IDORs und realen Angriffspfaden

Von über 100.000 Teams vertraut

Scan starten
Erfahren Sie, wie KI-Penetrationstests Ihre App testen

Von über 100.000 Teams vertraut

Testen starten
Prüfen Sie, ob Sie vom axios Lieferkettenangriff betroffen sind

Kostenlos, keine Kreditkarte erforderlich

Nach Malware scannen

Sicherheit jetzt implementieren

Sichern Sie Ihren Code, Ihre Cloud und Ihre Laufzeit in einem zentralen System.
Finden und beheben Sie Schwachstellen schnell und automatisch.

Keine Kreditkarte erforderlich | Scan-Ergebnisse in 32 Sek.