Bron
Het verhaal
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.