Ein neuer Lieferkettenangriff trifft das npm-Ökosystem: Die Rust-basierte Malware IronWorm infizierte 36 Pakete, um Entwicklerdaten zu stehlen.
Das Node Package Manager (npm) Register wurde Ziel eines neuen, koordinierten Lieferkettenangriffs. Sicherheitsforscher des DevSecOps-Unternehmens JFrog entdeckten, dass insgesamt 36 legitime Software-Pakete mit einer Schadsoftware namens IronWorm infiziert wurden. Die in der Programmiersprache Rust geschriebene Malware zielt auf die Kompromittierung von Entwicklungsumgebungen und Continuous-Integration-Systemen (CI). Technisch verbirgt sich das Programm hinter einem eBPF-Kernel-Rootkit, um Entdeckungsmechanismen auf Betriebssystemebene zu umgehen, und leitet die gestohlenen Daten über das anonyme Tor-Netzwerk an die Angreifer weiter.
Das Schadprogramm sucht auf infizierten Systemen systematisch nach sensiblen Konfigurationsdaten. Die Liste der Zielobjekte umfasst insgesamt 86 Umgebungsvariablen sowie 20 spezifische Berechtigungsdateien. Hierzu gehören:
- Zugangsdaten für die künstlichen Intelligenzen von OpenAI und Anthropic
- Cloud-Zertifikate für Amazon Web Services (AWS)
- Interne npm-Authentifizierungstoken
- Konfigurationsdateien von HashiCorp Vault
- Lokale SSH-Schlüssel zur Server-Authentifizierung
- Krypto-Wallet-Dateien der Software Exodus
Selbstvermehrung und Manipulation von Quellcode-Archiven
Ein wesentliches Merkmal von IronWorm ist die Fähigkeit zur automatisierten Weiterverbreitung. Sobald das Programm Zugriff auf die Zugangsdaten eines Entwicklers oder ein automatisiertes Trusted-Publishing-Verfahren erlangt, nutzt es diese Rechte, um eigenständig archivierte Versionen der vom Opfer verwalteten npm-Pakete hochzuladen. Dieses Verhalten ähnelt der bekannten Schadsoftware-Familie Shai Hulud, die der Hackergruppe TeamPCP zugeordnet wird. JFrog stellte bei beiden Kampagnen identische Bezeichnungen für die Code-Änderungen (Commits) fest. Die Forscher stufen IronWorm als „ein maßgeschneidertes, sorgfältig aufgebautes Implantat aus einer Operation mit eigener Infrastruktur“ ein.
Die jüngste Welle ging von einem kompromittierten npm-Benutzerkonto namens asteroiddao aus. Die bösartigen Versionen führten bei der Installation über ein sogenanntes Preinstall-Skript ein kompiliertes Linux-Binärprogramm aus. Um eine forensische Rückverfolgung zu erschweren, fälschten die Täter die Autorennamen der Änderungen auf den Namen claude und datierten die Zeitstempel im System um bis zu 13 Jahre zurück, obwohl die Datenpakete erst in den vergangenen Tagen übertragen wurden.
Versteckte Übertragungswege und Anomalien im Code
Die Sicherheitsanalysten stießen bei der Untersuchung auf eine komplexe Methode zur Datenexfiltration, die für zukünftige Angriffe vorbereitet wurde. Die Malware ist in der Lage, die erbeuteten Zugangsdaten zu serialisieren und als scheinbar harmlose Textausgabe zu tarnen. JFrog erklärte hierzu, die Schadsoftware „schreibt sie in eine Datei mit einem harmlos aussehenden Namen, als ob es sich um eine Lint- oder Formatierungsausgabe handeln würde“. Anschließend wird diese Datei als Build-Artefakt direkt in die GitHub Actions des Projekts hochgeladen, wo sie von den Angreifern ohne externen Kontrollserver heruntergeladen werden kann. In der aktuellen IronWorm-Kampagne wurde dieser spezifische Weg jedoch noch nicht aktiv genutzt.
Zudem wies der Code eine logische Besonderheit auf: Die Entwickler der Malware hatten die Wiederherstellungsphrase (Seed-Phrase) ihrer eigenen Kryptowährung-Wallet fest im Programmcode hinterlegt. Die Analysten gehen davon aus, dass dies verhindern sollte, dass sich die Schadsoftware während der internen Testphase der Entwickler selbst bestiehlt.
Frühe Entdeckungsstadium der npm-Malware
Das Anwendungssicherheitsunternehmen Ox Security teilte mit, dass der Angriff in einem sehr frühen Stadium erkannt und herausgefiltert werden konnte, bevor eine Ausbreitung auf populäre Pakete mit hoher Reichweite stattfand. Betroffenen Software-Entwicklern wird dringend empfohlen, installierte Abhängigkeiten auf fehlerbereinigte Versionen zu aktualisieren, sämtliche Cloud- und API-Schlüssel zu rotieren sowie eine Zwei-Faktor-Authentifizierung für alle Konten zu aktivieren.
Zeitgleich identifizierten die IT-Sicherheitsfirmen Endor Labs und StepSecurity eine strukturell ähnliche, aber technisch eigenständige Angriffswelle im selben Zeitraum. Diese parallel verlaufende Kampagne basiert auf einer JavaScript-Malware namens binding.gyp, welche ebenfalls auf die Vergiftung des npm-Registers und die Infektion von GitHub-Actions-Workflows abzielt.