Blog Supply Chain

Provenance gültig. Paket trotzdem vergiftet.

Am 9. November 2026 landete Schadcode in @ethersphere/bee-js 13.3.0. Der Vorfall zeigt, warum eine gültige Herkunftsbestätigung keine Sicherheitsfreigabe ersetzt.

Lesemodus

Der offizielle Weg hat den Angriff ausgeliefert

Socket bestätigt eine echte SLSA-Provenance: Das Paket kam aus dem legitimen Veröffentlichungsworkflow. Trotzdem enthielt es einen Loader. Der veröffentlichte Commit hatte keinen Pull Request durchlaufen; der normale Release-PR war noch offen. Laut Socket waren zwei GitHub-Zugänge kompromittiert, darunter die Release-Identität bee-worker. Woher der Zugriff stammte, bleibt ungeklärt.

Auch Swarm Desktop 0.56.2 wurde manipuliert. Socket fand den Loader in der Desktop-Anwendung; das macOS-Artefakt war signiert und notarisiert. Die Verteilung erreichte auch den Auto-Updater. Der Bericht nennt 0.56.3 als bereinigte Ersatzversion.

Was bei der Installation passieren konnte

StepSecurity analysierte den geänderten postinstall-Hook: Er lud fremdes JavaScript nach und führte es mit den Rechten des installierenden Nutzers aus. Eine spätere Stufe suchte nach config.yaml und data-dir/keys/swarm.key im Swarm-Desktop-Datenverzeichnis. Enthielt die Konfiguration das Keystore-Passwort, konnte der Diebstahl beider Dateien den Wallet-Zugriff ermöglichen. Ob tatsächlich Guthaben gestohlen wurde, belegt die Analyse nicht.

Die Ausführung hängt bei der npm-Bibliothek auch von den erlaubten Installationsskripten ab. Bei der Untersuchung deshalb die konkrete Paketmanager-Konfiguration und die Installationsprotokolle prüfen, statt allein aus der Versionsnummer auf den Ablauf zu schließen. Swarm Desktop besitzt einen eigenen Ausführungspfad beim Start der Anwendung.

Was jetzt geprüft werden muss

Das GitHub-Advisory führt genau bee-js 13.3.0 als Schadsoftware und nennt keine gepatchte Version. Es empfiehlt, betroffene Rechner als vollständig kompromittiert zu behandeln und erreichbare Geheimnisse sowie Schlüssel von einem anderen Rechner aus zu rotieren. Das Entfernen des Pakets garantiert keine Bereinigung.

Lockfiles, CI-Protokolle, Caches und interne Registries gehören deshalb zusammen betrachtet. StepSecurity hat den schädlichen Installationspfad in der untersuchten Version 13.2.0 nicht gefunden. Ein Versionswechsel stoppt jedoch keine bereits eingerichtete Persistenz. Bei Swarm Desktop zusätzlich prüfen, ob 0.56.2 jemals gestartet wurde, und Wallet-Schlüssel samt betroffenen Guthaben von einem sauberen Gerät aus ersetzen beziehungsweise übertragen.

Die Freigabe muss vor dem Publish greifen

Für Maintainer lautet die entscheidende Frage: Welche überprüfbare Bedingung erlaubt den nächsten Release? Herkunft, Review und Ausführungsrechte sind unterschiedliche Kontrollen. Eine Pipeline kann die Herkunft korrekt bestätigen und trotzdem ungeprüften Code veröffentlichen.

Die Freigabe sollte deshalb an den tatsächlich veröffentlichten Commit gebunden sein. Ein geschützter Branch hilft nur, wenn der Release-Pfad ihn verbindlich voraussetzt. Releases, Tags und Bot-Zugänge gehören in dieselbe Prüfung wie der Merge-Prozess. Auch ein fehlgeschlagener Installationslauf ist kein verlässlicher Entwarnungsgrund.

Zum Ausgangspost

X · Diskussion zum Beitrag

Quellen & weiterführende Links

GitHub Advisory: Malware in @ethersphere/bee-jsSocket: Technische Untersuchung des bee-js- und Swarm-Desktop-AngriffsStepSecurity: @ethersphere/bee-js 13.3.0 Compromised

/Verstehen. Testen. Anwenden.

Web-Zugriffe absichern
01 / VERSTEHEN

Du liest gerade die Einordnung.

Beiträge zum Thema
02 / SELBST TESTEN

Angemeldet heißt nicht berechtigt.

4 Min. Training
03 / IM ALLTAG PRÜFEN

Web und API: Angemeldet heißt nicht berechtigt

Checkliste mit Gegenprobe
← Zurück zum Blog

Im Blog suchen

31 Beiträge

Provenance gültig. Paket trotzdem vergiftet.3 Min. LesezeitWer fragt da? Identität vor die App.3 Min. LesezeitAuto offen. Der Login war der Schlüssel.3 Min. LesezeitCVSS 10.0. Nichts zu patchen.3 Min. LesezeitRoot im Gast. Griff in Firecracker.3 Min. LesezeitBarracuda ESG: Zwei Lücken, ein Root-Weg3 Min. LesezeitNicht mehr fragen? Dann bitte ohne Secret.3 Min. LesezeitApp-Login. Kein User.3 Min. LesezeitGepatcht. Nicht geputzt.4 Min. LesezeitMFA an. Trotzdem drin.4 Min. LesezeitGeprüft. Dann getauscht.4 Min. Lesezeit14 Rabbit Holes für Entra, M365 und SOC.3 Min. LesezeitARTEX: Der Zeitvorteil liegt zwischen den Schritten.3 Min. LesezeitDas Inventar muss vor der CVE fertig sein.3 Min. LesezeitDas Update selbst ist die Lücke.2 Min. LesezeitDer Anruf kam von der IT. Angeblich.2 Min. LesezeitDer erste Patch war nicht die ganze Kette.2 Min. LesezeitDer interessante Teil liegt zwischen den Alerts.2 Min. LesezeitDer Kernel ist installiert. Läuft er auch?3 Min. LesezeitDer Passkey sitzt. Die Hintertür auch?2 Min. LesezeitDie Gruppe ist noch da. Die Logik steht.2 Min. LesezeitDie KI ist echt. Die Einladung nicht.2 Min. LesezeitEchte Loginseite. Falscher Auftrag.2 Min. LesezeitEchter Login. Falscher Auftrag.3 Min. LesezeitEine KEV-Frist ist noch kein Wiederherstellungsplan.3 Min. LesezeitFernhilfe erlaubt. Domänenzugriff gewonnen.2 Min. LesezeitGeklickt. Bestanden. Nichts gelernt?2 Min. LesezeitKühlung ist kein Neben-Netz.2 Min. LesezeitNode2Shell: Das Image-Tag ist kein Inventar.3 Min. LesezeitStandard ist noch keine Zugriffsregel.2 Min. LesezeitToken-Flows aus PDFs lernen? Viel Glück.3 Min. Lesezeit

Esc schließt die Suche.