Supply-Chain-Angriff auf Ethersphere: Swarm-Wallet-Schlüssel durch CI-Kompromittierung gestohlen
Angreifer nutzten gestohlene CI-Zugangsdaten, um bösartige Versionen von bee-js und Swarm Desktop zu veröffentlichen, Backdoors zu installieren und Node-Wallet-Schlüssel zu stehlen.
Automatisch aus dem englischen Original übersetzt.
Am 9. November 2026 kompromittierten Angreifer die Release-Automatisierung des Ethersphere-Projekts, um Malware über zwei seiner Kernwerkzeuge zu verbreiten. Der Vorfall richtete sich gegen das dezentrale Speicher-Netzwerk Swarm, indem bösartiger Code in bee-js Version 13.3.0 und Swarm Desktop Version 0.56.2 eingeschleust wurde. Diese kompromittierten Releases waren darauf ausgelegt, private Wallet-Schlüssel zu stehlen und persistente Backdoors auf Windows-, macOS- und Linux-Systemen zu installieren, bevor sie Stunden später zurückgezogen wurden.
Was passiert ist
Der Angriff nutzte die Continuous Integration (CI)-Infrastruktur des Projekts selbst, insbesondere ein Konto namens bee-worker, das für automatisierte Releases verwendet wird. Die Angreifer veröffentlichten ein GitHub-Release für bee-js 13.3.0, was den npm-Veröffentlichungsworkflow des Projekts auslöste, ohne dass eine manuelle Genehmigung erforderlich war. Dieser Prozess generierte gültige Provenienz-Datensätze, wodurch das Paket legitim wirkte, obwohl es bösartigen Code enthielt. Das Paket blieb etwa 75 Minuten lang auf npm verfügbar, von 00:09 bis 01:25 UTC, und wurde in dieser Zeit ungefähr 10-mal heruntergeladen, hauptsächlich von Sicherheitsscannern und Spiegeln.
Gleichzeitig initiierten die Angreifer manuell einen Build-Workflow für Swarm Desktop 0.56.2, der Zugriff auf Apple- und Windows-Signaturzertifikate hatte. Dies ermöglichte es ihnen, eine notariell beglaubigte macOS-Anwendung und einen signierten Windows-Installer zu erstellen, die die standardmäßigen Sicherheitswarnungen umgingen. Die bösartige Desktop-App wurde innerhalb von zehn Minuten nach der Veröffentlichung über den integrierten Updater an Windows-x64- und Apple-Silicon-Mac-Nutzer verteilt. Bis 08:27 UTC war die kompromittierte Version 65-mal heruntergeladen worden. Die Maintainer zogen das Release nach etwa 8,5 Stunden zurück und gaben eine saubere Version, 0.56.3, heraus, die mit der vorherigen sicheren Version 0.56.1 identisch ist, aber mit einem neuen Zertifikat signiert wurde.
Funktionsweise
Beide bösartigen Releases enthielten einen leichtgewichtigen Loader, der zusätzliche Payloads von einem Remote-Server unter api.frameworkmetrics[.]xyz herunterlud und ausführte. In bee-js lief dieser Loader als postinstall-Skript und führte automatisch während der Installation aus, auch wenn die Bibliothek vom Nutzer nicht importiert wurde. In Swarm Desktop führte der Loader bei jedem Start der Anwendung aus. Der heruntergeladene Code suchte nach spezifischen Dateien im Datenverzeichnis von Swarm Desktop: config.yaml und data-dir/keys/swarm.key. Während die Schlüsseldatei ein verschlüsselter Ethereum-Keystore ist, speicherte die Anwendung das Entschlüsselungspasswort im Klartext in config.yaml, was es den Angreifern ermöglichte, vollständig auf das Wallet des Nodes zuzugreifen.
Neben dem Diebstahl von Zugangsdaten installierte der Payload betriebssystemspezifische persistente Backdoors. Auf Linux und macOS stellte er eine Go-basierte Remote-Shell namens evjawbreaker bereit, die in einem ~/.solidity-Ordner versteckt war und so konfiguriert wurde, dass sie als Hintergrunddienst oder LaunchAgent läuft. Auf Windows installierte er einen legitimen ScreenConnect-Fernzugriffsclient und nutzte einen bekannten User Account Control-Bypass, um gegebenenfalls Administratorrechte zu erlangen. Die Angreifer steuerten diese Backdoors über Adressen, die in einem Ethereum-Smart Contract gespeichert waren, sodass sie Command-and-Control-Server dynamisch aktualisieren konnten.
Wichtige Details
- Kompromittierte Versionen: bee-js 13.3.0 und Swarm Desktop 0.56.2 waren die einzigen betroffenen Releases.
- Angriffsvektor: Gestohlene CI-Zugangsdaten für das bee-worker-Konto ermöglichten unbefugtes Veröffentlichen und Signieren.
- Datendiebstahl: Die Malware stahl swarm.key und das Klartext-Passwort aus config.yaml, wodurch Node-Guthaben gefährdet wurden.
- Backdoor-Persistenz: Die Malware installierte Dienste wie solidity-langsupport-runner.service auf Linux und ScreenConnect auf Windows.
- Status der Behebung: Version 0.56.3 ersetzt die bösartige Desktop-App, aber Linux-Nutzer müssen Pakete manuell ersetzen.
- Annahme der Kompromittierung: Jeder Rechner, auf dem bee-js 13.3.0 oder Swarm Desktop 0.56.2 ausgeführt wurde, gilt als vollständig kompromittiert.
Warum dies wichtig ist
Dieser Vorfall verdeutlicht das kritische Risiko, das von kompromittierten CI/CD-Pipelines in Open-Source-Projekten ausgeht. Da die Angreifer die eigenen Automatisierungswerkzeuge des Projekts nutzten, trugen die resultierenden Pakete gültige Provenienzen und digitale Signaturen und umgingen damit effektiv Vertrauensmechanismen, auf die Entwickler sich verlassen. Dies zeigt, dass Supply-Chain-Sicherheit nicht nur die Überprüfung der Code-Integrität umfasst, sondern auch die Sicherung der Infrastruktur, die diesen Code baut und veröffentlicht. Für Teams, die automatisierte Workflows nutzen, kann das Fehlen verpflichtender manueller Genehmigungsschritte für die Veröffentlichung einen Credential-Leak in einen großangelegten Supply-Chain-Angriff verwandeln.
Für Entwickler, die auf Swarm bauen oder ähnliche dezentrale Speicherwerkzeuge verwenden, geht die Auswirkung über einfache Software-Updates hinaus. Der Diebstahl von Node-Schlüsseln und Passwörtern bedeutet, dass finanzielle Vermögenswerte, die in diesen Wallets gespeichert sind, sofort gefährdet sind. Darüber hinaus bedeutet die Installation persistenter Backdoors, dass ein einfaches Update oder eine Neuinstallation der Software die Bedrohung nicht beseitigt. Ingenieure müssen betroffene Maschinen als kompromittiert betrachten, was eine umfassende Rotation von Secrets und möglicherweise den Neuaufbau von Systemen aus vertrauenswürdigen Images erfordert, um eine vollständige Behebung sicherzustellen.
Was Sie tun können
- Prüfen Sie Ihre Lockfiles und CI-Logs auf Referenzen zu @ethersphere/bee-js@13.3.0 und fixieren Sie Ihre Abhängigkeiten auf Version 13.2.0.
- Untersuchen Sie die Datei bee-desktop.log auf die Zeile "Bee Desktop version: 0.56.2 (production)", um festzustellen, ob Sie die bösartige App ausgeführt haben.
- Wenn Sie Swarm Desktop 0.56.2 ausgeführt haben, verschieben Sie sofort alle Node-Guthaben, Chequebook-Balances und Stakes auf einen neuen Schlüssel von einem sauberen Gerät.
- Entfernen Sie persistente Backdoors, indem Sie den Ordner ~/.solidity auf Linux/macOS und den ScreenConnect Client-Dienst auf Windows löschen.
- Rotieren Sie alle Passwörter, Tokens und API-Keys, die für jeden Benutzer oder CI-Job zugänglich waren, der das kompromittierte bee-js-Paket installiert hat.
- Bauen Sie jeden Rechner, auf dem der bösartige Code ausgeführt wurde, aus einem vertrauenswürdigen Base-Image neu auf, anstatt zu versuchen, ihn vor Ort zu bereinigen.



