Zum Inhalt springen

MALFEX: npm-Malware blieb 14 Monate lang unentdeckt

MALFEX, eine npm-Malware-Kampagne eines einzelnen Täters, veröffentlichte seit 2023 zwölf Pakete und kam auf 40.767 Downloads. Einige Pakete sind weiter online, ohne Advisory.

Von Tech AI Wire Team

4 Min. Lesezeit

XLinkedIn
Screenshot of CloudSEK's blog post MALFEX - A malicious npm postinstall no advisory has caught for fourteen months, above the report's header image.

Die Zahlen

npm packages published by one operator
12
total downloads, per Checkmarx
40,767
downloads of function-flag alone
37,419
when the first package appeared
Aug 2023

Ein einzelner Angreifer veröffentlicht seit August 2023 Malware auf npm, und ein Teil davon ließ sich Ende September 2026 noch installieren. Das Sicherheitsunternehmen CloudSEK nannte die Kampagne am 30. September MALFEX. Es fand ein schädliches Paket, das 14 Monate lang in keinem Sicherheits-Advisory stand. Checkmarx legte am 5. Oktober nach und zählte 40.767 Downloads über alle Pakete der Kampagne. Steckt eines davon in Ihrem Abhängigkeitsbaum, läuft auf einem Windows-Rechner, der es installiert hat, womöglich ein Fernzugriffstool.

So funktioniert der Angriff

npm ist die Paketregistry für JavaScript. Wenn Sie ein Paket installieren, kann npm ein „postinstall“-Skript ausführen, einen Befehl, den der Paketautor festgelegt hat. MALFEX nutzt dieses Skript, um Windows-Malware herunterzuladen und zu starten, sobald ein Entwickler npm install ausführt.

Die Payloads verstecken sich offen. Laut CloudSEK laden die Skripte Windows-Programme herunter, die als PNG-Bilder getarnt sind. Checkmarx hat drei getrennte Verbreitungswege nachverfolgt.

  1. Overlord RAT. Die Pakete tlxbnhd, tldriver und mxdriver holen ein gefälschtes PNG von api.imghippo.com. Darin stecken ein signiertes AutoIt3-Programm und ein verschlüsseltes Skript, das Overlord lädt, ein in Go geschriebenes Open-Source-Fernzugriffstool. Ein Fernzugriffstool, kurz RAT, erlaubt es dem Angreifer, den Rechner aus der Ferne zu steuern.
  2. Ein Datendieb. Eine Kette aus native-runner, img-to-native und cdn-img-fetch zieht ein verschlüsseltes Programm von einem GitHub-Konto namens „cavecrew“. Danach lädt sie einen 64 MB großen Node.js-Stealer herunter, den Checkmarx „movinlike“ nennt.
  3. Ein langlebiger Downloader. function-flag lädt immer wieder neue Payloads von wechselnden Hosts nach, darunter discloud.app, squareweb.app, render.com und ein Discord-CDN-Proxy.

Alle drei Wege zielen auf Windows. Checkmarx merkt an, dass der Downloader unter macOS und Linux scheitert, weil eine Windows-spezifische Einstellung, auf die er sich stützt, dort nicht existiert.

Was gestohlen wird und wie es sich versteckt

Overlord hat keine feste Serveradresse. „Er kann verschlüsselte Notizen lesen, die der Betreiber in Solana-Transaktionen ablegt, sie entschlüsseln und das Ergebnis als Serverliste verwenden“, schreibt Checkmarx. Solana ist eine öffentliche Blockchain, daher kann der Betreiber Server wechseln, ohne die Malware zu ändern.

Der Stealer hat es auf acht Discord-Clients und auf Cookies von Chrome, Edge, Brave, Opera, Vivaldi und Yandex abgesehen. Er greift außerdem Telegram Desktop und die Krypto-Wallets MetaMask, Phantom und Coinbase an. Gestohlene Daten verlassen den Rechner über einen Discord-Webhook, der laut Checkmarx am 26. September 2026 erstellt wurde.

Auch die Persistenz ist unauffällig. Checkmarx fand eine geplante Aufgabe namens \Maiden, die alle fünf Minuten läuft und deren Datum auf den 1. Januar 2020 zurückgesetzt ist. Der Betreiber schob schädlichen Code außerdem mit Leerzeichen weit nach rechts, sodass er jenseits des Rands eines normalen Editorfensters liegt.

CloudSEK zufolge signiert der Betreiber seine Arbeit als „Murizada“, unter mehreren Kennungen, darunter malfexkkj, malfex_user und cavecrew.

Die Pakete, die Sie prüfen sollten

PaketRolleDownloads laut CheckmarxStatus
function-flagDownloader37.419Online, kein Advisory
function-colorNicht angegeben300Online, kein Advisory
cdn-img-fetchStealer-Kette643Advisory deckt nur 1.0.0-1.0.1 ab
img-to-nativeStealer-Kette967Advisory vorhanden
native-runnerStealer-Kette872Von Checkmarx aufgeführt
tlxbnhdOverlord RAT139Beschlagnahmt
tldriverOverlord RAT138Beschlagnahmt
mxdriverOverlord RAT289Beschlagnahmt

Die beiden Firmen zählen leicht unterschiedlich. CloudSEK führt function-flag, cdn-img-fetch und function-color als weiterhin installierbar auf. „Die drei Pakete ohne Advisory sind die einzigen aktiven Bedrohungen, die Verteidiger heute angehen können“, schreibt es. Checkmarx erklärt die Abweichung bei cdn-img-fetch: Das Advisory MAL-2026-17320 deckt die Versionen 1.0.0 und 1.0.1 ab, die schädlichen Versionen sind aber 1.0.2 und 1.0.3.

Checkmarx zufolge veröffentlichte der Betreiber insgesamt 12 Pakete: acht schädliche und vier harmlose Köder. In der Woche bis zum 1. Oktober kamen die Pakete immer noch auf 3.017 Downloads.

Entwickler sind in diesem Monat häufig im Visier. Anfang Oktober wurde eine andere Kampagne gemeldet, die Malware in Git-Post-Checkout-Hooks in gefälschten Recruiter-Repositories versteckt.

Was das für Entwickler bedeutet

  • Durchsuchen Sie jetzt Ihre Lockfiles. Suchen Sie in package-lock.json, yarn.lock oder pnpm-lock.yaml nach jedem Paketnamen aus der Tabelle, auch bei transitiven Abhängigkeiten. npm ls <name> zeigt, woher ein Paket stammt.
  • Verlassen Sie sich nicht allein auf Advisories. Das Advisory zu cdn-img-fetch deckt die falschen Versionen ab, und zwei aktive Pakete hatten keines. Ein sauberes npm audit beweist nicht, dass Sie vor dieser Kampagne sicher sind.
  • Deaktivieren Sie Installationsskripte, wo es geht. npm install --ignore-scripts oder ignore-scripts=true in .npmrc verhindert, dass postinstall-Code läuft. Erlauben Sie Skripte nur für Pakete, die sie brauchen.
  • Prüfen Sie Windows-Rechner, die ein aufgeführtes Paket installiert haben. Suchen Sie nach einer geplanten Aufgabe namens \Maiden und einer Datei namens node_runtime_helper.exe unter %APPDATA%\Microsoft\Windows\. Checkmarx nennt außerdem die Adresse 104.234.65.75 auf Port 700 als Download-Server.
  • Erneuern Sie, was der Stealer mitnimmt. Wurde ein Rechner getroffen, melden Sie sich bei Discord und Telegram ab, löschen Sie Browser-Sitzungen, ändern Sie gespeicherte Passwörter und bringen Sie Guthaben aus Browser-Wallets in Sicherheit.

Die 37.419 Downloads von function-flag sind die Zahl, die man sich merken sollte. Ein kleines Hilfspaket mit schlichtem Namen trug fast die ganze Kampagne.

Quellen

  1. MALFEX - A malicious npm postinstall no advisory has caught for fourteen months - CloudSEK
  2. MALFEX npm Malware Campaign: Three Payloads And An Adversary That Signs Their Work - Checkmarx

Ähnliche Artikel