JFrog beschreibt den Einstiegspunkt als versteckte VS-Code-Aufgabe mit dem Namen „eslint-check“. Sie ist mit der Option konfiguriert, beim Öffnen eines Ordners automatisch zu laufen, und kann so beim Öffnen eines Projektverzeichnisses als Workspace in einer Entwicklungsumgebung wie VS Code oder Cursor beliebigen Code ausführen. JFrog betont, dass nicht jede verschachtelte Datei .vscode/tasks.json rekursiv ausgeführt werde; der Trigger greife in diesem Fall, wenn das Verzeichnis des manipulierten Pakets selbst als Workspace geöffnet und als vertrauenswürdig markiert werde oder wenn Entwickler automatische Tasks ausdrücklich erlaubten.

Zusätzlich tarnt der Befehl die Schadlast als Schriftdatei unter public/fonts/fa-solid-400.woff2, obwohl die Datei laut JFrog tatsächlich nur JavaScript-Code enthält. Die missbräuchliche Nutzung einer automatisch laufenden VS-Code-Aufgabe zusammen mit als Font-Dateien getarntem JavaScript wurde Nordkorea zugeschrieben. Das Team OpenSourceMalware verfolgt die Aktivität unter dem Namen Fake Font und ordnet sie als Variante von Contagious Interview ein, einer seit Langem laufenden Kampagne, die laut Beschreibung Softwareentwickler und technisches Personal über betrügerische Bewerbungsverfahren ins Visier nimmt.

Sicherheitsforscher Paul McCarty hatte bereits im Januar erklärt, die Fake-Font-Kampagne liefere einen mehrstufigen Loader aus, der letztlich die Python-Hintertür InvisibleFerret installiere. Diese sei darauf ausgelegt, Kryptowallets und Browser-Zugangsdaten zu stehlen und dauerhaften Zugriff herzustellen. McCarty bezeichnete sie als dritte Unterkampagne von Contagious Interview, die seit 2023 andauere.

Technisch setzt die falsche Schriftdatei auf Blockchain-Infrastruktur als sogenannten Dead-Drop-Resolver. Genutzt werden TronGrid und als Ausweichmechanismus Aptos, um eine nächste JavaScript-Stufe so nachzuladen, dass Abschaltungen erschwert werden. Diese JavaScript-Stufe wiederholt laut JFrog das gleiche Muster, um einen Command-and-Control-Server zu konfigurieren, der Datei-Uploads und die Auslieferung der Python-Malware ermöglicht.

Dazu kommt eine Socket.io-Hintertür, die den Angreifern Fernzugriff auf infizierte Systeme verschafft. Genannt werden Shell-Ausführung, Auslesen der Zwischenablage, Dateioperationen, Datei-Uploads, Prozessverwaltung und die Ausführung beliebigen JavaScript-Codes. Parallel startet die Infektionskette einen Python-Loader, der den Python-Infostealer vom C2-Server abruft und notwendige Abhängigkeiten installiert.

Der Stealer zielt breit auf Zugangsdaten, Browserdaten, Wallets und Entwicklerartefakte. Er kann laut JFrog Daten aus Chromium-basierten Browsern und Mozilla Firefox, aus Passwortmanagern, Authenticatoren und Kryptowallets abziehen. Hinzu kommen entwicklerbezogene Informationen wie Git-Zugangsdaten, GitHub-CLI-hosts.yml, GitHub-Desktop-Logs sowie Daten aus VS Code und dem globalen Speicher. Ebenfalls erfasst werden Informationen aus dem Windows Credential Manager, Linux Secret Service, KDE Wallet, dem macOS-Schlüsselbund und Metadaten zu Cloud-Speichern wie Dropbox, Google Drive, Microsoft OneDrive, Apple iCloud, Box, Mega und pCloud.

Im letzten Schritt werden die gesammelten Daten in komprimierte ZIP-Archive verpackt und an den C2-Server hochgeladen. Falls die Angreifer zur Laufzeit ein Bot-Token bereitstellen, werden die Daten zusätzlich an einen Telegram-Bot übertragen.

Neben npm ist auch das Go-Ökosystem betroffen. Nextron Systems entdeckte 16 Go-Pakete mit derselben Malware. Laut JFrog handelt es sich überwiegend offenbar um legitime Pakete, deren jeweils neueste veröffentlichte Version die Malware zusätzlich zum ursprünglichen Paketinhalt enthielt, mit derselben Struktur und derselben gefälschten Schriftdatei.