In der heutigen digitalen Welt spielen Software-Entwickler eine zentrale Rolle bei der Gestaltung von Anwendungen und Diensten, die unser tägliches Leben erleichtern. Die Nutzung von Paketmanagern wie NPM (Node Package Manager) ist dabei für viele Entwickler essenziell, da sie einfache und schnelle Wege bieten, Bibliotheken und Abhängigkeiten zu integrieren. Doch mit der zunehmenden Beliebtheit von NPM wächst auch das Risiko bösartiger Pakete, die in die wachsenden Ökosysteme eindringen und Sicherheitslücken ausnutzen. Eine aktuelle Untersuchung des Threat Research Teams von Socket hat eine alarmierende Kampagne aufgedeckt, in der 60 schädliche NPM-Pakete aktiv Daten aus Systemen exfiltrieren und die Integrität vieler Entwicklungsumgebungen gefährden. Die Hintergründe, Arbeitsweise und Präventionsmaßnahmen dieser Bedrohung sollen im Folgenden umfassend beleuchtet werden.
Die entdeckte Malware-Kampagne nutzt sogenannte Post-Install-Skripte – kleine Programme, die automatisch ausgeführt werden, sobald ein Paket über NPM installiert wird. Diese Skripte sammeln systemrelevante Daten wie Hostnamen, interne und externe IP-Adressen, DNS-Serverkonfigurationen sowie Verzeichnisinformationen der Benutzer. Die gesammelten Daten werden dann heimlich an eine von den Angreifern kontrollierte Discord-Webhooks-Adresse gesendet. Die Besonderheit dieser Angriffsmethode liegt in ihrer Schleichfähigkeit: Entwickler oder automatische Systeme bemerken in der Regel nicht, dass während der Installation Informationen abgegriffen werden. Die bisher entdeckten bösartigen Pakete sind über drei verschiedene NPM-Nutzerkonten veröffentlicht worden und alle teilen das gleiche schädliche Code-Snippet, was auf eine koordinierte Kampagne schließen lässt.
Diese Pakete wurden in einem Zeitraum von nur elf Tagen hochgeladen und aktiv bleiben die Schadprogramme bis zum heutigen Tag, was eine erhebliche Bedrohung darstellt. Trotz bereits über 3.000 Registrierungen dieser Pakete durch Entwickler und Unternehmen wurden sie von NPM bislang nicht entfernt, was auf eine Lücke in der Kontrolle solcher Phasen im Software-Lieferprozess hinweist. Die Schadsoftware ist auf allen gängigen Betriebssystemen lauffähig: Windows, macOS und Linux. Besonders auffällig ist die Integration von Mechanismen zur Erkennung von virtuellen Maschinen und Sandbox-Umgebungen.
Das Skript bricht die Datensammlung ab, wenn es Anzeichen dafür erkennt, dass das Paket in einer Testumgebung oder eines automatisierten Analyse-Sandbox ausgeführt wird. Diese Technik dient dazu, die Entdeckung zu erschweren und ausschließlich reale Zielumgebungen auszuspähen. Die gesammelten Metadaten bilden eine Art digitalen Fingerabdruck jedes betroffenen Systems. So können Angreifer interne Entwicklungsumgebungen mit den extern sichtbaren Netzwerken und Domains des Unternehmens verknüpfen – eine wertvolle Informationsquelle, um spätere nachhaltige Angriffe besser zu planen. Besonders kritisch ist die Gefahr, dass Continuous-Integration-Server oder interne Paket-Repositories identifiziert werden, was weitere Supply-Chain-Angriffe erleichtern kann.
Die Analyse der erfassten Daten liefert den Angreifern eine umfangreiche Übersicht über die Infrastruktur eines Ziels, einschließlich Benutzerinformationen, installierter Pakete und Netzwerk-Layouts. Das Szenario birgt das Risiko, dass diese Informationen für zukünftige, gezieltere Attacken genutzt werden, die über reine Datendiebstahlszenarien hinausgehen. Insgesamt spiegeln die 60 identifizierten schädlichen Pakete das Ausmaß und die Organisation der Kampagne wider. Drei Accounts mit jeweils zwanzig Paketen wurden entdeckt, wobei Namen wie „seatable“, „datamart“ oder „seamless-sppmy“ beispielhaft genannt wurden. Alle setzen auf den gleichen Payload, der an dieselbe Discord-Webhooks-Adresse meldet.
Ein weiteres Problem besteht darin, dass die NPM-Registry aktuell keine effektiven Schutzmechanismen gegen derartige Post-Install-Skripte bietet. Angreifer können immer wieder neue Skripte unter neuer Identität veröffentlichen, was eine anhaltende Gefahr für die Community darstellt. Um sich vor solchen Attacken zu schützen, sollten Entwickler und Unternehmen eine Vielzahl von Vorsichtsmaßnahmen ergreifen. Automatisierte Sicherheitsscanner, die beispielsweise auf unerwartete Post-Install-Hooks oder verdächtige URLs im Quellcode prüfen, sind dabei hilfreich. Auch Kontrollprozesse im Rahmen von Softwareentwicklungspipelines können verdächtige Muster identifizieren, bevor schädliche Pakete eine Produktionsumgebung erreichen.
Open-Source-Tools, wie der von Socket entwickelte GitHub App oder CLI, unterstützen beim Ausfilterungen solcher Gefahren in Pull-Requests oder beim Installationsprozess. Durch das Flaggen von riskanten Änderungen und die Vergabe von Risikobewertungen kann die Wahrscheinlichkeit eines erfolgreich eingeschleusten bösartigen Pakets deutlich reduziert werden. Zusätzlich müssen Entwickler die Herkunft der eingebundenen Pakete stärker hinterfragen und sensible Umgebungen oder Build-Server von weniger gesicherten Netzwerken isolieren. So lässt sich die Angriffsfläche begrenzen, selbst wenn ein solches Paket heruntergeladen wird. Neben technischen Maßnahmen sind aber auch organisatorische Schritte notwendig.
Unternehmen sollten Schulungen zum sicheren Umgang mit Paketmanagern anbieten, damit Teams ein Bewusstsein für Supply-Chain-Risiken entwickeln. Darüber hinaus müssen Prozesse definiert sein, die auf verdächtige Funde schnell reagieren und die betroffenen Pakete oder Accounts bei den Registries melden. Die steigende Anzahl von Vorfällen wie dieser macht deutlich, dass die Sicherheit von Softwarebeschaffung und Paketmanagement nicht als Nebensache angesehen werden darf. Supply-Chain-Attacken gehören zu den am schwierigsten zu erkennenden und gleichzeitig wirkungsvollsten Bedrohungen in der IT-Sicherheit. Die Kombination aus technischer Raffinesse, Ausnutzung von Entwicklertools und gezieltem Social Engineering erhöht den Handlungsdruck auf alle Beteiligten.
Neben den beschriebenen Angriffen auf NPM sind mittlerweile auch ähnliche Vorfälle in anderen Ökosystemen wie Python-Paketen oder Browser-Erweiterungen bekannt geworden. Schutzmechanismen müssen daher Plattform-übergreifend gedacht und kontinuierlich verbessert werden. Die Rolle von Registries wie NPM ist hier zentral. Sie müssen schneller und effektiver auf schädliche Veröffentlichungen reagieren, indem sie Gefahrensignale automatisiert erkennen und Mechanismen bereitstellen, die das Hochladen potenziell gefährlicher Pakete erschweren. Community-Meldungen und externe Sicherheitsforscher können dies dabei unterstützen, brauchen jedoch klare Prozesse und eine transparentere Kommunikation.