Ejecución de código arbitrario en el lenguaje de programación R

Una vulnerabilidad en la deserialización de datos puede afectar a la cadena de suministro de aplicaciones basadas en R

Casi Cincuenta Monos
2 min readMay 4, 2024

Serialización

La serialización es el proceso que convierte un objeto o estructura de datos en una secuencia de bytes para poder enviarlo a través de la red o guardarlo en memoria. La deserialización es el proceso inverso, en el que se toma la cadena serializada y se convierte de nuevo en un objeto o estructura.

Las vulnerabilidades de deserialización se producen cuando ese proceso se realiza de forma no segura y permite la ejecución de código malicioso o la manipulación de datos.

CVE-2024–27322

De ese tipo es el fallo de seguridad descubierto por investigadores de HiddenLayer, que permite la ejecución de código arbitrario al realizar la deserialización, carga y referencia de ficheros RDS, el formato de serialización de R muy utilizado en el ecosistema para compartir, preservar y transmitir datos.

La vulnerabilidad ha sido catalogada con el CVE-2024–27322 y se le ha asignado una criticidad de 8.8 puntos en la escala CVSS. Un atacante podría crear un fichero RDS que contenga una promesa estableciendo un valor unbound y cuya expresión sea código arbitrario.

El proceso de evaluación lazy hace que la expresión solo se compute cuando se accede al símbolo asociado con el fichero RDS. Al referenciar dicha variable el código arbitrario será ejecutado.

Cadena de suministro

Si el objeto es compilado dentro de un paquete de R y este añadido a un repositorio, la expresión que ejecuta el código arbitrario será evaluada cuando los usuarios carguen ese paquete.

Este último punto es el que es especialmente crítico en referencia a la cadena de suministro, puesto que el repositorio principal del lenguaje R, CRAN, permite la subida de cualquier paquete por cualquier usuario sin más requisitos que los de cumplir con un cierto formato.

La vulnerabilidad ha sido solucionada en la versión 4.4.0 de R, todas aquellas anteriores desde la 1.0.4 están afectadas por lo que es necesario actualizar a la mayor brevedad para evitar posibles problemas.

Fuentes y más información:

--

--