Supply-Chain-Attack auf Open-Source-Pakete Selbst replizierender Wurm verbreitet sich im JavaScript-Ökosystem

Von Sebastian Gerstl 3 min Lesedauer

Anbieter zum Thema

Der Malware-Angriff auf das npm-Repository, über das Open-Source-Pakete für die weit verbreitete Programmiersprache Javascript verteilt werden, ist weitaus schwerwiegender als befürchtet: Ein ins System eingeschleuster Malware-Wurm hat mittlerweile über 180 Software-Pakete befallen.

Mindestens 180 über das npm-Repository verbreitete Open-Source-Pakete der Programmiersprache JavaScript sind von einem selbst replizierencen Wurm befallen. Die Malware greift Zugangsdaten ab und identifiziert Repositorien anderer Open-Source-Pakete, in die sie sich einschleust und so weiter über das npm-Ökosystem verbreitet.(Bild:  frei lizenziert /  Pixabay)
Mindestens 180 über das npm-Repository verbreitete Open-Source-Pakete der Programmiersprache JavaScript sind von einem selbst replizierencen Wurm befallen. Die Malware greift Zugangsdaten ab und identifiziert Repositorien anderer Open-Source-Pakete, in die sie sich einschleust und so weiter über das npm-Ökosystem verbreitet.
(Bild: frei lizenziert / Pixabay)

Cybersecurity-Experten haben eine neue Welle an Schadsoftware festgestellt, die über das npm-Paketregister verbreitet wird. Auch wenn die verbreitete Malware diesmal anderer Natur ist wird davon ausgegangen, dass die Ursache hierfür dieselbe im letzte Woche bekanntgewordenen Angriff auf das Repository liegt, über das Open-Source-Softwarepakete für die Programmiersprache JavaScript verbreitet werden.

„Die kompromittierten Versionen enthalten eine Funktion (NpmModule.updatePackage), die ein Paket-Tarball herunterlädt, die Datei package.json modifiziert, ein lokales Skript (bundle.js) einfügt, das Archiv neu packt und erneut veröffentlicht, wodurch eine automatische Trojanisierung nachgelagerter Pakete ermöglicht wird“, heißt es in einem Blogbeitrag von Socket, wo auch bereits auf die erste Malware-Attacke aufmerksam gemacht wurde. Eine solche sich selbst replizierende Malware, auch Wurm genannt, kann sich so schnell weiter durch das befallene Repositorium ausbreiten.

Auch andere Sicherheitsforscher haben übereinstimmend über die Malware berichtet. Anders als der Angriff letzte Woche schleust der Wurm allerdings keine geheime Mining-Software für Kryptowährungen ein, sondern ist potenziell viel gefährlicher: vom befallenes System werden gezielt sensible Zugangsdaten abgegriffen und weitergegeben. Der Wurm verbreitet sich in Windeseile: War anfangs noch von 40 befallenen Paketen die Rede, sind nach mehrheitlicher Ansicht mittlerweile bereits über 180 Pakete kompromittiert; einzelne Schätzungen befürchten, dass es bereits über 500 sein könnten..

Vorgehensweise der Malware

Der Software Supply Chain Worm, der sich automatisch über abhängige Pakete repliziert, geht folgendermaßen vor: Schadcode wird beim Installieren kompromittierter Pakete ausgeführt. Auf dem befallenen System durchsucht die eingeschleuste Malware lokale Systeme nach geheimen Tokens (z. B. GITHUB_TOKEN, AWS_ACCESS_KEY_ID) und exfiltriert diese über Webhooks an externe Server. Der Angriff betrifft sowohl Windows- als auch Linux-Systeme.

Anschließend nutzt eine in die infizierten Pakete injizierte Datei bundle.js legitime Werkzeuge wie TruffleHog, um Credentials für andere über das npm-Repository verbreitete Pakete ausfindig zu machen. Anschließend werden GitHub-Repositories erstellt oder verändert, Workflows injiziert und neue kompromittierte Versionen anderer Pakete automatisiert veröffentlicht – inklusive Schadcode. Nähere Einsichten zu der Arbeitsweise der Malware liefert das Blog von StepSecurity.

Die Angreifer verwenden das Repository „Shai-Hulud“, benannt nach den legendären Sandwürmern aus dem Science-Fiction-Epos Dune. Der Name ist mehr als nur ein popkultureller Verweis – die Analogie zu einem sich durch das Ökosystem grabenden und unaufhaltsam wuchernden Wurm passt erschreckend gut.

Zu den betroffenen Paketen zählen unter anderem solche aus dem Umfeld von @ctrl, der NativeScript-Community sowie zahlreiche Projekte mit Bezug zu CrowdStrike. Besonders brisant: Einige dieser Pakete erreichen wöchentlich Millionen Downloads, etwa @ctrl/tinycolor.

Verwandschaft zu der jüngsten Attacke liegt nahe

Nach Angaben von ReversingLabs begann der Angriff vermutlich mit dem Paket rxnt-authentication, das am 14. September veröffentlicht wurde. Der dahinterstehende Account techsupportrxnt gilt derzeit als „Patient Zero“. Offen ist bislang, wie genau dieser kompromittiert wurde – Phishing oder eine fehlerhafte GitHub-Workflow-Konfiguration gelten als mögliche Ursachen.

CrowdStrike reagierte umgehend und entfernte die betroffenen Pakete aus dem Registry. Laut eigener Aussage war die Plattform selbst nicht betroffen. Die internen Schlüssel wurden rotiert, und eine gründliche Untersuchung läuft in Zusammenarbeit mit dem npm-Team.

Die Auswirkungen der Kampagne sind weitreichend: Eine Analyse der gestohlenen Daten ergab laut GitGuardian bereits mindestens 278 kompromittierte Secrets, darunter 188, die direkt über manipulierte GitHub-Workflows abgeflossen sind. Sicherheitsforscher sprechen von einer „Kaskadenkompromittierung“ des npm-Ökosystems.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung

Entwicklern wird dringend geraten, ihre Umgebungen auf betroffene Paketversionen zu prüfen, Tokens und Zugangsdaten umgehend zu rotieren sowie alle Build-Prozesse zu überprüfen. Besonders gefährdet sind Projekte, die automatische Deployments und Publishing ausführen, ohne Secrets ausreichend zu isolieren.

Security-Forscher mahnen zu mehr Awareness beim Einsatz von Open-Source-Paketen

Langfristig stellt der Vorfall einmal mehr die Frage nach der Resilienz von Open-Source-Infrastrukturen. Die enge Verzahnung von Entwicklerkonten, CI/CD-Pipelines und Paketmanagern erfordert nicht nur technologische Schutzmaßnahmen, sondern auch ein höheres Maß an Awareness – insbesondere in professionellen DevOps- und Security-Teams.

Die folgenden Pakete hat Socket eindeutig als kompromittiert identifiziert:

  • angulartics2@14.1.2
  • @ctrl/deluge@7.2.2
  • @ctrl/golang-template@1.4.3
  • @ctrl/magnet-link@4.0.4
  • @ctrl/ngx-codemirror@7.0.2
  • @ctrl/ngx-csv@6.0.2
  • @ctrl/ngx-emoji-mart@9.2.2
  • @ctrl/ngx-rightclick@4.0.2
  • @ctrl/qbittorrent@9.7.2
  • @ctrl/react-adsense@2.0.2
  • @ctrl/shared-torrent@6.3.2
  • @ctrl/tinycolor@4.1.1, @4.1.2
  • @ctrl/torrent-file@4.1.2
  • @ctrl/transmission@7.3.1
  • @ctrl/ts-base32@4.0.2
  • encounter-playground@0.0.5
  • json-rules-engine-simplified@0.2.4, 0.2.1
  • koa2-swagger-ui@5.11.2, 5.11.1
  • @nativescript-community/gesturehandler@2.0.35
  • @nativescript-community/sentry 4.6.43
  • @nativescript-community/text@1.6.13
  • @nativescript-community/ui-collectionview@6.0.6
  • @nativescript-community/ui-drawer@0.1.30
  • @nativescript-community/ui-image@4.5.6
  • @nativescript-community/ui-material-bottomsheet@7.2.72
  • @nativescript-community/ui-material-core@7.2.76
  • @nativescript-community/ui-material-core-tabs@7.2.76
  • ngx-color@10.0.2
  • ngx-toastr@19.0.2
  • ngx-trend@8.0.1
  • react-complaint-image@0.0.35
  • react-jsonschema-form-conditionals@0.3.21
  • react-jsonschema-form-extras@1.0.4
  • rxnt-authentication@0.0.6
  • rxnt-healthchecks-nestjs@1.0.5
  • rxnt-kue@1.0.7
  • swc-plugin-component-annotate@1.9.2
  • ts-gaussian@3.0.6

Eine regelmäßig aktualisierte Liste der betroffenen Packages liefert unter anderem das Security-Blog Aikido.dev.(sg)

(ID:50553421)