Osegi
Sicherheit·2 Min. Lesezeit

bee-js 13.3.0 auf npm: Schadcode stahl Krypto-Wallet-Schlüssel

Die Swarm-Bibliothek @ethersphere/bee-js 13.3.0 kam über die eigene Release-Pipeline des Projekts und versuchte schon bei der Installation, Wallet-Schlüssel zu stehlen.

Laptop screen showing JavaScript code with a red warning icon and a crypto wallet key being pulled away.
Bild: Хабр

Wer @ethersphere/bee-js 13.3.0 über npm installiert hat, könnte den Schaden schon vor dem ersten Start der App abbekommen haben. Die Sicherheitsfirma CodeScoring stuft diese Version der JavaScript-Bibliothek für das verteilte Speichernetzwerk Swarm seit dem 9. November als schädlich ein. Sie versuchte, Schlüssel von Krypto-Wallets zu stehlen.

Besonders unangenehm ist der Weg, auf dem sie verbreitet wurde. Die Version lief durch den normalen Veröffentlichungsprozess des Projekts. Unter dem Release-Konto bee-worker wurde direkt in das offizielle Repository committet, danach entstand ein Release, das den bestehenden GitHub-Actions-Workflow auslöste. Laut Socket verwiesen die Build-Angaben auf npm auf das offizielle Repository und den regulären Release-Prozess. Der Schadcode steckte da längst im Quelltext.

Die Angreifer sorgten dafür, dass beim Installieren automatisch ein Skript läuft. In den Code-Kommentaren wurde der Aufruf ihres Servers als Versand von Analysedaten beschrieben. Tatsächlich lud das Skript von dort JavaScript herunter und führte es sofort aus, mit den Rechten des Nutzers, der das Paket installierte.

Was machte die Schadsoftware in bee-js?

Die Nutzlast suchte in den Daten von Swarm Desktop nach einem verschlüsselten Wallet-Schlüssel und einer Konfigurationsdatei. Stand in der Konfiguration das Passwort für den Schlüssel, reichten die beiden Dateien, um die Wallet zu übernehmen. Außerdem versuchte der Code, sich im System festzusetzen, damit er die Installation überdauert.

Unter Linux und macOS folgte eine Hintertür für die Ausführung von Befehlen aus der Ferne. Die Adresse des Kommandoservers las sie aus einem Ethereum-Smart-Contract. Der Betreiber konnte sie deshalb mit einer einzigen Transaktion ändern, ohne einen neuen Build zu veröffentlichen.

Wie prüfe ich, ob ich betroffen bin?

Die Version konnte auch indirekt ins Projekt gelangen. Die Versionsbereiche mehrerer Swarm-Tools erlaubten 13.3.0, eine Suche nach der direkten Abhängigkeit im Manifest genügt also nicht. Entscheidend ist die tatsächlich aufgelöste Version in der Lock-Datei.

Teams sollten Lock-Dateien, Paket-Caches und Installationsprotokolle in der CI nach 13.3.0 durchsuchen. Wurde die Version mit erlaubten Skripten installiert oder lief Swarm Desktop 0.56.2, muss der Rechner oder CI-Runner untersucht werden. Beim CI-Runner betrifft das auch Tokens zum Veröffentlichen von Paketen und den Zugriff auf Quellcode.

Apps, die sich lohnen

SUMO: das Zahlenrätsel

Tippe die richtigen Felder, addiere, triff das Ziel. Leicht zu lernen, schwer zu meistern. Kostenlos, für jedes Alter.

Schlagwörter:npmswarmbee-jssupply chain attackcrypto walletgithub actions

Mehr von diesem Tag

Alle anzeigen →

Mehr aus: Sicherheit

Alle anzeigen →