Los mantenedores del lenguaje de programación Rust lanzaron una actualización de seguridad para una vulnerabilidad de alta gravedad que podría ser aprovechada por una parte malintencionada para eliminar archivos y directorios de un sistema vulnerable de manera no autorizada.
«Un atacante podría usar este problema de seguridad para engañar a un programa privilegiado para que elimine archivos y directorios a los que el atacante no podría acceder o eliminar de otra manera», el grupo de trabajo Rust Security Response (WG) dicho en un consultivo publicado el 20 de enero de 2021.
Rust 1.0.0 a Rust 1.58.0 se ve afectado por esta vulnerabilidad. La falla, que se rastrea como CVE-2022-21658 (Puntuación CVSS: 7,3), ha sido acreditado al investigador de seguridad Hans Kratz, con el equipo impulsando una solución en Versión de óxido 1.58.1 enviado la semana pasada.
Específicamente, el problema surge de una verificación implementada incorrectamente para evitar la eliminación recursiva de enlaces simbólicos (también conocido como enlaces simbólicos) en una función de biblioteca estándar denominada «std::fs::remove_dir_all». Esto resulta en un condición de carrera, que, a su vez, podría ser explotado de manera confiable por un adversario al abusar de su acceso a un programa privilegiado para eliminar directorios confidenciales.
«En lugar de decirle al sistema que no siga los enlaces simbólicos, la biblioteca estándar primero verificó si lo que estaba a punto de eliminar era un enlace simbólico y, de lo contrario, procedería a eliminar el directorio de forma recursiva», dijo el aviso. «Esto expuso una condición de carrera: un atacante podría crear un directorio y reemplazarlo con un enlace simbólico entre la verificación y la eliminación real».
Rust, aunque no es un lenguaje de programación ampliamente utilizado, ha sido testigo de un aumento en la adopción en los últimos años por sus garantías de seguridad relacionadas con la memoria. El año pasado, Google anunció que su versión de código abierto del sistema operativo Android agregará soporte para el lenguaje de programación para evitar errores de seguridad de la memoria.