Am 15. September meldeten Sicherheitsforscher einen schwerwiegenden Angriff auf die Lieferkette des npm-Paketökosystems.
Der Vorfall betraf eine sich selbst verbreitende Malware-Variante, die weit verbreitete Codepakete kompromittierte, darunter @ctrl/tinycolor, als Teil einer umfassenderen Kampagne, die mehr als 180 Pakete betraf. Der Angriff macht die anhaltenden Bedrohungen für Open-Source-Paketregister und deren Bedeutung in modernen Softwareentwicklungs-Workflows deutlich.
Überblick über den Angriff
Das erste in dieser Kampagne identifizierte Paket, rxnt-authentication, wurde am 14. September aktualisiert, kurz bevor weitere Kompromittierungen entdeckt wurden.
Die Ermittler stellten fest, dass die Malware wurmartiges Verhalten nutzte, um sich über npm zu verbreiten. Damit war sie einer der ersten dokumentierten selbstreplizierenden Angriffe innerhalb dieses Ökosystems. Indem sie sich in legitime Pakete einbettete, stellte die Malware ein Risiko für Entwickler und Organisationen dar, die bei der Softwareverteilung auf npm angewiesen sind.
Funktionsweise der Malware
Der Schadcode durchlief einen mehrstufigen Prozess, der darauf ausgelegt war, Zugangsdaten zu sammeln, Daten zu exfiltrieren und sich weiter im npm-Register auszubreiten:
- Abgreifen von Zugangsdaten: Die Malware durchsuchte infizierte Systeme und Continuous-Integration- (CI-)Umgebungen nach Geheimnissen, darunter Cloud-Schlüssel, Authentifizierungstoken und Umgebungsvariablen. Tools wie TruffleHog wurden eingesetzt, um vertrauliche Informationen aufzuspüren.
- Datenexfiltration: Gestohlene Informationen sowie Host- und Systemmetadaten wurden unter Namen wie Shai-Hulud in öffentlichen GitHub-Repositories abgelegt, sodass die Angreifer auf die kompromittierten Daten zugreifen konnten.
- Ausnutzung von GitHub Actions: Die Malware legte eine bösartige Workflow-Datei (.github/workflows/shai-hulud-workflow.yml) an, um Repository-Secrets zu extrahieren und an von den Angreifern kontrollierte Webhooks weiterzuleiten.
- Selbstreplikation: Durch das Abgreifen von npm-Authentifizierungstoken veröffentlichte die Malware andere von kompromittierten Entwicklern verwaltete Pakete erneut und bettete ihren Code ein, um eine weitere Verbreitung sicherzustellen.
- Manipulation von Repositories: Private Repositories wurden öffentlich gemacht oder um zusätzliche Workflows und Branches ergänzt, wodurch sich die Angriffsfläche über Entwicklungsumgebungen hinweg vergrößerte.
Bedrohungen für die Lieferkette
Dieser Vorfall folgt auf mehrere öffentlichkeitswirksame Kompromittierungen im npm-Ökosystem, darunter Angriffe auf kryptowährungsbezogene Pakete und Entwicklungsframeworks. Solche Ereignisse verdeutlichen das systemische Risiko, das von Schwachstellen in der Lieferkette von Paketverwaltungssystemen ausgeht.
npm, das als weltweit größtes Repository für JavaScript-Pakete dient, ist aufgrund seiner entscheidenden Rolle bei der Anwendungsentwicklung ein häufiges Ziel.
Maßnahmen und Empfehlungen
GitHub-Konten und npm-Register überprüfen
Organisationen sollten GitHub-Konten auf verdächtige Aktivitäten überprüfen, etwa das Erstellen nicht autorisierter Repositories oder Branches mit der Bezeichnung Shai-Hulud. Entwickler sollten außerdem npm-Register auf nicht genehmigte Paketversionen oder neu veröffentlichte Inhalte unter ihren Konten untersuchen.
Kompromittierte Pakete identifizieren und entfernen
Betroffene npm-Pakete werden von ihren Maintainer aus dem Register entfernt. Sicherheitsteams sollten betroffene Pakete aus Entwicklungs-Pipelines und von Endgeräten prüfen und deinstallieren. Bei bestätigten Infektionen kann es erforderlich sein, lokale npm-Caches zu löschen und Abhängigkeiten neu zu installieren, um eingebettete Malware zu beseitigen.
Kompromittierte Secrets rotieren
Geräte, auf denen trojanisierte Pakete ausgeführt werden, sollten bis zum Abschluss der Bereinigung isoliert werden. Alle offengelegten Zugangsdaten – darunter Cloud-Schlüssel, API-Token, Datenbankverbindungszeichenfolgen, SSH-Schlüssel und GitHub-Secrets – sollten rotiert werden.
Auch ohne eine bestätigte Kompromittierung kann das Rotieren besonders wertvoller Secrets über verschiedene Umgebungen hinweg die potenzielle Gefährdung verringern.
Netzwerkaktivitäten überwachen
Die Ermittler beobachteten, dass die Malware ausgehende Verbindungen zu webhook[.]site nutzte, um die erfolgreiche Verbreitung zu überprüfen. Organisationen, die nicht auf diesen Dienst angewiesen sind, sollten erwägen, die Domain zu blockieren, um unbefugten Datenverkehr zu verhindern.
Die Kompromittierung der npm-Lieferkette zeigt die zunehmende Raffinesse von Malware, die auf Open-Source-Ökosysteme abzielt.
Durch die Kombination aus Diebstahl von Zugangsdaten, Datenexfiltration und Selbstreplikation macht diese Kampagne die Risiken deutlich, die dezentralen Plattformen zur Paketverwaltung innewohnen. Proaktive Überprüfungen, das Rotieren von Secrets und eine aufmerksame Überwachung bleiben entscheidend, um Entwicklungsumgebungen vor neu auftretenden Lieferketten-bedrohungen zu schützen.

