Ondsinnet arrayref-versjon kjørte kode ved cargo build i 86 minutter
Sjekk `~/.cargo/registry/cache` for arrayref 0.3.10, internment 0.8.7 og append-only-vec 0.1.9, og pinn arrayref til 0.3.9 eller eldre.
245 385 500 nedlastinger totalt, 53,9 millioner de siste 90 dagene og 403 crates som avhenger av den. Det er tallene for arrayref, Rust-biblioteket som 20. august fikk publisert en ondsinnet versjon fra sin egen eierkonto. Rust Security Response Team slettet 0.3.10 etter 86 minutter, ifølge The Hacker News og RustSec-varselet RUSTSEC-2026-0260. To andre crates fra samme konto gikk samme vei: internment 0.8.7 lå ute i 90 minutter, append-only-vec 0.1.9 i 107.
Selve koden i crate-ene var uendret. Hver av de tre utgivelsene hadde én ekstra linje i manifestet, en avhengighet på proc-macro1, som er en typosquat av den allestedsnærværende proc-macro2. Kildekoden i proc-macro1 er en ekte kopi av proc-macro2, så byggene gikk gjennom uten støy. Skadevaren lå i byggeskriptet, og da holder det at cargo build, cargo check eller cargo test løser opp avhengigheten. Du trengte aldri å kalle en funksjon fra biblioteket.
Byggeskriptet satte sammen adressene til nyttelast-verten og C2-serveren fra base64-fragmenter ved byggetid, og installerte en egen sertifikatverifiserer der alle tre verifiseringsmetodene returnerer suksess uansett. TLS-validering var dermed slått av. På Unix og macOS skrev det bytene til /tmp/rust-setup og startet prosessen løsrevet, på Windows gikk det via et PowerShell-skript i %TEMP% startet skjult gjennom en VBScript-launcher. Wiz beskriver at stadium to persisterer via en Registry Run-nøkkel på Windows, en LaunchAgent på macOS og en systemd-brukertjeneste på Linux, og at den stjeler nettleserlegitimasjon fra Chrome, Brave og Edge ved å spørre SQLite-databasene.
«Vi tror ikke forfatteren av arrayref opptrer ondsinnet, men maskinen eller legitimasjonen deres er trolig kompromittert, og vi forsøker å få kontakt» — Rust Security Response Team
Leveransen er den delen som er verdt å lære av. Eierkontoen yanket arrayref 0.3.5 til 0.3.9 i samme minutt som den ondsinnede utgivelsen, slik at 0.3.10 sto igjen som den eneste versjonen Cargo ikke ville advare mot.
«0.3.5 til 0.3.9 er alle yanket under eierkontoen, så Cargos advarsel om å oppdatere til en versjon som ikke er yanket, er lokkemiddelet. Det var slik jeg gikk på den» — jhobern, GitHub-brukeren som meldte fra
Hele avhengighetskjeden bruker caret-ranger på 0.3.x, og en caret-range på 0.3.x godtar 0.3.10. The Hacker News verifiserte kjeden fra winit via sctk-adwaita og tiny-skia til arrayref mot crates.io-indeksen 21. august. blake3 droppet arrayref i 1.8.7, publisert 09:09 UTC samme morgen, og blake2b_simd og blake2s_simd gjorde det samme et kvarter senere.
Cargo har ingen ferdig motvekt. En pull request som stabiliserer innstillingen global-min-publish-age, som holder tilbake avhengigheter yngre enn en konfigurert alder, gikk inn i siste kommentarrunde 18. august, to dager før angrepet, og var fortsatt åpen og umerget 21. august. GitHub rullet ut en tilsvarende nedkjøling som standard for Dependabot i juli.
Hva bør du gjøre?
- Søk i
~/.cargo/registry/cacheetter de tre slettede versjonene, og pinn arrayref til 0.3.9 eller eldre. Rust Security Response Team fjernet yank-merket på de ekte versjonene under håndteringen. - Se etter
/tmp/rust-setuppå Linux og macOS,%TEMP%\rust-setup.ps1og%TEMP%\rust-setup-launch.vbspå Windows, og trafikk mot 23.254.165.112 på port 9089 og 443. - Behandl Cargos yank-advarsel som et signal om å lese diff-en, ikke som en oppfordring til å oppgradere blindt.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.