Skip to main content

Schadcode im npm-Paket event-stream entdeckt, das in den letzten 2,5 Monaten 8 Millionen Mal heruntergeladen wurde

Artikel von
How much do you really know about the npm package registry

27. November 2018

0 Min. Lesezeit

Im weit verbreiteten npm-Paket event-stream wurde ein schädliches Paket namens flatmap-stream entdeckt. Der Vorfall wurde über ein GitHub-Issue im Quellcode-Repository offengelegt.

Das Paket event-stream erleichtert die Erstellung und Verarbeitung von Streams und ist sehr beliebt: Es wird ungefähr 2 Millionen Mal pro Woche heruntergeladen. Seit seiner Aufnahme im September 2018 wurde das schädliche Unterpaket fast 8 Millionen Mal heruntergeladen.

Wir haben das schädliche Paket in unsere Schwachstellendatenbank aufgenommen. Wenn Ihr Projekt von Snyk überwacht wird und wir die schädliche Abhängigkeit finden – entweder event-stream@3.3.6 oder eine beliebige Version von flatmap-stream –, werden Sie wie üblich über Snyk-Warnmeldungen benachrichtigt.

Wenn Ihre Projekte nicht von Snyk überwacht werden und Sie prüfen möchten, ob dieses Paket verwendet wird, klicken Sie hier, um Ihre Repositorys zu testen – oder verwenden Sie unsere CLI, um Projekte lokal zu testen.

So entwickelte sich der Vorfall:

Das beliebte npm-Paket event-stream wird nicht aktiv gepflegt. Tatsächlich war das Paket seit einigen Jahren nicht mehr aktualisiert worden, abgesehen von kosmetischen Änderungen an der README-Datei – und der hier besprochenen schädlichen Bibliothek.

Der mutmaßliche Angreifer mit dem GitHub-Nutzernamen right9ctrl soll angeboten haben, bei der Pflege der Bibliothek zu helfen. Der ursprüngliche Maintainer, Dominic Tarr, stimmte vermutlich mit dem Ziel zu, seinen Nutzern zu helfen, und räumte right9ctrl Veröffentlichungsrechte ein. Es ist wichtig zu wissen, dass eine Übertragung der Eigentümerschaft in der Open-Source-Welt durchaus üblich ist. So wird die Pflege von Projekten ermöglicht, wenn die ursprünglichen Autoren dazu nicht mehr in der Lage oder bereit sind.

Leider fügte der neue Eigentümer dem Paket event-stream die schädliche Bibliothek flatmap-stream als Abhängigkeit hinzu. Dadurch wurde sie von allen Nutzern des Pakets event-stream heruntergeladen und ausgeführt, die die schädliche Version 3.3.6 verwendeten. Die Bibliothek wurde insgesamt fast 8 Millionen Mal heruntergeladen.

Da das Hinzufügen von Bibliotheken gängige Praxis ist, ist leicht nachzuvollziehen, warum die neue Bibliothek nicht gründlich geprüft wurde. Außerdem scheint sie die versprochene Funktion erfüllt zu haben (die Verarbeitung eines Flat-Map-Streams). Schließlich war der Schadcode in der Bibliothek verschleiert, um nicht entdeckt zu werden. Er wurde später entschlüsselt, wodurch der Schadcode sichtbar wurde.

Die schädliche Abhängigkeit blieb 2,5 Monate lang unentdeckt, bis ein Nutzer, Ayrton Sparling, am 20. November eine verdächtig wirkende Abhängigkeit bemerkte und meldete. Schnell wurde klar, dass die Abhängigkeit verschleierten Schadcode enthielt. Am 26. November wurde der Vorfall einer breiteren Öffentlichkeit bekannt. Snyk nahm die Schwachstelle umgehend in unsere Datenbank auf und meldete sie der Security-Arbeitsgruppe der Node Foundation, die den Fall derzeit prüft. Auch npm reagierte auf den Vorfall und zog die schädliche Bibliothek flatmap-stream sowie die betroffene Version 3.3.6 von event-stream zurück.

Was die schädlichen Aktionen selbst angeht, scheint sich der Code darauf konzentriert zu haben, Bitcoins aus Anwendungen zu stehlen und alle geschürften Bitcoins an das Wallet des Angreifers statt an das vorgesehene Ziel umzuleiten. Mehr dazu erfahren Sie auf der Snyk-Hinweisseite.

Was sollten Sie tun?

Ihre oberste Priorität sollte sein, zu prüfen, ob Sie die betreffende schädliche Bibliothek verwenden. Falls ja, schlagen künftige Builds Ihrer Anwendung fehl. Bereits bereitgestellte Anwendungen enthalten den Schadcode jedoch wahrscheinlich weiterhin und führen ihn möglicherweise sogar aus.

Wenn Ihr Projekt von Snyk überwacht wird, werden Sie wie üblich über Snyk-Warnmeldungen benachrichtigt, falls Ihre Anwendung dieses schädliche Paket enthält.

Wenn Sie Ihre Projekte noch nicht mit Snyk überwachen, können Sie einen einmaligen Test ausführen: Klicken Sie hier, um Ihre Repositorys zu testen, oder verwenden Sie unsere CLI, um Ihre Projekte lokal zu testen.

Ich bin betroffen. Was sollte ich als Nächstes tun?

Entfernen Sie zunächst das schädliche Paket aus Ihrer Anwendung. Dazu können Sie auf Version 3.3.4 von event-stream zurückwechseln.

Wenn Ihre Anwendung die schädliche Bibliothek verwendet hat und mit Bitcoin arbeitet, prüfen Sie ihre Aktivitäten der letzten drei Monate, um festzustellen, ob geschürfte oder transferierte Bitcoins nicht in Ihrem Wallet angekommen sind.

Wenn Ihre Anwendung nicht mit Bitcoin arbeitet, aber besonders schützenswert ist, empfehlen wir, ihre Aktivitäten der letzten drei Monate auf verdächtige Vorgänge zu überprüfen. Achten Sie insbesondere auf Daten, die über das Netzwerk an unbeabsichtigte Ziele gesendet wurden. Wir halten es für unwahrscheinlich, dass der Code mehr als den Diebstahl von Bitcoins bewirkt. Die vollständige Analyse läuft jedoch noch.

Starten Sie mit Capture-the-Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.

Weiterlesen

Blog

Frontier-Modelle fanden die Schwachstellen. Nur der Angreifer fand die Angriffsketten.

Die statische Analyse fand die Schwachstellen, doch erst Live-Angriffstests bewiesen, wie sie sich zu Angriffen verketten lassen. Ein Vergleich von Evo COS, Claude Security und Claude Code Security.

feature insights context
Blog

Autonome Angriffe sind bereits Realität. Die Verteidigung muss Schritt halten.

Autonome Angreifer verkürzen das Zeitfenster für die Verteidigung. Erfahren Sie, wie kontinuierliches Erkennen, Beheben, Validieren und Verhindern Sicherheitsteams helfen kann, Schritt zu halten.

Blog

Ihr Schwachstellen-Backlog ist keine technische Schuld mehr, sondern eine Angriffsfläche

Ein wachsender Schwachstellen-Backlog ist mehr als eine technische Altlast: Er ist eine Angriffsfläche. Erfahren Sie, warum veraltete Risikoeinschätzungen, automatisierte Angreifer und verkettete Findings einen neuen Ansatz erfordern.