Cajas de envío en una cinta transportadora con escudo azul que ilustran el ataque a crates.io

Ataque a crates.io: malware en Rust al compilar el código

Un ataque a crates.io logró que el código malicioso se ejecutara durante la compilación, no al usar la aplicación. El 20 de agosto de 2026 se identificó una operación coordinada contra tres paquetes muy utilizados del registro oficial de Rust: arrayref 0.3.10, internment 0.8.7 y append-only-vec 0.1.9. Solo el primero acumula 245 millones de descargas históricas.

Cómo funcionó el ataque a crates.io

Las tres versiones comprometidas añadían una dependencia nueva llamada proc-macro1, un typosquat de proc-macro2, una de las librerías más descargadas del ecosistema. Esa dependencia falsa incluía un script de compilación que descargaba y ejecutaba una segunda etapa mientras el proyecto se construía, con los permisos del desarrollador o del runner de integración continua.

La carga se elegía según la plataforma: había versiones para Linux, Windows y macOS en x86_64, más una específica para macOS en aarch64. Las ventanas de exposición fueron cortas —unos 86, 90 y 107 minutos respectivamente antes de que los paquetes se eliminaran— pero suficientes para alcanzar a cualquier build automatizado que se ejecutara en ese rato. arrayref registró 53,7 millones de descargas solo en los 90 días previos.

Rustbot, el implante para macOS

Investigadores de Wiz encontraron coincidencias de infraestructura con campañas previas de cadena de suministro atribuidas a actores vinculados a Corea del Norte, entre ellas los incidentes de los paquetes npm Mastra y Axios. El objetivo no era el usuario final del software, sino la máquina del desarrollador y sus llaves de la nube.

Qué revisar si compilas en Rust

  • Busca proc-macro1 en tus archivos Cargo.lock. Es el indicador más directo.
  • Compila siempre con --locked en integración continua para que no se resuelvan versiones nuevas por sorpresa.
  • Ejecuta los builds en entornos efímeros y sin credenciales de larga duración montadas.
  • Si compilaste el 20 de agosto de 2026, rota tus claves de AWS, SSH y Kubernetes por precaución.
  • Incorpora cargo-audit y cargo-deny al pipeline para detectar dependencias añadidas sin justificación.

Este ataque a crates.io confirma un cambio de foco que ya se veía en npm y PyPI: comprometer al que construye el software sale más rentable que atacar a quien lo usa. Y un script de compilación es, por diseño, código que se ejecuta sin que nadie lo revise. Tratarlo como tal es el primer paso.

Fuentes: The Hacker News, BleepingComputer