+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Eine Rust-Kiste führte Malware zur Kompilierzeit aus. 86 Minuten.

Eine Rust-Kiste mit vier Makros und 260 Millionen Downloads fügt eine Abhängigkeit hinzu, und `cargo build` führt ein fremdes Binärprogramm auf Ihrem Rechner aus.

Eine Rust-Kiste mit vier Makros und 260 Millionen Downloads fügt eine Abhängigkeit hinzu, und `cargo build` führt ein fremdes Binärprogramm auf Ihrem Rechner aus. 20. August 2026: arrayref 0.3.10 landet auf crates.io und hängt von proc-macro1 ab – nicht proc-macro2, dem echten – dessen Build-Skript eine Nutzlast herunterlädt, sie in /tmp/rust-setup ablegt und abgetrennt startet, während Ihr Projekt kompiliert wird. Die sauberen Versionen werden entfernt (yanked), so dass Cargos eigene Warnung Sie zur vergifteten Version führt. 86 Minuten später wird sie gelöscht.

Die schriftliche Ausgabe lesen (Englisch) ↗

Was dieses Video behandelt

  • cargo build führt ein fremdes Binärprogramm aus
  • Die Belege: Rust Blog, SafeDep, Hacker News
  • Das ist The Daily Diff, Postmortem
  • Zeitstrahl: 02:11 Staging → 07:15 veröffentlicht → 08:41 gelöscht
  • Mechanismus: build.rs, keine Sandbox, der Yank-Lockvogel

Übersetztes Transkript

Aus der englischen Originalerzählung übersetzt. Verfügbare Audio- und Untertitel werden von YouTube gesteuert.

cargo build führt ein fremdes Binärprogramm aus

0:00 Eine Rust-Kiste mit vier Makros und einer Viertelmilliarde Downloads fügt eine Abhängigkeit hinzu, und cargo build führt ein fremdes Binärprogramm auf Ihrem Rechner aus. 20. August 2026. arrayref 0.3.10 landet auf crates.io und hängt von proc-macro1 ab. Nicht proc-macro2, das echte: eine Ziffer daneben, und sein Build-Skript führt eine Nutzlast aus, während Ihr Projekt kompiliert wird. Das Sicherheitsteam von Rust löscht sie 86 Minuten später.

Die Belege: Rust Blog, SafeDep, Hacker News

0:22 SafeDep veröffentlicht die Analyse. Hacker News: 554 Punkte. Wie es passiert, warum Cargo es zulässt und wer die Schuld trägt. Das ist The Daily Diff, Postmortem. Zwei Uhr morgens, UTC.

Das ist The Daily Diff, Postmortem

0:33 Ein Konto namens d-tolney, ein Buchstabe von David Tolnay, der die Hälfte von Rust betreut, veröffentlicht proc-macro1 1.0.106: das echte

Zeitstrahl: 02:11 Staging → 07:15 veröffentlicht → 08:41 gelöscht

0:41 proc-macro2, umbenannt. Staging. 07:11. Version 1.0.107 fügt ein Build-Skript hinzu, plus base64, TLS und einen HTTP-Client. Für einen Token-Parser. 07:15. Das Konto des Betreuers veröffentlicht arrayref als 0.3.10 neu und entfernt jede ältere Version (yanks every older version). Cargo druckt: Ziehen Sie in Betracht, auf eine Version zu aktualisieren, die nicht entfernt wurde. Die einzige verbleibende ist die vergiftete.

1:02 Die Warnung ist der Lockvogel. In derselben Minute meldet eine Sicherheitsfirma es Rust. 07:54, ein RustSec-Problem. 08:29, ein Problem im Repository; der Angreifer antwortet mit 0.3.11 und einer zweiten bösartigen Abhängigkeit. 08:41, gelöscht. Sechsundachtzig Minuten. Warum? Erstens: Cargo baut jede deklarierte Abhängigkeit, aufgerufen oder nicht. Eine Manifestzeile ist genug.

1:21 Zweitens: Ein Build-Skript läuft auf Ihrer Maschine, als Sie, mit Ihren SSH-Schlüsseln und Ihrem Cargo-Token,

Mechanismus: build.rs, keine Sandbox, der Yank-Lockvogel

1:26 bevor Ihr Code kompiliert wird. Keine Sandbox, absichtlich: So finden Kisten C-Bibliotheken. Drittens: Darin ist das echte proc-macro2, also gelingt der Build. Die Nutzlast: ein TLS-Client, der jedes Zertifikat vertraut, holt eine Binärdatei, legt sie in /tmp/rust-setup ab und startet sie abgetrennt. Unter Windows umgeht sie über wscript, um Cargos Job-Objekt zu entkommen; ein Quellkommentar sagt das aus. Die zweite Stufe, laut RustSec-Thread: ein Remote-Access-Tool, das auf

1:52 Browser und Krypto-Wallets abzielt. Poetisch, da zu den größten Nutzern von arrayref secp256k1 und Solana gehören. git blame. Cargos Modell, fünfundfünfzig Prozent: Abhängigkeiten führen Code auf Ihrem Rechner zur Kompilierzeit aus, keine Sandbox, und die Yank-Warnung führte die Leute zum

git blame — die Spaltung

2:07 Gift. Ein Konto, dreißig: eine Anmeldeinformation veröffentlicht eine Kiste neu, der eine Viertel milliarde Downloads vertrauen. Die Ziffer eins, fünfzehn: ein Tastendruck von Rusts vertrauenswürdigster Kiste, und niemand liest den Baum. Schadensradius: 2.285 Downloads in 86 Minuten. Weniger als zehn Prozent des Verkehrs, weil die meisten Lockfiles 0.3.9 enthielten. crates.io sagt, es gebe keine Beweise für die Nutzung.

Schadensradius: 2.285 Downloads

2:27 Zwei Personen im RustSec-Thread widersprechen; eine findet einen systemd-Dienst. Auf Hacker News handelt der Top-Thread nicht von der Malware. Es ist die Kisten-Seite, wo 0.3.10 jetzt nie existierte. Urteil, Postmortem: NEEDS REVIEW. Sechsundachtzig Minuten zum Löschen, ein Blog-Beitrag am selben Tag, das Konto gesperrt: dieser Teil ist SHIP IT. Aber die Kisten-Seite zeigt, dass nichts passiert ist, cargo audit schweigt zu einer zwischengespeicherten

Urteil + die Montagslinie

2:48 Kopie, und Build-Skripte laufen immer noch als Sie. Montag: Führen Sie den Suchbefehl des Rust-Blogs aus und behandeln Sie eine Yank-Warnung als eine Frage, nicht als Anweisung. Senden Sie mir den Vorfall, über den Sie immer noch nicht sprechen dürfen, in den Kommentaren oder unter the daily diff dot dev. Und das ist der Diff für heute. Ich bin Niko von Axrisi. Verantwortungsvoll zusammenführen.

Quellen

  1. Rust Blog, "Supply chain attack on arrayref" (security-response, Aug 20, 2026)blog.rust-lang.org
  2. RUSTSEC-2026-0260 (arrayref)github.com
  3. RustSec issue #3161 (the original report, IOCs, victims)github.com
  4. SafeDep technical analysissafedep.io
  5. GitHub issue on the repo (0.3.11 spotted)github.com
  6. crates.iocrates.io
  7. Hacker News (554 points)news.ycombinator.com
  8. BleepingComputerwww.bleepingcomputer.com

Ähnliche Videos