# Un crate de Rust ejecutó malware en tiempo de compilación. 86 minutos.

Published: 2026-09-15

Un crate de Rust de cuatro macros con 260 millones de descargas añade una dependencia, y \`cargo build\` ejecuta un binario desconocido en tu máquina. 20 de agosto de 2026: arrayref 0.3.10 llega a crates.io dependiendo de proc-macro1 —no proc-macro2, el real— cuyo script de compilación descarga una carga útil, la suelta en /tmp/rust-setup y la lanza de forma independiente mientras tu proyecto se compila. Las versiones limpias son retiradas, por lo que la propia advertencia de Cargo te lleva a la envenenada. 86 minutos después es eliminada.

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

## Qué cubre este vídeo

- cargo build ejecuta un binario desconocido
- Los recibos: Rust Blog, SafeDep, Hacker News
- Esto es The Daily Diff, postmortem
- Cronología: 02:11 en preparación → 07:15 publicado → 08:41 eliminado
- Mecanismo: build.rs, sin sandbox, el señuelo del retiro

## Capítulos

- 0:00 cargo build ejecuta un binario desconocido
- 0:20 Los recibos: Rust Blog, SafeDep, Hacker News
- 0:33 Esto es The Daily Diff, postmortem
- 0:40 Cronología: 02:11 en preparación → 07:15 publicado → 08:41 eliminado
- 1:25 Mecanismo: build.rs, sin sandbox, el señuelo del retiro
- 2:05 git blame — la división
- 2:25 Radio de impacto: 2.285 descargas
- 2:45 Veredicto + la línea del lunes

## Transcripción traducida

Traducido de la narración original en inglés. El audio y los subtítulos disponibles están controlados por YouTube.

### cargo build ejecuta un binario desconocido

0:00 Un crate de Rust de cuatro macros con un cuarto de billón de descargas añade una dependencia, y cargo build ejecuta un binario desconocido en tu máquina. 20 de agosto de 2026. arrayref 0.3.10 llega a crates.io dependiendo de proc-macro1. No proc-macro2, el real: un dígito de diferencia, y su script de compilación ejecuta una carga útil mientras tu proyecto se compila. El equipo de seguridad de Rust lo elimina 86 minutos después.

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

0:22 SafeDep publica el análisis. Hacker News: 554 puntos. Cómo ocurre, por qué Cargo lo permite y quién tiene la culpa. Esto es The Daily Diff, postmortem. Las dos de la madrugada, UTC.

### Esto es The Daily Diff, postmortem

0:33 Una cuenta llamada d-tolney, una letra diferente a David Tolnay, quien mantiene la mitad de Rust, publica proc-macro1 1.0.106: el real

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

0:41 proc-macro2, renombrado. En preparación. 07:11. La versión 1.0.107 añade un script de compilación, además de base64, TLS y un cliente HTTP. Para un analizador de tokens. 07:15. La cuenta del mantenedor republica arrayref como 0.3.10 y retira todas las versiones anteriores. Cargo imprime: considera actualizar a una versión que no haya sido retirada. La única que queda es la envenenada.

1:02 La advertencia es el señuelo. En el mismo minuto, una empresa de seguridad lo reporta a Rust. 07:54, un problema de RustSec. 08:29, un problema en el repositorio; el atacante responde con 0.3.11 y una segunda dependencia maliciosa. 08:41, eliminado. Ochenta y seis minutos. ¿Por qué? Uno: Cargo compila cada dependencia declarada, sea invocada o no. Una línea en el manifiesto es suficiente.

1:21 Dos: un script de compilación se ejecuta en tu máquina, como tú, con tus claves SSH y el token

### Mecanismo: build.rs, sin sandbox, el señuelo del retiro

1:26 de cargo, antes de que tu código se compile. Sin sandbox, por diseño: así es como los crates encuentran bibliotecas C. Tres: dentro está el verdadero proc-macro2, por lo que la compilación tiene éxito. La carga útil: un cliente TLS que confía en cualquier certificado descarga un binario, lo suelta en /tmp/rust-setup y lo lanza de forma independiente. En Windows se desvía a través de wscript para escapar del objeto de trabajo de Cargo; un comentario de la fuente lo dice. La segunda etapa, según el hilo de RustSec: una herramienta de acceso remoto dirigida a

1:52 navegadores y monederos de criptomonedas. Poético, ya que los mayores usuarios de arrayref incluyen secp256k1 y Solana. git blame. El modelo de Cargo, cincuenta y cinco por ciento: las dependencias ejecutan código en tu máquina en tiempo de compilación, sin sandbox, y la advertencia de retiro llevó a la gente al

### git blame — la división

2:07 veneno. Una cuenta, treinta: una credencial republica un crate en el que confían un cuarto de billón de descargas. El dígito uno, quince: un golpe de teclado del crate más confiable de Rust, y nadie lee el árbol. Radio de impacto: 2.285 descargas en 86 minutos. Menos del diez por ciento del tráfico, porque la mayoría de los archivos de bloqueo tenían 0.3.9. crates.io dice que no hay evidencia de uso.

### Radio de impacto: 2.285 descargas

2:27 Dos personas en el hilo de RustSec no están de acuerdo; una encuentra un servicio systemd. En Hacker News, el hilo principal no trata sobre el malware. Es la página del crate, donde 0.3.10 nunca existió. Veredicto, postmortem: NEEDS REVIEW. Ochenta y seis minutos para eliminar, una entrada de blog el mismo día, la cuenta bloqueada: esa parte es SHIP IT. Pero la página del crate muestra que no pasó nada, cargo audit permanece en silencio sobre una copia

### Veredicto + la línea del lunes

2:48 cacheada, y los scripts de compilación todavía se ejecutan como tú. Lunes: ejecuta el comando find del blog de Rust, y trata una advertencia de retiro como una pregunta, no una instrucción. Envíame el incidente del que todavía no se te permite hablar, en los comentarios, o en the daily diff dot dev. Y eso es todo por hoy. Soy Niko de Axrisi. Fusiona con responsabilidad.

## Fuentes

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