Qué ha pasado
El 20 de agosto de 2026, a las 7:15 UTC, un investigador de Nextron Systems avisó al equipo de seguridad de Rust de que el crate proc-macro1 era malicioso. Poco después, el equipo confirmó algo peor: arrayref, una utilidad de conversión de arrays con más de 245 millones de descargas históricas y presente en tres de cada cuatro entornos que usan Rust, había sido republicado con una dependencia nueva hacia ese paquete malicioso, la primera que arrayref incorporaba en sus diez años de historia. Junto a él cayeron dos crates más del mismo autor, internment y append-only-vec. El equipo de Rust eliminó las versiones maliciosas y bloqueó la cuenta cautelarmente unos 86 minutos después del primer aviso, y no cree que el mantenedor original actuara de mala fe: todo apunta a que su equipo o sus credenciales fueron comprometidos.
Un backdoor que se ejecuta al compilar, no al instalar
proc-macro1 es un typosquat del muy usado proc-macro2 (más de 154 millones de descargas), y su verdadero peligro estaba en el archivo build.rs. Cargo ejecuta los scripts de compilación con los mismos privilegios que el usuario, así que bastaba con compilar un proyecto que dependiera de estos crates para disparar la carga, sin necesidad de ejecutar el binario final. Según el análisis de Wiz Research sobre muestras recuperadas de Google Threat Intelligence, el script reconstruía en tiempo de ejecución una URL de mando y control a partir de fragmentos en Base64, desactivaba la validación de certificados TLS y descargaba un binario de segunda fase específico para cada plataforma: Linux, Windows y macOS en x86_64, y macOS en aarch64. Ese implante final soportaba cuatro comandos (terminar, reconfigurar, instalar persistencia y ejecutar scripts remotos), se autenticaba con una clave RSA-2048 embebida y, si el servidor principal no respondía, generaba automáticamente diez dominios .com nuevos cada cinco días como respaldo. Wiz corrigió después una imprecisión inicial de su propio análisis: el implante consulta las bases de datos SQLite de credenciales de Chrome, Brave y Edge para enumerar qué contraseñas hay guardadas, pero no llega a extraer el material cifrado real.
