Deberías proteger tu Windows de esta grave vulnerabilidad CVE-2024-24576 en Rust

Una nueva vulnerabilidad ha sido descubierta dentro de la biblioteca estándar de Rust, específicamente afectando a los sistemas operativos Windows. Identificada como CVE-2024-24576, esta falla crítica ha sido calificada con un 10 sobre 10 en la escala de gravedad CVSS debido a su potencial para permitir ataques de inyección de comandos de manera remota y sin interacción del usuario.

-Detalles de la Vulnerabilidad en Rust

La falla se encuentra en cómo Rust maneja la invocación de archivos por lotes (.bat y .cmd) en Windows. Se ha descubierto que la biblioteca estándar de Rust no escapa adecuadamente los argumentos pasados a estos archivos, lo que podría permitir a un atacante ejecutar comandos arbitrarios en el sistema afectado.

Este problema solo afecta a las versiones de Rust anteriores a la 1.77.2 en sistemas Windows que ejecutan archivos por lotes con argumentos no confiables. No se han reportado afectaciones en otras plataformas o en usos diferentes dentro de Windows.

-Respuesta y Soluciones

El Grupo de Trabajo de Respuesta de Seguridad de Rust ha enfrentado desafíos significativos debido a la complejidad de cmd.exe en Windows, lo que ha complicado la búsqueda de una solución universal que escape adecuadamente los argumentos en todos los casos.

Como medida provisional, se ha mejorado el código de escape y se han realizado modificaciones a la API de comando para asegurar un manejo más seguro de los argumentos.

Para los desarrolladores que implementen su propio escape o manejen solo entradas confiables, Rust ofrece el método `CommandExt::raw_arg` que permite evitar la lógica de escape de la biblioteca estándar.

-Impacto y Recomendaciones

La falla no solo afecta a Rust, sino también a otros lenguajes de programación que manejan de manera similar los archivos por lotes en Windows, incluyendo Erlang, Go, Haskell, Java, Node.js, PHP, Python, y Ruby. Cada uno está en diferentes etapas de manejo de la vulnerabilidad, desde actualizaciones de documentación hasta parches disponibles.

Ryotak, el ingeniero que descubrió la vulnerabilidad, sugiere mover los archivos por lotes a un directorio que no esté en la variable de entorno PATH como medida preventiva para evitar ejecuciones no deseadas.

Este descubrimiento refuerza la recomendación de la Casa Blanca a través de la Oficina del Director Cibernético Nacional de adoptar lenguajes de programación seguros para la memoria como Rust, en un esfuerzo por reducir las vulnerabilidades de seguridad en el software. Con la creciente dependencia de tecnologías seguras y confiables, es crucial estar informado y preparado ante tales vulnerabilidades.