6 Punkte von darjeeling 6 일 전 | 4 Kommentare | Auf WhatsApp teilen

Das Sicherheitsteam von JFrog hat entdeckt, dass die npm-Version @bitwarden/cli 2026.4.0 gekapert wurde. Dabei wurden die legitimen Bitwarden-Metadaten und das Branding unverändert beibehalten, während nur das preinstall-Skript und der bw-Binär-Einstiegspunkt durch einen bösartigen Loader (bw_setup.js) ersetzt wurden.

Funktionsweise

Bei der Installation lädt der Loader zunächst die Bun-Runtime von GitHub herunter und führt anschließend eine verschleierte JavaScript-Payload (bw1.js) aus. Die Nutzung von Bun statt Node.js ist selbst eine Strategie zur Umgehung der Erkennung.

Die Payload sammelt über drei verschiedene Sammler in großem Umfang Zugangsdaten aus Entwickler-Workstations und CI-Umgebungen.

  • Dateisystem-Sammler: SSH-Schlüssel (~/.ssh/), Git-Anmeldedaten (.git-credentials), npm-Tokens (~/.npmrc), .env, AWS-Zugangsdaten (~/.aws/credentials), GCP-Credentials (~/.config/gcloud/credentials.db) usw.
  • Shell-/Umgebungs-Sammler: Ausführung des Befehls gh auth token, Scannen von process.env zur Mustererkennung für GitHub- und npm-Tokens
  • GitHub-Actions-Sammler: Injektion von Workflows in Repositories mit Token-Berechtigungen, um auch Actions-Secrets zu extrahieren

Besonders bemerkenswert ist, dass sogar Konfigurationsdateien von AI-Tools und MCP wie ~/.claude.json, ~/.claude/mcp.json, ~/.kiro/settings/mcp.json usw. zu den Sammelzielen gehören.

Doppelter Exfiltrationspfad

Die gestohlenen Daten werden nach gzip-Komprimierung über eine hybride Verschlüsselung mit AES-256-GCM + RSA-OAEP übertragen.

  • Primärer Pfad: HTTPS-POST an audit.checkmarx.cx/v1/telemetry (getarnt als legitimer Sicherheitsdienst)
  • Sekundärer Pfad (Missbrauch von GitHub): Falls der primäre Pfad fehlschlägt, wird aus GitHub-Commit-Messages ein doppelt Base64-kodiertes PAT anhand des Markers LongLiveTheResistanceAgainstMachines gesucht und extrahiert. Über den Marker beautifulcastle und die Prüfung einer RSA-Signatur wird außerdem dynamisch eine alternative Exfiltrations-Domain wiederhergestellt. Schließlich wird im GitHub-Konto des Opfers ein neues Repository erstellt und das verschlüsselte JSON in das Verzeichnis results/ hochgeladen.

Erkennung einer Infektion

Die eingebetteten legitimen Bitwarden-CLI-Metadaten tragen die Version 2026.3.0, während das Paket-Root auf 2026.4.0 gesetzt ist. Das wird als Hinweis gewertet, dass die bösartige Schicht außerhalb der normalen Build-Pipeline aufgebracht wurde.

Gegenmaßnahmen

Wenn diese Version installiert wurde, muss davon ausgegangen werden, dass sämtliche Zugangsdaten auf dem betreffenden Host abgeflossen sind.

  • npm uninstall -g @bitwarden/cli und Cache bereinigen
  • GitHub-PATs, npm-Tokens und AWS-Access-Keys vollständig rotieren
  • Audit-Logs von Azure Key Vault / GCP Secret Manager prüfen
  • In GitHub-Actions-Workflows nach nicht autorisierten Ausführungen suchen
  • audit.checkmarx.cx und 94.154.172.43 im Netzwerk blockieren
  • Prüfen, ob sensible Informationen in Konfigurationsdateien von AI-Tools (Claude, Kiro usw.) offengelegt wurden

Es handelt sich um einen ausgefeilten Angriff, der über einen gewöhnlichen npm-Credential-Stealer hinausgeht und Supply-Chain-Kompromittierung, mehrstufigen Diebstahl von Secrets und die Bewaffnung der GitHub-Infrastruktur kombiniert.

4 Kommentare

 
savvykang 6 일 전

> THE MOST TRUSTED PASSWORD MANAGER
> Schützen Sie sich vor Hackern und Datenpannen

Der Slogan auf der Unternehmenswebsite wirkte auf mich bedeutungslos, daher habe ich mein Konto gelöscht.

 
t7vonn 6 일 전

Gruselig ;; Ich habe das täglich benutzt, und glücklicherweise war die Homebrew-Seite wohl nicht betroffen.
Puh … Ich sollte wohl erst mal alle globalen npm-Bibliotheken entfernen oder pre/postinstall deaktivieren.

 
lamanus 5 일 전

Homebrew hat postinstall inzwischen standardmäßig deaktiviert und lässt es nur noch ausnahmsweise zu. Wenn man es so sagen will, hatte ich Glück: Da ich Updates nicht über npm, sondern anhand von Repo-Tags verfolge, habe ich diese Version übersprungen. In letzter Zeit gibt es außerdem wohl auch eine npm-Cooldown-Phase, daher wäre es vermutlich selbst dann nicht verteilt worden, wenn ich auf npm geschaut hätte.

 
sanghunka 6 일 전

Wow, das ist schon ziemlich schockierend.