Share
Beitragsbild zu NPM-Paket „duer-js“ tarnt Infostealer mit Mehrfach-Payload-Architektur

NPM-Paket „duer-js“ tarnt Infostealer mit Mehrfach-Payload-Architektur

12. Februar 2026

Das Sicherheitsteam von JFrog hat ein mehrstufiges Schadprogramm im NPM-Repository identifiziert. Das unter dem Namen „duer-js“ veröffentlichte Paket kombiniert verschiedene Angriffstechniken und bleibt nach der Deinstallation aktiv. Die Malware zielt auf Windows-Systeme ab und exfiltriert sensible Nutzerdaten über Discord-Webhooks.

Verschleierte Payload mit Anti-Analyse-Mechanismen

Der vom Nutzer luizaearlyx hochgeladene Code präsentiert sich als „Console Visibility“-Tool, enthält jedoch einen ausgefeilten Informationsdieb. Die Hauptdatei index.js verbirgt ihre Funktionalität hinter mehreren Verschleierungsebenen.

Die erste Auffälligkeit: Eine eval()-Anweisung mit einer Zeichenkette von knapp 64.000 Zeichen Länge. Nach dem Extrahieren zeigte sich ein Anti-Manipulationsschutz, der Analysten bei Modifikationsversuchen ausbremsen soll.

Am Ende dieser Codezeile befindet sich eine URI-kodierte Zeichenfolge. Diese durchläuft einen XOR-Mechanismus mit einem zur Laufzeit generierten Schlüssel. Eine zweite Dekodierungsrunde offenbart ein Array mit charakteristischen Werten – die String-Tabelle der Malware.

Die Entschlüsselung mit dem XOR-Schlüssel 11 ermöglicht die Rekonstruktion der ursprünglichen Zeichenketten-Konvertierungstabelle. Durch Substitution der Auflösungsfunktionen entsteht eine Version nahe am ursprünglichen Quellcode.

Systematischer Datendiebstahl aus verschiedenen Anwendungen

Nach der Initialisierung beendet das Schadprogramm aktive Browser- und Telegram-Prozesse. Anschließend startet die Datenextraktion aus mehreren Quellen.

Discord-Installationen werden im %APPDATA%- und %LOCALAPPDATA%-Verzeichnis durchsucht. Die Malware extrahiert Tokens aus lokalem Speicher und leveldb-Datenbanken aller Varianten: discord, discordcanary, discordptb, discorddevelopment und lightcord.

Pro Token erfasst das Programm Benutzerinformationen über die API-Endpunkte /users/@me, ermittelt Nitro-Status, extrahiert Abrechnungsdaten via /billing/payment-sources und listet Freunde sowie Gilden auf. Backup-Codes für die Zwei-Faktor-Authentifizierung werden durch Durchsuchen der Benutzerverzeichnisse nach discord_backup_codes lokalisiert.

Browser-Daten werden aus Chrome, Edge, Brave, Opera und Yandex extrahiert. Die Malware dekodiert Passwörter aus passwords.db mittels DPAPI-Entschlüsselung, kopiert Cookies aus Network\Cookies und Network\LxnyCookies und liest Kreditkarteninformationen aus den Webdaten-Datenbanken.

Die Extraktion umfasst Standardprofile sowie Profile 1 bis 5 und Gastprofile. Zusätzlich werden Cookie-Verzeichnisse für Wallets und Erweiterungsdaten verschiedener Krypto-Wallets durchsucht, darunter Exodus, BraveWallet und MetaMask-kompatible Erweiterungen.

Krypto-Wallets stehen ebenfalls im Fokus. Das Programm komprimiert %APPDATA%\Exodus\exodus.wallet und bereitet den Upload als Exodus.zip vor. Browser-Erweiterungs-Wallets wie AtomicWallet werden über ihre lokalen und Sync-Einstellungen identifiziert.

Weitere Ziele sind Steam-Konfigurationsdaten aus C:\Program Files (x86)\Steam\config, die als steam.zip verpackt werden. Systeminformationen wie Hostname, Betriebssystemversion, Betriebszeit, RAM-Ausstattung, CPU-Anzahl, Benutzername und IP-Adresse (abgerufen von myexternalip.com) werden gesammelt.

Exfiltration über mehrere Kanäle

Die gestohlenen Daten werden in Textdateien unter einem „Copyright“-Pfad gespeichert: Passwords.txt, Cards.txt und Autofills.txt. Der primäre Exfiltrationsweg führt über einen Discord-Webhook.

Als Backup-Methode nutzt die Malware den Gofile-Dienst. Zunächst wird ein Server von https://api.gofile.io/servers abgerufen, anschließend erfolgt der Upload nach https://<server>.gofile.io/uploadFile. Dieser legitime Dienst liefert dem Angreifer eine Download-URL, die wiederum an den Discord-Webhook gesendet wird.

Ein Persistenzversuch durch Kopieren der node.exe nach %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup schlägt fehl. Da die ausführbare Datei ohne zugehörige JavaScript-Datei nicht funktionsfähig ist, wird keine dauerhafte Präsenz etabliert.

Zweite Stufe: Manipulation der Discord-Anwendung

Die erste Payload lädt zusätzlichen Code von hxxps[:]//ghostbin[.]axel[.]org/paste/yckfb/raw herunter. Diese zweite JavaScript-Datei verwendet identische Verschleierungstechniken mit URI-Escaping und XOR-Operationen.

Der ursprüngliche Schadcode lokalisiert Discord-Installationsverzeichnisse unter %LOCALAPPDATA% und überschreibt die dortige index.js mit der heruntergeladenen Payload. Beim nächsten Start von Discord wird der injizierte Code aktiv und meldet „Successfully Injected“ an den Exfiltrations-Webhook.

Die Kernfunktion dieser zweiten Stufe besteht im Hijacking der Electron-Umgebung. Über die webContents.debugger-API klinkt sich das Schadprogramm in den Netzwerkstack ein und wartet auf Network.responseReceived-Ereignisse.

Gefiltert werden URLs für /login und /register zur Erfassung neuer Zugangsdaten, /mfa/totp und /mfa/codes-verification zum Abfangen von Zwei-Faktor-Codes sowie /@me zur Überwachung von Kontoänderungen.

Bei relevanten Ereignissen extrahiert die Malware mittels Network.getResponseBody und Network.getRequestPostData Klartext-Zugangsdaten und Sitzungstokens direkt aus dem Discord-Client-Speicher.

Auch Zahlungsvorgänge werden überwacht. Das Programm fängt Kreditkartennummer, CVC und Ablaufdatum ab, bevor diese Daten den legitimen Server erreichen. Alle erfassten Informationen wandern an denselben Discord-Webhook wie in der ersten Stufe.

Die zweite Payload verfügt über eine selbstständige Update-Funktion basierend auf dem GitHub-Repository https[:]//raw[.]githubusercontent[.]com/xSalca/Viral/main/index[.]js. Die Analyse zeigt dort eine leicht modifizierte Version aus dem Vorjahr, während das Repository selbst bereits zwei Jahre existiert.

Maßnahmen für betroffene Systeme

Nutzer mit installiertem Paket sollten folgende Schritte durchführen:

Deinstallation via npm uninstall duer-js ausführen. Browser-Passwörter, Cookies, Krypto-Wallet-Zugänge und Steam-Anmeldedaten als kompromittiert betrachten und rotieren.

Für die Entfernung der Discord-Manipulation: Discord vollständig schließen und über Windows-Einstellungen deinstallieren. Mit Win+R die Eingabe %LOCALAPPDATA% öffnen und die Ordner Discord, DiscordPTB sowie DiscordCanary löschen. Anschließend die offizielle Version neu installieren.

Aus dem Startordner die Datei node.exe entfernen. Discord-Tokens als gestohlen betrachten und invalidieren. Zwei-Faktor-Authentifizierung aktivieren, sofern nicht bereits geschehen.

Einordnung und Hintergrund

Trotz lediglich 528 Downloads ist das Schadenspotenzial für Betroffene erheblich. Die Kombination aus Verschleierung, mehrstufiger Architektur und ausgefeilten Exfiltrationsmechanismen hebt dieses Paket von Standard-NPM-Malware ab.

Die zweijährige Existenz des GitHub-Repositories legt nahe, dass vor der Entdeckung durch JFrog bereits weitere Infektionsversuche stattgefunden haben könnten. Die Identität hinter dem Nutzer luizaearlyx bleibt ungeklärt.

JFrog Xray und JFrog Curation detektieren das Paket mittlerweile unter der entsprechenden Xray-ID.

Auch spannend:


Bild/Quelle: https://depositphotos.com/de/home.html