Mobile App PentestJan Kahmen8 min Lesezeit

Node Package Manager Security - alles über die Sicherheit von NPM-Paketen

Viele Versionen, die Sie für das Node Package Manager Update nutzen können, sind laut den Repository-Verantwortlichen möglicherweise mit Schadcode verseucht.

Inhaltsverzeichnis

Node Package Manager - Unbekannte kompromittierende Tools mit schadhaftem Code

In Web-Sicherheit zu investieren, wird immer wichtiger, wie die jüngsten Probleme mit dem Node Package Manager gezeigt haben. Sollten Sie sich vor Kurzem die Pakete COA oder RC für Ihre JavaScript-Laufzeitumgebung Node.js heruntergeladen haben: Dann waren Sie vermutlich mit Problemen konfrontiert. Der Grund dafür ist Schadcode, der aus dem Repository des Node Package Managers direkt auf Ihrem Computer gelandet ist.

Was auf den ersten Blick nicht allzu kritisch klingt, gilt es jedoch in Relation zu betrachten: Beide Pakete werden wöchentlich über 20 Millionen Mal heruntergeladen - von den unterschiedlichsten Entwicklern. Dadurch steigt das Risiko einer Ausbreitung stark an, was wiederum eine deutlich höhere NPM Security erforderlich macht. Als Grund für den Schadcode gilt übrigens ein kompromittierter Maintainer-Account, über den ein präpariertes Paket in das Repository gelangen konnte. Zwar ist dieser Account mittlerweile deaktiviert, doch erkannte man das Problem leider zu spät.

Die manipulierten Versionen

Zahlreiche Versionen, die Sie für das Node Package Manager Update nutzen können, sind laut den Repository-Verantwortlichen möglicherweise mit Schadcode verseucht. Dieses Problem betrifft die GitHub-Seiten vom Configuration Loader (RC) und dem Command Line Parser (COA). Folgende Versionen sollen betroffen sein:

  • COA: 2.0.3, 2.0.4, 2.1.1, 2.1.3, 3.0.1, 3.1.3
  • RC: 1.2.9, 1.3.9, 2.3.9

Installieren Sie eine dieser Versionen im Rahmen eines Node Package Manager Updates, ist Ihr Computer wahrscheinlich vollständig kompromittiert.

Vorsicht ist auch bei den Versionen COA 2.0.2 und RC 1.2.8 geboten. Zwar gilt der Trojaner aus beiden als entfernt, doch könnten noch immer verborgene Systemeinstellungen zurückgeblieben sein. Eine vollständige Neuinstallation Ihres Systems ist in diesem Fall das Einzige, was Sie unternehmen können.

Vorsicht, Trojaner!

Das Schlimme an dem Trojaner aus dem Node Package Manager ist, dass es sich dabei um einen Qakbot-Trojaner handelt. Diese Malware ist dafür bekannt, dass sie Ihre Log-in-Daten und andere sensible Informationen mitschneidet. Um sich zusätzlich abzusichern, sollten Sie auf die Zwei-Faktor-Authentifizierung Ihrer Accounts setzen. Sobald sie auf die F2A Methode zurückgreifen, reicht das einfache Einloggen mit korrektem Kennwort nicht länger aus.

Vielmehr benötigen Sie einen zusätzlichen Code, der beispielsweise direkt über Ihr Smartphone zu Ihnen findet. Dieser Code liegt dem Angreifer jedoch nicht vor, sodass Sie sicherer sind. Möchten Sie im Allgemeinen in Web-Sicherheit investieren, ist ebenfalls das regelmäßige Penetration Testing nach einem Security Testing Guide sinnvoll. So sichern Sie sich und Ihr Unternehmen langfristig vor unliebsamen Sicherheitslücken ab.

Was ist ein Node Package Manager (NPM)?

Der Node Package Manager ist einerseits ein Repository, andererseits ein Command-Line Interface (CLI). Damit verfolgt der Node Package Manager unterschiedliche Ziele.

CLI-Tool: Über das Command-Line Interface können Sie Pakete herunterladen und diese innerhalb Ihrer Anwendungen installieren.

Repository: Das Repository ermöglicht es Ihnen, wiederverwendbaren Code zu veröffentlichen und zu verteilen. Mittlerweile enthält dieses Repository mehr als 800.000 Pakete, die den Entwicklern zur Verfügung stehen.

Beide dieser Hilfsmittel sind kostenlos verfügbar. Sie können Sie also jederzeit herunterladen und die Pakete aus dem Node Package Manager direkt in Ihre eigenen Projekte integrieren. Dieses Vorgehen erspart Ihnen viel Zeit und Mühe, da Sie bestehende Funktionen wiederverwenden können, anstatt allesamt neu zu programmieren. Das bedeutet: Der Node Package Manager erspart Ihnen sowohl Zeit als auch Mühe.

Zusätzlich erlaubt es Ihnen das CLI Tool, die Abhängigkeiten innerhalb Ihrer Anwendung zu verwalten. Diese Abhängigkeiten löst der Node Package Manager automatisch auf, sobald Sie das Projekt an Ihre Anwender verteilen.

Genau diese Eigenschaften sind es, die den Node Package Manager zu einem hilfreichen Tool in Ihrem Alltag machen. Allerdings erfordert dieser hohe Grad der Automatisierung ein hohes Sicherheitsbewusstsein. Eine gute Grundlage dafür ist die CIS Benchmark, also das Center for Internet Security. Durch ein regelmäßiges Penetration Testing nach den Best Practices lässt sich die Sicherheit Ihrer IT-Infrastruktur dauerhaft gewährleisten.

Der Node Package Manager und Sicherheits-Bedrohungen

NPM Pakete sind benutzerfreundlich, quelloffen und weit verbreitet. Ihr Nachteil ist: Sie ebenen Sicherheitsbedrohungen den Weg zu Ihrem Computer. Vor allem NPM Pakete, die über die Registry gespeichert sind, weisen aktuell die größten Sicherheitsprobleme im Node Package Manager auf. An sich ist die Eintrittsbarriere einer Veröffentlichung im Node Package Manager sehr gering, was unterschiedlichste Inhalte ermöglicht.

Trotz der vorherigen Prüfung durch das Sicherheitsteam ist es deshalb möglich, dass ungewollte Inhalte in das Repository gelangen. Der Grund dafür ist nicht zuletzt, dass Cyberkriminelle immer bessere Methoden finden, die gängigen Abwehrmechanismen solcher Sicherheitsprüfungen zu umgehen.

Die Herausforderung im Node Package Manager ist jedoch nicht neu: Bereits 2018 gelang es Cyberkriminellen, eines der beliebtesten Pakete zu kompromittieren. Damals nutzten diese den bösartigen Code dazu, Geld aus einer Krypto-Wallet zu stehlen. Dieser Code landete auf über 8 Millionen Geräten, bevor die Schadsoftware entdeckt und beseitigt wurde.

Dasselbe Prinzip kommt auch bei heutigen Problemen zum Einsatz. Hat ein bösartiger Akteur einmal die Veröffentlichungsrechte erhalten, kann er Abhängigkeiten direkt in die Bibliothek eingliedern. Das Ergebnis: Er schadet Ihrem Computer, sobald Sie das jeweilige Package aus dem NPM herunterladen.

So schützen Entwickler den Node Package Manager

Damit Sie als Entwickler stets auf der sicheren Seite sind, sollten Sie ihre Konten mit starken Passwörtern schützen. Auch die Zwei-Faktor-Authentifizierung ist eine Sicherheitsmaßnahme, von der Sie langfristig profitieren. Das betrifft sowohl den Node Package Manager als auch viele andere Anwendungen.

Best Practices in der NPM Security

Zu den Best Practices im Node Package Manager gehört es, stets die vorliegenden Änderungen zu prüfen. Diese zusätzliche Kontrolle ist übrigens nicht nur beim Node Package Manager von Bedeutung, sondern auch bei anderen Software-Änderungen. Zwar sind Sie in vielen Fällen darauf angewiesen, den Drittanbietern zu vertrauen. Ein blindes Vertrauen hingegen ist im Falle eines Run-Skripts nicht angebracht.

Ebenfalls wichtig: Seit der Version 5 haben Sie die Möglichkeit, über die package-lock.json Datei Abhängigkeiten zu fixieren und automatische Updates zu vermeiden. Diese Chance sollten Sie wahrnehmen, da Sie sich dadurch vor potenziell bösartigem Code schützen.

Fazit - Vorsicht walten lassen und Infos der Entwickler im Auge behalten

Sollten Sie auf den Node Package Manager vertrauen um Ihre Node.js Anwendungen weiterzuentwickeln, müssen Sie aktuell vorsichtig sein. Verzichten Sie darauf, die betroffenen Versionen herunterzuladen und warten Sie auf weitere Informationen der Entwickler. Zusätzlich ist es wichtig, sich über die Practices des CIS Benchmark zu informieren und die eigenen Systeme abzusichern. Auf diese Weise profitieren Sie gleichermaßen von dem CLI Tool, aber auch von einer sicheren Umgebung.

Erweitern Sie Ihren Horizont mit einer Reifegradanalyse!

Reifegradanalyse für 1990 € !

Buchen Sie unserer Kennenlernprojekt, um einen groben aber ganzheitlichen Überblick über Ihre Maßnahmen in der Informationssicherheit zu bekommen!

Kontakt

Neugierig? Überzeugt? Interessiert?

Vereinbaren Sie ein unverbindliches Erstgespräch mit einem unserer Vertriebsmitarbeiter. Nutzen Sie den folgenden Link, um einen Termin auszuwählen: