Vor einer Kampagne mit bösartigen Skripten in npm-Paketen warnt die Sicherheitsfirma Socket. Die Analysten haben 60 dieser Pakete entdeckt, die einen Infostealer enthalten, der wiederum einen Fingerprint der Maschine, Netzwerkdaten sowie Verzeichnisstrukturen ausspioniert und an ein Discord-Konto der Angreifer sendet.
Die sechzig Pakete gehen von drei npm-Accounts aus (bbbb335656, cdsfdfafd1232436437 und sdsds656565), jeweils zwanzig, und wurden bereits 3000 Mal heruntergeladen. Das in allen Fällen gleiche, bösartige Skript startet mit der Installation (npm install) und führt einen Sandbox-Check aus, wird also nur in einer nichtvirtuellen Umgebung aktiv, auf einer Workstation oder einem echten CI-Knoten. Betroffen sind Windows-, macOS- und Linux-Systeme.
Das Beispiel für ein verseuchtes Paket ist in der npm-Registry inzwischen nicht mehr zu finden.
(Bild: Socket)
Immer wieder kommt es zu großflächigen Angriffen auf die Supply-Chain und obwohl die aktuell aufgetauchten Pakte inzwischen aus dem npm-Verzeichnis verschwunden sind, warnen die Analysten vor einer möglichen Ausweitung des Angriffs: "Die bösartigen Akteure können das Skript leicht klonen, seine Download-Telemetrie in Echtzeit aufzeichnen und es neu veröffentlichen." Mit den gestohlenen Daten besitzen die Täter genug Informationen für weitere Angriffe. Gerade in CI-Umgebungen ergeben sich durch die Kenntnis der Paket-Registries und Build-Pfade Möglichkeiten für weitergehende Lieferkettenangriffe.
Die Sicherheitsanalysten empfehlen zur Abwehr: Entwicklerinnen und Entwickler sollten in ihren automatisierten Checks auf Webhocks nach der Installation (hier Discord), auf hartverdrahtete URLs und auf ungewöhnlich kleine Tarballs prüfen.
Ein Ausschnitt aus dem Skript zeigt die Daten, die es ausspioniert:
const trackingData = JSON.stringify({ package: package, directory: __dirname, home_directory: os.homedir(), username: os.userInfo().username, dns: dns.getServers(), internal_hostname: os.hostname(), internal_ip: getIPAddress(), external_ip: externalIP.ip, external_hostname: externalIP.hostname, organization: externalIP.organization, resolved_url: packageJSON ? packageJSON.___resolved : undefined, package_version: packageJSON.version, package_json: packageJSON, package_type: 'npm', });
(
Sie haben heise+ bereits abonniert? Hier anmelden.
Oder benötigen Sie mehr Informationen zum heise+ Abo

Kommentare