# Unha crate de Rust executou malware no tempo de compilación. 86 minutos.

Published: 2026-09-15

Unha crate de Rust de catro macros con 260 millóns de descargas engade unha dependencia, e \`cargo build\` executa un binario descoñecido na túa máquina. 20 de agosto de 2026: arrayref 0.3.10 chega a crates.io dependendo de proc-macro1 —non proc-macro2, o real— cuxo script de construción descarga unha carga útil, a deixa en /tmp/rust-setup e a inicia en segundo plano mentres o teu proxecto compila. As versións limpas son retiradas para que a propia advertencia de Cargo te leve á envelenada. 86 minutos despois é eliminada.

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

## Que abrangue este vídeo

- cargo build executa un binario descoñecido
- Os recibos: Rust Blog, SafeDep, Hacker News
- Isto é The Daily Diff, postmortem
- Cronoloxía: 02:11 preparación → 07:15 publicado → 08:41 eliminado
- Mecanismo: build.rs, sen sandbox, o atractivo da retirada

## Capítulos

- 0:00 cargo build executa un binario descoñecido
- 0:20 Os recibos: Rust Blog, SafeDep, Hacker News
- 0:33 Isto é The Daily Diff, postmortem
- 0:40 Cronoloxía: 02:11 preparación → 07:15 publicado → 08:41 eliminado
- 1:25 Mecanismo: build.rs, sen sandbox, o atractivo da retirada
- 2:05 git blame — a división
- 2:25 Radio de explosión: 2.285 descargas
- 2:45 Veredicto + a liña do luns

## Transcrición traducida

Traducido da narración orixinal en inglés. O audio e os subtítulos dispoñibles son controlados por YouTube.

### cargo build executa un binario descoñecido

0:00 Unha crate de Rust de catro macros cun cuarto de billón de descargas engade unha dependencia, e cargo build executa un binario descoñecido na túa máquina. 20 de agosto de 2026. arrayref 0.3.10 chega a crates.io dependendo de proc-macro1. Non proc-macro2, o real: un díxito de diferenza, e o seu script de construción executa unha carga útil mentres o teu proxecto compila. O equipo de seguridade de Rust elimínao 86 minutos despois.

### Os recibos: Rust Blog, SafeDep, Hacker News

0:22 SafeDep publica a análise. Hacker News: 554 puntos. Como ocorre, por que Cargo o permite, e quen ten a culpa. Isto é The Daily Diff, postmortem. Dúas da mañá, UTC.

### Isto é The Daily Diff, postmortem

0:33 Unha conta chamada d-tolney, unha letra de David Tolnay, quen mantén a metade de Rust, publica proc-macro1 1.0.106: real

### Cronoloxía: 02:11 preparación → 07:15 publicado → 08:41 eliminado

0:41 proc-macro2, renomeado. Preparación. 07:11. A versión 1.0.107 engade un script de construción, ademais de base64, TLS e un cliente HTTP. Para un analizador de tokens. 07:15. A conta do mantedor volve publicar arrayref como 0.3.10 e retira todas as versións antigas. Cargo imprime: considere actualizar a unha versión que non foi retirada. A única que queda é a envelenada.

1:02 A advertencia é o reclamo. No mesmo minuto, unha empresa de seguridade infórmao a Rust. 07:54, un problema de RustSec. 08:29, un problema no repositorio; o atacante responde con 0.3.11 e unha segunda dependencia maliciosa. 08:41, eliminado. Oitenta e seis minutos. Por que? Un: Cargo constrúe cada dependencia declarada, sexa chamada ou non. Unha liña do manifesto é suficiente.

1:21 Dous: un script de construción execútase na túa máquina, como ti, coas túas claves SSH e o token

### Mecanismo: build.rs, sen sandbox, o atractivo da retirada

1:26 de cargo, antes de que o teu código compile. Sen sandbox, por deseño: é así como as crates atopan bibliotecas C. Tres: dentro está o verdadeiro proc-macro2, polo que a construción ten éxito. A carga útil: un cliente TLS que confía en calquera certificado busca un binario, déixao en /tmp/rust-setup e o inicia en segundo plano. En Windows desvíase a través de wscript para escapar do obxecto de traballo de Cargo; un comentario da fonte así o di. A segunda etapa, segundo o fío de RustSec: unha ferramenta de acceso remoto dirixida a

1:52 navegadores e carteiras de criptomonedas. Poético, xa que os maiores usuarios de arrayref inclúen secp256k1 e Solana. git blame. O modelo de Cargo, cincuenta e cinco por cento: as dependencias executan código na túa máquina en tempo de compilación, sen sandbox, e a advertencia de retirada levou á xente ao

### git blame — a división

2:07 veleno. Unha conta, trinta: unha credencial volve publicar unha crate na que confían un cuarto de billón de descargas. O díxito un, quince: unha pulsación de tecla da crate máis fiable de Rust, e ninguén le a árbore. Radio de explosión: 2.285 descargas en 86 minutos. Menos do dez por cento do tráfico, porque a maioría dos lockfiles mantiñan a 0.3.9. crates.io di que non hai evidencia de uso.

### Radio de explosión: 2.285 descargas

2:27 Dúas persoas no fío de RustSec non están de acordo; unha atopa un servizo systemd. En Hacker News o fío principal non é sobre o malware. É a páxina da crate, onde 0.3.10 agora nunca existiu. Veredicto, postmortem: NEEDS REVIEW. Oitenta e seis minutos para eliminar, unha publicación no blog o mesmo día, a conta bloqueada: esa parte é SHIP IT. Pero a páxina da crate non mostra nada, cargo audit permanece en silencio sobre unha copia

### Veredicto + a liña do luns

2:48 en caché, e os scripts de construción aínda se executan como ti. Luns: executa o comando de busca do blog de Rust, e trata unha advertencia de retirada como unha pregunta, non unha instrución. Envía o incidente do que aínda non se permite falar, nos comentarios, ou en the daily diff dot dev. E esa é a diferenza por hoxe. Son Niko de Axrisi. Fusionar con responsabilidade.

## Fontes

- [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
