Nueva vulnerabilidad de R Programming expone proyectos a ataques de la cadena de suministro

Una vulnerabilidad de seguridad se encontró en el lenguaje de programación R que podría permitir a un atacante crear un archivo RDS malicioso para ejecutar código al cargarlo. La falla, identificada como CVE-2024-27322, involucra el uso de objetos de promesa y evaluación perezosa en R. Esta información fue compartida por la empresa de seguridad de aplicaciones de inteligencia artificial HiddenLayer en un informe.

RDS es un formato utilizado en R, similar a pickle en Python, para serializar y guardar el estado de estructuras de datos u objetos en R. Este proceso de serialización (serialize() o saveRDS()) y deserialización (unserialize() y readRDS()) también se aprovecha al guardar y cargar paquetes de R.

La vulnerabilidad CVE-2024-27322 permite la ejecución de código arbitrario al deserializar datos no confiables, exponiendo a los usuarios a ataques de la cadena de suministro a través de paquetes de R especialmente creados. Los paquetes de R, al usar el formato RDS para guardar y cargar datos, podrían provocar la ejecución automática de código cuando el paquete se descomprime y deserializa.

La versión 4.4.0 del lenguaje R, lanzada el 24 de abril de 2024, abordó esta vulnerabilidad de seguridad después de una divulgación responsable. Los investigadores de seguridad Kasimir Schulz y Kieran Evans señalaron que un atacante puede aprovechar la vulnerabilidad sobrescribiendo el archivo rdx con uno maliciosamente elaborado para que el código se ejecute automáticamente al cargar el paquete.

HiddenLayer explicó que un atacante podría explotar esta falla creando un archivo RDS que contiene una instrucción de promesa que establece el valor como unbound_value y la expresión para contener código arbitrario. Debido a la evaluación perezosa, la expresión se ejecutaría al acceder al símbolo asociado con el archivo RDS, lo que resultaría en la ejecución de código arbitrario.

Vía The Hacker News