Zwei parallele Auslieferungswege

Zwei kompromittierte joyfill-npm-Pakete schleusen Fernzugriffstrojaner ein

npm

Beta-Versionen zweier npm-Pakete aus dem Namensraum @joyfill wurden kompromittiert und liefern einen Fernzugriffstrojaner.

Betroffen sind die Pakete @joyfill/layouts in der Version 0.1.2-2773.beta.0 sowie @joyfill/components in der Version 4.0.0-rc24-2773-beta.4. Laut einer Analyse des Sicherheitsunternehmens Socket enthalten beide Pakete einen zur Importzeit aktiven JavaScript-Schadcode, der verschlüsselten Code über Transaktionen der Blockchains Tron, Aptos und BNB Smart Chain nachlädt. Anders als bei vielen anderen bösartigen npm-Paketen wird der Code hier nicht über einen npm-Lifecycle-Hook ausgelöst, sondern bereits dann, wenn Node.js den CommonJS-Einstiegspunkt des Pakets lädt. Schutzmaßnahmen wie die Installation mit der Option –ignore-scripts greifen dadurch nicht.

Anzeige

Die verwendete mehrstufige Blockchain-Infrastruktur wird einem als PolinRider bekannten Bedrohungscluster zugeordnet, der nach Einschätzung von Sicherheitsforschern mit der als Contagious Interview bekannten Kampagne zusammenhängt. Bereits Anfang des Monats hatten die Sicherheitsunternehmen Checkmarx und OpenSourceMalware eine ähnliche Kampagne namens ViteVenom rund um das Vite-Frontend-Ökosystem beschrieben, die dieselbe Blockchain-Infrastruktur nutzte. Socket geht davon aus, dass beide Kampagnen zur selben, mutmaßlich nordkoreanischen Operation gehören.

Zwei parallele Auslieferungswege für die npm-Schadsoftware

Der Schadcode verzweigt sich laut Socket in zwei parallele Abläufe. Ein direkt im Prozess ablaufender Zweig lädt eine rund 77 Kilobyte große JavaScript-Payload nach, die Ähnlichkeiten zur Malware-Familie DEV#POPPER aufweist. Ein zweiter, vom eigentlichen Prozess losgelöster Zweig startet einen eigenständigen Node.js-Prozess, der eine zusätzliche Payload von der Adresse 23.27.13.43 anfordert, entschlüsselt und ausführt. Socket weist darauf hin, dass dieser zweite Zweig auch nach Abschluss eines Builds, Tests oder CLI-Befehls weiterlaufen kann.

Zum Abruf des Schadcodes fragt das Paket zunächst die letzte ausgehende Transaktion einer fest hinterlegten Tron-Adresse ab, um daraus einen Transaktions-Hash der BNB Smart Chain zu ermitteln. Schlägt dieser Schritt fehl, wird stattdessen ein Aptos-Konto als Ausweichoption abgefragt. Aus der jeweiligen Transaktion wird anschließend der eigentliche JavaScript-Code entschlüsselt und ausgeführt.

Anzeige

Umfangreiche Funktionen des finalen Schadprogramms

Das letztlich ausgeführte, stark verschleierte Schadprogramm mit dem internen Namen clientCode funktioniert laut Socket als vollwertiger Node.js-Fernzugriffstrojaner. Es kann Dateien auf einen konfigurierten Server hochladen, weiteren JavaScript-Code nachladen, grundlegende Systeminformationen sammeln sowie Zwischenablage-Daten unter Windows über PowerShell, unter macOS über pbpaste und unter Linux über xclip oder xsel auslesen. Auf Systemen mit den Hostnamen github-runner, buildbot, buildkitsandbox und microsoft-standard-WSL2, die typischerweise für Entwicklungs- und Testumgebungen stehen, verzichtet die Schadsoftware bewusst auf eine Ausführung.

Zusätzlich wurde dem losgelösten Prozess ein Python-Infostealer zugeordnet, den Socket als Weiterentwicklung der bereits im April von eSentire beschriebenen Schadsoftware OmniStealer einstuft. Dieser kann unter anderem Zugangsdaten aus dem Windows Credential Manager sowie dem Linux Secret Service, Daten aus Chromium- und Firefox-Browsern, Inhalte von Wallet- und Passwort-Manager-Erweiterungen, Git-Zugangsdaten sowie Konfigurationen und Protokolle von GitHub CLI, GitHub Desktop und Visual Studio Code auslesen.

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.

Empfohlene Maßnahmen für Entwickler

Nach Angaben von Socket wurden beide bösartigen Paketversionen von derselben npm-Identität unter Verwendung von Node.js 18.20.0 und npm 10.5.0 veröffentlicht. Ob die Kompromittierung über einen Entwickler-Arbeitsplatz, ein Quellcode-Repository, eine CI-Umgebung oder gestohlene Zugangsdaten für die Veröffentlichung erfolgte, ist bislang nicht geklärt. Entwicklern, die eine der betroffenen Versionen installiert haben, wird empfohlen, diese aus Lockfiles, Caches, internen Spiegelservern, Build-Images und Deployment-Artefakten zu entfernen, auf eine geprüfte Version zu wechseln und alle Zugangsdaten der betroffenen Node.js-Prozesse zu erneuern.

(red)

Anzeige

Weitere Artikel

Newsletter
Newsletter Box

Mit Klick auf den Button "Jetzt Anmelden" stimme ich der Datenschutzerklärung zu.