Angreifer missbrauchten ein mit dem bekannten Rust-Paket arrayref verbundenes Wartungskonto, um eine schädliche Version zu veröffentlichen, die während des Kompilierungsvorgangs von Projekten Schadsoftware auf Entwicklergeräten ausführt. Innerhalb eines Zeitfensters von höchstens 23 Minuten betraf der Vorgang auch die Pakete append-only-vec und internment – ein Angriff auf die Software-Lieferkette.
StepSecurity zufolge waren die betroffenen Versionen arrayref 0.3.10, append-only-vec 0.1.9 und internment 0.8.7. Alle drei Pakete wurden von demselben Konto verwaltet. arrayref ist weit verbreitet: In den vergangenen 90 Tagen wurde es mehr als 53 Millionen Mal heruntergeladen, insgesamt waren es mehr als 245 Millionen Downloads. Das Paket wird in Projekten und Tools für Kryptografie, Grafik und grafische Rust-Oberflächen sowie in Komponenten des Ethereum- und Solana-Ökosystems eingesetzt.
Wie wurde der Angriff durchgeführt?
Die Angreifer fügten eine Abhängigkeit auf ein Paket namens proc-macro1 hinzu, das den Namen des bekannten Pakets proc-macro2 imitiert. Der größte Teil des ursprünglichen Quellcodes der Pakete blieb unverändert, wodurch die Manipulation für Personen, die ausschließlich die Code-Differenzen prüfen, schwerer zu erkennen ist.
proc-macro1 enthielt eine Datei namens build.rs, die während des Kompilierens automatisch ausgeführt wird. Die Datei setzt die Komponenten der schädlichen Struktur aus Base64-kodierten Teilen zusammen und wählt anschließend eine für das Betriebssystem geeignete Payload aus, darunter Linux, Windows und macOS für die Architekturen x86-64 und ARM64. Unter Unix wird die Payload nach /tmp/rust-setup geschrieben und als separater Prozess ausgeführt. Unter Windows erstellt der Angriff dagegen eine Datei namens rust-setup.ps1 im TEMP-Verzeichnis und verwendet wscript.exe sowie einen VBS-Launcher, um den Prozess am Laufen zu halten.
Was kann die Malware stehlen?
Laut einer Analyse von Wiz sammelt die zweite Phase Informationen über den Host und Anmeldedaten. Die Malware extrahiert Zugangsdaten aus den SQLite-Datenbanken der Browser Google Chrome, Brave und Edge. Außerdem richtet sie Persistenzmechanismen über Registry Run unter Windows, LaunchAgent unter macOS und systemd unter Linux ein. Die Payload erhält eine Adresse als Argument; dabei handelt es sich vermutlich um die Adresse eines Command-and-Control-Servers.
Zeitleiste und Bedeutung für Entwickler
Die Kampagne begann am 20. August 2026 um 01:17 Uhr UTC mit der Erstellung eines GitHub-Kontos, das die Identität des bekannten Rust-Entwicklers David Tolnay imitierte, gefolgt von einem ähnlichen Konto auf crates.io. Um 01:55 wurde eine saubere Version von proc-macro1 veröffentlicht, um 07:11 folgte die schädliche Version 1.0.107. Vier Minuten später wurde arrayref 0.3.10 über das legitime Konto droundy veröffentlicht, das David Roundy zugeordnet ist. Gleichzeitig wurden die Versionen 0.3.5 bis 0.3.9 entfernt, wodurch Installationswerkzeuge möglicherweise die schädliche Version auswählen.
Der Vorfall wurde um 07:54 gemeldet. crates.io löschte proc-macro1 um 08:03 und entfernte arrayref 0.3.10 um 08:41 aus dem Index. Außerdem wurden schädliche Versionen weiterer Pakete entfernt: aovine, arone, aronenao und tinymember.
Maßnahmen zur Reaktion
Wer die betroffenen Versionen während des Angriffszeitraums installiert hat, der etwa eineinhalb Stunden dauerte, sollte die Umgebung als kompromittiert betrachten. Zur Überprüfung gehören die Suche nach verdächtigen Versionen in Cargo.lock-Dateien, die Kontrolle auf abgelegte Dateien sowie die Untersuchung von Verbindungen zur Adresse 23.254.165[.]112 über die Ports 9089 und 443. Wird eine Kompromittierung bestätigt, empfehlen die Analysen, sämtliche Zugangsdaten, CI-Tokens, Signaturschlüssel und sonstigen Geheimnisse zu rotieren und die Umgebung anschließend aus vertrauenswürdigen Sicherungskopien neu aufzubauen. Nicht betroffene Projekte sollten bis zur Klärung des Status der Wartungskonten eine nachweislich sichere Version festschreiben.