← Overzicht

Rust-crate arrayref 0.3.10 droeg build-time malware

· opgehaald 20:10

Op 20 augustus verscheen arrayref 0.3.10 op crates.io via het gecompromitteerde account droundy, met een extra dependency op de typosquat proc-macro1 (niet proc-macro2). De build script van proc-macro1 downloadt bij compile een remote binary en start die los van Cargo; alleen bouwen is genoeg. crates.io heeft de slechte versies verwijderd; oudere 0.3.5–0.3.9 waren eerst ge-yanked zodat Cargo naar 0.3.10 duwde.

arrayref is een klein macro-crate zonder runtime-deps tot 0.3.9. Versie 0.3.10 houdt dezelfde macros maar zet in Cargo.toml een dependency op proc-macro1 1.0.107. Cargo bouwt elke gedeclareerde dependency, ook als de code die nooit aanroept. De GitHub-repos van droundy (arrayref, append-only-vec) geven 404; append-only-vec 0.1.9 is door reporters ook gemarkeerd.

proc-macro1 is een typosquat van David Tolnays echte proc-macro2. De publisher heet dtolney, de metadata vervalst authors David Tolnay en een 404-repo. De src/ is een hernoemde kopie van echte proc-macro2, zodat de build blijft slagen terwijl build.rs het werk doet: base64-fragmenten worden tot een payload-URL geplakt, TLS accepteert elk certificaat, en er draait een binary voor linux/macos/windows x86_64 of macos arm.

Op Unix belandt die in /tmp/rust-setup en start detached; op Windows via verborgen PowerShell/VBScript zodat Cargo niet wacht. arrayref heeft ongeveer 245 miljoen downloads en zit transatief onder tiny-skia, winit, egui, eframe en iced. Alleen 0.3.10 is kwaadaardig; 0.3.9 en eerder zijn schoon. crates.io heeft 0.3.10 en proc-macro1 verwijderd.

Wie 0.3.10 heeft gebouwd: pin arrayref op 0.3.9 of lager, cargo update, en kijk of /tmp/rust-setup of %TEMP%\rust-setup.ps1 bestaat. Compilatie alleen was al genoeg om de payload te starten.