# Un crate Rust a rulat malware la compilare. 86 de minute.

Published: 2026-09-15

Un crate Rust cu patru macro-uri și 260 de milioane de descărcări adaugă o dependență, iar \`cargo build\` rulează binarul unui străin pe mașina ta. 20 august 2026: arrayref 0.3.10 aterizează pe crates.io depinzând de proc-macro1 — nu proc-macro2, cel real — al cărui script de construire descarcă un "payload", îl plasează în /tmp/rust-setup și îl lansează detașat în timp ce proiectul tău compilează. Versiunile curate sunt "yanked" astfel încât propria avertizare a lui Cargo te ghidează către cea "otrăvită". 86 de minute mai târziu este șters.

Canonical: https://thedailydiff.dev/ro/video/2026-09-15-arrayref-proc-macro/

## Ce acoperă acest videoclip

- cargo build rulează binarul unui străin
- Dovezile: Rust Blog, SafeDep, Hacker News
- Acesta este The Daily Diff, postmortem
- Cronologie: 02:11 staging → 07:15 publicat → 08:41 șters
- Mecanism: build.rs, fără sandbox, momeala yank

## Capitole

- 0:00 cargo build rulează binarul unui străin
- 0:20 Dovezile: Rust Blog, SafeDep, Hacker News
- 0:33 Acesta este The Daily Diff, postmortem
- 0:40 Cronologie: 02:11 staging → 07:15 publicat → 08:41 șters
- 1:25 Mecanism: build.rs, fără sandbox, momeala yank
- 2:05 git blame — divizarea
- 2:25 Raza de impact: 2.285 de descărcări
- 2:45 Verdict + linia de luni

## Transcrierea tradusă

Tradus din narațiunea originală în engleză. Audio-ul și subtitrările disponibile sunt controlate de YouTube.

### cargo build rulează binarul unui străin

0:00 Un crate Rust cu patru macro-uri, cu un sfert de miliard de descărcări, adaugă o dependență, iar cargo build rulează un binar străin pe mașina ta. 20 august 2026. arrayref 0.3.10 aterizează pe crates.io depinzând de proc-macro1. Nu proc-macro2, cel real: o singură cifră greșită, iar scriptul său de construire rulează un payload în timp ce proiectul tău compilează. Echipa de securitate Rust îl șterge 86 de minute mai târziu.

### Dovezile: Rust Blog, SafeDep, Hacker News

0:22 SafeDep publică "teardown-ul". Hacker News: 554 de puncte. Cum se întâmplă, de ce Cargo permite acest lucru și cine primește vina. Acesta este The Daily Diff, postmortem. Două dimineața, UTC.

### Acesta este The Daily Diff, postmortem

0:33 Un cont numit d-tolney, o literă diferită de David Tolnay, care menține jumătate din Rust, publică proc-macro1 1.0.106: proc-macro2 real,

### Cronologie: 02:11 staging → 07:15 publicat → 08:41 șters

0:41 redenumit. Staging. 07:11. Versiunea 1.0.107 adaugă un script de construire, plus base64, TLS și un client HTTP. Pentru un parser de token-uri. 07:15. Contul mentenantului republică arrayref ca 0.3.10 și șterge ("yanks") fiecare versiune mai veche. Cargo afișează: considerați actualizarea la o versiune care nu este ștersă ("yanked"). Singura rămasă este cea "otrăvită".

1:02 Avertismentul este momeala. În același minut, o firmă de securitate raportează incidentul la Rust. 07:54, o problemă RustSec. 08:29, o problemă pe depozit; atacatorul răspunde cu 0.3.11 și o a doua dependență malițioasă. 08:41, șters. Optzeci și șase de minute. De ce? Unu: Cargo construiește fiecare dependență declarată, apelată sau nu. O singură linie în manifest este suficientă.

1:21 Doi: un script de construire rulează pe mașina ta, ca tine, cu cheile tale SSH și token-ul cargo,

### Mecanism: build.rs, fără sandbox, momeala yank

1:26 înainte ca codul tău să compileze. Fără sandbox, prin design: așa găsesc crate-urile bibliotecile C. Trei: în interior se află proc-macro2 real, deci construcția reușește. Payload-ul: un client TLS care are încredere în orice certificat, extrage un binar, îl plasează în /tmp/rust-setup și îl lansează detașat. Pe Windows, deturnează prin wscript pentru a scăpa de obiectul job al lui Cargo; o sursă comentariul o spune. A doua etapă, conform firului RustSec: un instrument de acces la distanță vizând

1:52 browsere și portofele crypto. Poetic, deoarece cei mai mari utilizatori ai arrayref includ secp256k1 și Solana. git blame. Modelul Cargo, cincizeci și cinci la sută: dependențele rulează cod pe mașina ta la compilare, fără sandbox, iar avertismentul "yank" a ghidat oamenii către

### git blame — divizarea

2:07 otravă. Un cont, treizeci: un singur credential republică un crate în care un sfert de miliard de descărcări au încredere. Cifra unu, cincisprezece: o singură tastă de la cel mai de încredere crate Rust, și nimeni nu citește arborele. Raza de impact: 2.285 de descărcări în 86 de minute. Sub zece la sută din trafic, deoarece majoritatea fișierelor lock conțineau 0.3.9. crates.io spune că nu există dovezi de utilizare.

### Raza de impact: 2.285 de descărcări

2:27 Două persoane pe firul RustSec nu sunt de acord; una găsește un serviciu systemd. Pe Hacker News, cel mai popular fir nu este despre malware. Este pagina crate-ului, unde 0.3.10 nu a existat niciodată. Verdict, postmortem: NEEDS REVIEW. Optzeci și șase de minute pentru a șterge, o postare pe blog în aceeași zi, contul blocat: acea parte este SHIP IT. Dar pagina crate-ului nu arată că s-a întâmplat nimic, cargo audit rămâne tăcut pe o copie

### Verdict + linia de luni

2:48 cache, iar scripturile de construire încă rulează ca tine. Luni: rulează comanda de căutare a blogului Rust și tratează un avertisment "yank" ca o întrebare, nu o instrucțiune. Trimite-mi incidentul despre care încă nu ai voie să vorbești, în comentarii, sau la the daily diff dot dev. Și asta e diferența pentru astăzi. Sunt Niko de la Axrisi. Mergeți responsabil.

## Surse

- [Rust Blog, "Supply chain attack on arrayref" (security-response, Aug 20, 2026)](https://blog.rust-lang.org/2026/08/20/supply-chain-attack-on-arrayref/) — blog.rust-lang.org
- [RUSTSEC-2026-0260 (arrayref)](https://github.com/rustsec/advisory-db/blob/main/crates/arrayref/RUSTSEC-2026-0260.md) — github.com
- [RustSec issue #3161 (the original report, IOCs, victims)](https://github.com/rustsec/advisory-db/issues/3161) — github.com
- [SafeDep technical analysis](https://safedep.io/arrayref-proc-macro1-rust-build-time-malware/) — safedep.io
- [GitHub issue on the repo (0.3.11 spotted)](https://github.com/droundy/arrayref/issues/33) — github.com
- [crates.io](https://crates.io/crates/arrayref) — crates.io
- [Hacker News (554 points)](https://news.ycombinator.com/item?id=49374269) — news.ycombinator.com
- [BleepingComputer](https://www.bleepingcomputer.com/news/security/hackers-poison-arrayref-rust-crate-to-push-infostealer-malware/) — www.bleepingcomputer.com
