Los atacantes no necesitan un zero-day; basta con un mantenedor confiado de Rust.

Los atacantes no necesitan un zero-day; basta con un mantenedor confiado de Rust.

Los derechos de publicación abren la puerta a miles de proyectos.

image

En el ecosistema de Rust vuelven a apuntar no al código, sino a las personas que tienen derecho a publicarlo. El equipo de crates.io y el grupo de trabajo de Rust para la respuesta a incidentes el 17 de septiembre advirtieron sobre una campaña en curso contra participantes del proyecto y propietarios de crates populares, cuyos ordenadores y cuentas están siendo comprometidos con el fin de publicar posteriormente paquetes maliciosos.

El esquema comienza con un contacto comercial verosímil. Los atacantes ofrecen trabajo, un contrato o participación en un proyecto, y luego trasladan la comunicación a una videollamada. Durante la conversación, convencen a la víctima de instalar un supuesto códec de audio faltante o de ejecutar un comando que los atacantes colocan en el portapapeles. Como resultado, el código lo ejecuta el propio desarrollador.

Para reducir sospechas, los operadores crean nuevas empresas y elaboran páginas convincentes en LinkedIn. Una verificación rápida de ese perfil puede no ser suficiente, ya que la historia parece una oferta de colaboración común. Rust vincula explícitamente el objetivo de la operación con el acceso a dispositivos y cuentas que pueden publicar paquetes en crates.io, el registro oficial de bibliotecas del lenguaje.

Un crate en Rust es un paquete de código que otros proyectos pueden incluir como dependencia. Por eso, el acceso a la cuenta del mantenedor de una biblioteca popular da a los atacantes mucho más que el compromiso de un solo ordenador. Basta con publicar una nueva versión maliciosa bajo un nombre de confianza, después de lo cual puede entrar en las compilaciones de los usuarios y en los procesos automáticos de CI/CD.

El peligro ya dejó de ser teórico. En agosto, un esquema similar ya condujo a la compromisión de las populares arrayref, internment y append-only-vec. A través de una cuenta comprometida se añadió a las dependencias un proc-macro1 malicioso, cuyo script de compilación descargaba carga adicional. Para infectar bastaba con compilar un proyecto con esa dependencia.

Entonces el equipo de Rust eliminó las versiones maliciosas y bloqueó la cuenta relacionada. arrayref 0.3.10 estuvo disponible durante 86 minutos, internment 0.8.7 alrededor de 90 minutos, y append-only-vec 0.1.9 cerca de 107 minutos. Los desarrolladores de Rust consideraron más probable la compromisión del ordenador o de las credenciales del propietario de los paquetes, y no su participación consciente en la operación.

La advertencia actual también vincula la nueva oleada con los intentos de junio de atacar a miembros destacados de la comunidad Rust mediante ofertas de trabajo falsas. Sin embargo, el equipo del proyecto no afirma que la actividad de junio, el compromiso de agosto y la campaña actual pertenezcan al mismo operador. La coincidencia de métodos muestra un patrón persistente, pero no demuestra un origen común de todos los episodios.

El equipo de Rust recomienda ser cauteloso con las ofertas de trabajo y de colaboración inesperadas, y realizar las videollamadas a través de plataformas conocidas, creando la reunión por su cuenta si es posible. A los propietarios de cuentas se les aconseja verificar la autenticación multifactor y el historial de accesos. En caso de sospechas relacionadas con crates.io, se puede contactar a help@crates.io; para otras cuestiones, a security@rust-lang.org.