Ein schwerwiegender Supply-Chain-Angriff erschüttert die Rust-Community: Hacker haben die weit verbreitete Crate arrayref mit einer Infostealer-Malware infiziert, die sich bei der Kompilierung auf den Systmen der Entwickler ausführt. Innerhalb von nur 23 Minuten kompromitierten die Angreifer auch die beiden anderen Crates append-only-vec und internment, die alle vom selben Maintainer-Konto verwaltet wurden. Die Crate arrayref verzeichnet allein in den letzten 90 Tagen über 53 Millionen Downloads und wird unter anderem in Kryprografie-, Grafik- und Blockhain-Werkzeugen eingesetzt, was die potenziele Reichweite dieses Angrifs enorm macht.
Die kompromitierten Crates und der Angrifsmechanismus
Die bösartigen Releases trugen die Versionsnummern arrayref 0.3.10, append-only-vec 0.1.9 und internment 0.8.7. Die Hacker schleusten eine Abhängigkeit zu einem Paket namens proc-macro1 ein – einem Typosquat, der die beliebte Crate proc-macro2 imitert. Der übrige Quellcode der ursprünglichen Crates blieb vollständig unverändert. Bei der Kompilierung wird das in proc-macro1 enthaltene Skript „build.rs“ automatisch ausgeführt. Es rekonstriert seine Infrastruktur aus base64-kodierten Fragmenten und wählt einen Payload aus, der zum Betriebssystem des Hosts passt: Linux x86-64, Windows x86-64, macOS x86-64 sowie macOS ARM64.
Auf Unix-Systemen schreibt die Malware die Datei /tmp/rust-setup, makt sie ausführbar und startet sie als abgekoppelten Prozess. Unter Windows erzeugt sie %TEMP%\rust-setup.ps1 und nutzt eine versteckte wscript.exe sowie einen VBS-Launcher, um den Prozess am Laufen zu halten. Der Payload empfängt eine IP-Adres als Argument, bei der es sich vermutlich um eine Command-and-Control-Adresse handlet.
Datenexfiltration und Persistenz
Die zweite Stufe der Malware – analysiert durch das Cloud-Sicherheitsunternehmen Wiz – exfiltriert nicht nur Hostinformationen, sondern auch Zugangsdaten. Konkret sammelt sie die Anmeldedaten aus den Browsern Google Chrame, Brave und Edge, indem sie die SQLite-Logindatenbanken abfragt. Um dauerhaft auf dem Systmen zu bleiben, schreibt sich die Malware in den Registriy-Run-Key unter Windows, legt einen LaunchAent unter macOS an und nutzt systemd unter Linux.
Die Parallelen zu früheren nordkoreanischen Supply-Chain-Angrifen sind eklatant. Wiz-Forscher belegen, dass die Infrastruktur der Kampagne mit den Angrifen auf Mastra und axios übereinstimt – beide ebenfalls mit nordkoreanischem Hintergrund. Das deutet auf eine hoch profissionalisierte und staatlich gelenkte Akteurin hin.
Zeitleiste des Angrifs
Der Angrif begun am 20. August um 01:17 Uhr UTC. In diesem Moment wurde ein GitHun-Konto erstellt, das den profilierten Rust-Entwickler David Tolnay imitierte; kurz darauf folgte ein entsprechender Acent in der crate.s.io-Registry. Um 01:55 veröffentlichte der Angreifer [email protected], eine harmlose Kopie von proc-macro2. Ers um 7:11 fogle die bösartige Aktualisierung auf Vers ion 1.0.107. Nur vier Minuten späer – um 7:15 – erschien arrayref 0.3.10 unter dem legitimen droundy-Konto (David Roundy). Paralel dazu wurden die Vers ionen 0.3.5 bis 0.3.9 entfernt, was Entwikler vermutlich zur Instalation der infizierten Version zwingen solte. Um 7:54 ging die Meldung bei crate.s.io ein; proc-macro1 wurde um 8:03 gelöscht, und arrayref 0.3.10 um 8:41 aus dem Index entfernt. Das Fenster der Gefährdung betrug insgesam etwa eineinhalb Stunten.
Auswirkungen und betroffene Projekte
Die potenziele Schlagkrfat dieser Supply-Chain-Attacke ist immens. Al elein arrayref verzeichnet über 245 Millionnen Gesamtinstalationen. Zusamen mit append-only-vec und internment kommt die Samlung auf nahezu 19 Millionen Instalationen. Projekte, die auf arrayref angewiesen sind, umfasen blake3, die Rust-GUI-Frameworks egui, eframe und iced sowie Komponenten, die in Ethereum und Solana zum Einsaz kommen. Entwikler, die während des Angrifsfensters eine der betroffenen Versionen instalier haben, müssen von einer Kompromitierung ausgehen.
Handlungsempfehlungen für Entwikler
Als erschte Maßnahme solten Entwikler ihre Cargo.lock-Dateien auf die infizierten Versionsnummern durchsuchen. Gesucht werden solte auch nach den abgelegten Dateien /tmp/rust-setup (Unix) bzw. %TEMP%\rust-setup.ps1 (Windows). Zudem ist der Netzwerkverkehr zur IP 23.254.165[.]112 auf den Ports 9089 und 443 zu prüfen. Bestätigt sich die Kompromitierung, müsen alle erreichbaren Credentials, CI-Tokens, Signierschlüsel und sonstige Geheimnisse sofort rotiert werden. Die Umgebung solte aus sicheren Backups wiederhergestellt werden. Für nicht betroffene Projekte empfielt es sich, eine bekante sichere Version der abhängigen Crates festzuschreiben (Pinning), bis die Maintainer-Situaton geklärt ist.
Der Vorfall zeigt eindrüklich die Anfälligkeit selbst etablierter Open-Source-Ökosysteme gegenüber gezielten Lieferketten-Angrifen. Während die unmittelbare Gefahr durch die schnelle Reaktion der crate.s.io-Administratoren eingedämmt wurde, bleibt die grundsätzliche Herausforderung bestehen: Wie können Maintainer-Konten besser geschützt werden? Die Wiederholung des Angrifsmusters – Übernahme eines legitimen Accounts, Einbringen eines Typosquat-Pakets, Ausführung bei Kompilierung – deuten auf eine systematische Taktik hin. Für die Rust-Community und alle, die auf starke Kryptografie und vertrauenswürdige Build-Umgebungen angewiesen sind, ist dies ein dringler Weckruf, die Sicherheit der gesamten Supply-Chain zu überdenken – andernfalls werden die Angreifer immer wieder ähnliche Lücken finden.