„Rust“ paketas paleido kenkėjišką programą kompiliavimo metu. 86 minutės.
Keturias makrokomandas turintis „Rust“ paketas, atsisiųstas 260 milijonų kartų, prideda vieną priklausomybę, ir „cargo build“ paleidžia nepažįstamo asmens dvejetainį failą jūsų mašinoje.
Keturias makrokomandas turintis „Rust“ paketas, atsisiųstas 260 milijonų kartų, prideda vieną priklausomybę, ir „cargo build“ paleidžia nepažįstamo asmens dvejetainį failą jūsų mašinoje. 2026 m. rugpjūčio 20 d.: „arrayref 0.3.10“ pasirodo crates.io, priklausomas nuo „proc-macro1“ – ne „proc-macro2“, tikrojo – kurio kūrimo scenarijus atsisiunčia kenkėjišką programą, patalpina ją į /tmp/rust-setup ir paleidžia atskirtai, kol jūsų projektas kompiliuojasi. Švarios versijos pašalinamos, todėl paties „Cargo“ įspėjimas nukreipia jus į užkrėstą versiją. Po 86 minučių ji ištrinama.
Skaityti rašytinę versiją (anglų k.) ↗
Kas aptariama šiame vaizdo įraše
- „cargo build“ paleidžia nepažįstamo asmens dvejetainį failą
- Įrodymai: „Rust“ tinklaraštis, „SafeDep“, „Hacker News“
- Tai „The Daily Diff“, po incidento analizė
- Laiko juosta: 02:11 rengimas → 07:15 publikuota → 08:41 ištrinta
- Mechanizmas: build.rs, be smėlio dėžės, pašalinimo masalas
Išverstas transkriptas
Išversta iš originalo anglų kalbos. Galimas garso ir subtitrų valdymas per YouTube.
„cargo build“ paleidžia nepažįstamo asmens dvejetainį failą
0:00 Keturias makrokomandas turintis „Rust“ paketas su ketvirtadaliu milijardo atsisiuntimų prideda vieną priklausomybę, ir „cargo build“ paleidžia nepažįstamo asmens dvejetainį failą jūsų mašinoje. 2026 m. rugpjūčio 20 d. „arrayref 0.3.10“ pasirodo crates.io, priklausomas nuo „proc-macro1“. Ne „proc-macro2“, tikrojo: vienas skaitmuo skiriasi, ir jo kūrimo scenarijus paleidžia kenkėjišką programą, kol jūsų projektas kompiliuojasi. „Rust“ saugumo komanda ištrina jį po 86 minučių.
Įrodymai: „Rust“ tinklaraštis, „SafeDep“, „Hacker News“
0:22 „SafeDep“ paskelbia išsamią analizę. „Hacker News“: 554 taškai. Kaip tai nutinka, kodėl „Cargo“ tai leidžia, ir kas kaltas. Tai „The Daily Diff“, po incidento analizė. Antra valanda ryto, UTC.
Tai „The Daily Diff“, po incidento analizė
0:33 Paskyra, pavadinta „d-tolney“, skiriasi viena raide nuo David Tolnay, kuris prižiūri pusę „Rust“, publikuoja „proc-macro1 1.0.106“: tikras
Laiko juosta: 02:11 rengimas → 07:15 publikuota → 08:41 ištrinta
0:41 „proc-macro2“, pervadintas. Rengiama. 07:11. Versija 1.0.107 prideda kūrimo scenarijų, plius base64, TLS ir HTTP klientą. Tokenų analizatoriui. 07:15. Prižiūrėtojo paskyra iš naujo publikuoja „arrayref“ kaip 0.3.10 ir pašalina visas senesnes versijas. „Cargo“ spausdina: apsvarstykite galimybę atnaujinti į nepašalintą versiją. Vienintelė likusi yra užkrėsta.
1:02 Įspėjimas yra masalas. Tą pačią minutę saugumo įmonė praneša apie tai „Rust“. 07:54, „RustSec“ problema. 08:29, problema saugykloje; užpuolikas atsako su 0.3.11 ir antra kenkėjiška priklausomybe. 08:41, ištrinta. Aštuoniasdešimt šešios minutės. Kodėl? Pirma: „Cargo“ sukuria visas deklaruotas priklausomybes, kviestas ar ne. Užtenka vienos manifesto eilutės.
1:21 Antra: kūrimo scenarijus veikia jūsų mašinoje, kaip jūs, su jūsų SSH raktais ir „cargo“
Mechanizmas: build.rs, be smėlio dėžės, pašalinimo masalas
1:26 tokenu, prieš jūsų kodo kompiliavimą. Be smėlio dėžės, pagal projektą: taip paketai randa C bibliotekas. Trečia: viduje yra tikras „proc-macro2“, todėl kūrimas pavyksta. Kenkėjiška programa: TLS klientas, kuris pasitiki bet kokiu sertifikatu, atsisiunčia dvejetainį failą, patalpina jį į /tmp/rust-setup ir paleidžia atskirtai. „Windows“ sistemoje ji apeina „wscript“, kad išvengtų „Cargo“ užduoties objekto; šaltinio komentaras tai sako. Antrasis etapas, pagal „RustSec“ giją: nuotolinės prieigos įrankis, skirtas
1:52 naršyklėms ir kriptovaliutų piniginėms. Poetiška, nes didžiausi „arrayref“ vartotojai yra secp256k1 ir Solana. git blame. „Cargo“ modelis, penkiasdešimt penki procentai: priklausomybės paleidžia kodą jūsų mašinoje kompiliavimo metu, be smėlio dėžės, ir pašalinimo įspėjimas nuvedė žmones prie
git blame — suskaidymas
2:07 nuodų. Viena paskyra, trisdešimt: vienas kredencialas iš naujo publikuoja paketą, kuriuo pasitiki ketvirtadalis milijardo atsisiuntimų. Skaitmuo vienas, penkiolika: vienas klavišo paspaudimas iš labiausiai pasitikimo „Rust“ paketo, ir niekas neskaito medžio. Poveikio spindulys: 2 285 atsisiuntimai per 86 minutes. Mažiau nei dešimt procentų srauto, nes dauguma lockfailų turėjo 0.3.9. crates.io teigia, kad nėra naudojimo įrodymų.
Poveikio spindulys: 2 285 atsisiuntimai
2:27 Du asmenys „RustSec“ gijoje nesutinka; vienas randa systemd paslaugą. „Hacker News“ populiariausia gija nėra apie kenkėjišką programą. Tai paketo puslapis, kur 0.3.10 dabar niekada neegzistavo. Nuosprendis, po incidento analizė: NEEDS REVIEW. Aštuoniasdešimt šešios minutės ištrinti, tos pačios dienos tinklaraščio įrašas, paskyra užblokuota: ta dalis yra SHIP IT. Bet paketo puslapyje nieko neįvyko, „cargo audit“ tyli apie talpykloje esančią
Nuosprendis + pirmadienio riba
2:48 kopiją, ir kūrimo scenarijai vis dar veikia kaip jūs. Pirmadienis: paleiskite „Rust“ tinklaraščio paieškos komandą ir traktuokite pašalinimo įspėjimą kaip klausimą, o ne nurodymą. Atsiųskite man incidentą, apie kurį jums vis dar neleidžiama kalbėti, komentaruose arba the daily diff dot dev. Ir tai yra šios dienos skirtumas. Aš esu Niko iš Axrisi. Sujunkite atsakingai.
Šaltiniai
- Rust Blog, "Supply chain attack on arrayref" (security-response, Aug 20, 2026)blog.rust-lang.org
- RUSTSEC-2026-0260 (arrayref)github.com
- RustSec issue #3161 (the original report, IOCs, victims)github.com
- SafeDep technical analysissafedep.io
- GitHub issue on the repo (0.3.11 spotted)github.com
- crates.iocrates.io
- Hacker News (554 points)news.ycombinator.com
- BleepingComputerwww.bleepingcomputer.com



