+− THE DAILY DIFFdev & AI news
NEEDS REVIEW

Një paketë Rust ekzekutoi malware gjatë kohës së kompilimit. 86 minuta.

Një paketë Rust me katër makro dhe 260 milionë shkarkime shton një varësi, dhe `cargo build` ekzekuton një binar të huaj në makinerinë tuaj.

Një paketë Rust me katër makro dhe 260 milionë shkarkime shton një varësi, dhe `cargo build` ekzekuton një binar të huaj në makinerinë tuaj. 20 gusht 2026: arrayref 0.3.10 zbarkon në crates.io duke varur nga proc-macro1 — jo proc-macro2, ai i vërteti — skripti i ndërtimit të të cilit shkarkon një ngarkesë, e vendos atë në /tmp/rust-setup dhe e nis atë të shkëputur ndërsa projekti juaj kompilohet. Versionet e pastra janë të tërhequra, kështu që vetë paralajmërimi i Cargo ju drejton te ai i helmuari. 86 minuta më vonë fshihet.

Lexoni edicionin e shkruar (anglisht) ↗

Çfarë mbulon kjo video

  • cargo build ekzekuton një binar të huaj
  • Faturat: Blogu i Rust, SafeDep, Hacker News
  • Ky është The Daily Diff, postmortem
  • Afati kohor: 02:11 fazë → 07:15 publikuar → 08:41 fshirë
  • Mekanizmi: build.rs, pa sandbox, joshja e tërheqjes

Transkript i përkthyer

Përkthyer nga tregimi origjinal në anglisht. Audio dhe titrat e disponueshme kontrollohen nga YouTube.

cargo build ekzekuton një binar të huaj

0:00 Një paketë Rust me katër makro me një çerek miliardi shkarkimesh shton një varësi, dhe cargo build ekzekuton një binar të huaj në makinerinë tuaj. 20 gusht 2026. arrayref 0.3.10 zbarkon në crates.io duke varur nga proc-macro1. Jo proc-macro2, ai i vërteti: një shifër gabim, dhe skripti i tij i ndërtimit ekzekuton një ngarkesë ndërsa projekti juaj kompilohet. Ekipi i sigurisë i Rust e fshin atë 86 minuta më vonë.

Faturat: Blogu i Rust, SafeDep, Hacker News

0:22 SafeDep publikon zbërthimin. Hacker News: 554 pikë. Si ndodh, pse Cargo e lejon, dhe kush merr fajin. Ky është The Daily Diff, postmortem. Dy e mëngjesit, UTC.

Ky është The Daily Diff, postmortem

0:33 Një llogari e quajtur d-tolney, një shkronjë larg David Tolnay, i cili mirëmban gjysmën e Rust, publikon proc-macro1 1.0.106: proc-macro2 i vërtetë,

Afati kohor: 02:11 fazë → 07:15 publikuar → 08:41 fshirë

0:41 i riemërtuar. Fazë. 07:11. Versioni 1.0.107 shton një skript ndërtimi, plus base64, TLS dhe një klient HTTP. Për një parser tokenash. 07:15. Llogaria e mirëmbajtësit ripublikon arrayref si 0.3.10 dhe tërheq çdo version më të vjetër. Cargo printon: konsideroni të përditësoni në një version që nuk është tërhequr. I vetmi që mbetet është ai i helmuari.

1:02 Paralajmërimi është joshja. Në të njëjtën minutë, një firmë sigurie e raporton atë te Rust. 07:54, një çështje RustSec. 08:29, një çështje në repo; sulmuesi përgjigjet me 0.3.11 dhe një varësi të dytë malicioze. 08:41, fshirë. Tetëdhjetë e gjashtë minuta. Pse? Një: Cargo ndërton çdo varësi të deklaruar, të thirrur apo jo. Një rresht manifesti është i mjaftueshëm.

1:21 Dy: një skript ndërtimi ekzekutohet në makinerinë tuaj, si ju, me çelësat tuaj SSH dhe tokenin cargo

Mekanizmi: build.rs, pa sandbox, joshja e tërheqjes

1:26 , para se kodi juaj të kompilohet. Pa sandbox, me dizajn: kështu i gjejnë libraritë C paketat. Tre: brenda është proc-macro2 i vërtetë, kështu që ndërtimi del me sukses. Ngarkesa: një klient TLS që beson çdo certifikatë merr një binar, e vendos atë në /tmp/rust-setup dhe e nis atë të shkëputur. Në Windows ajo devijon përmes wscript për të shpëtuar nga objekti i punës së Cargo; një koment burimi e thotë këtë. Faza e dytë, sipas temës RustSec: një mjet aksesi në distancë i drejtuar te

1:52 shfletuesit dhe portofolët e kriptomonedhave. Poetike, pasi përdoruesit më të mëdhenj të arrayref përfshijnë secp256k1 dhe Solana. git blame. Modeli i Cargo-s, pesëdhjetë e pesë përqind: varësit ekzekutojnë kodin në makinerinë tuaj në kohën e kompilimit, pa sandbox, dhe paralajmërimi i tërheqjes i drejtoi njerëzit drejt

git blame — ndarja

2:07 helmimit. Një llogari, tridhjetë: një kredencial ripublikon një paketë ku një çerek miliardi shkarkimesh besojnë. Shifra një, pesëmbëdhjetë: një shtypje tasti nga paketa më e besuar e Rust, dhe askush nuk e lexon pemën. Rrezja e shpërthimit: 2,285 shkarkime në 86 minuta. Nën dhjetë përqind të trafikut, sepse shumica e skedarëve lock mbanin 0.3.9. crates.io thotë se nuk ka dëshmi përdorimi.

Rrezja e shpërthimit: 2,285 shkarkime

2:27 Dy persona në temën e RustSec nuk pajtohen; njëri gjen një shërbim systemd. Në Hacker News tema kryesore nuk është për malware-in. Është faqja e paketës, ku 0.3.10 tani nuk ka ekzistuar kurrë. Vendimi, postmortem: NEEDS REVIEW. Tetëdhjetë e gjashtë minuta për t'u fshirë, një postim në blog në të njëjtën ditë, llogaria e bllokuar: ajo pjesë është SHIP IT. Por faqja e paketës tregon se asgjë nuk ka ndodhur, cargo audit hesht për një kopje të memorizuar (cached)

Vendimi + linja e së hënës

2:48 , dhe skriptet e ndërtimit ende ekzekutohen si ju. E hënë: ekzekutoni komandën e gjetjes së blogut Rust, dhe trajtoni një paralajmërim tërheqjeje si një pyetje, jo si një udhëzim. Më dërgoni incidentin për të cilin ende nuk ju lejohet të flisni, në komente, ose te the daily diff dot dev. Dhe kjo është the diff për sot. Unë jam Niko nga Axrisi. Bëni bashkimet me përgjegjësi.

Burimet

  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

Video të ngjashme