Una nueva vulnerabilidad de programación en R expone a los proyectos a ataques a la cadena de suministro

Se ha descubierto una vulnerabilidad de seguridad en el lenguaje de programación en R que podría ser explotada por un actor de amenazas para crear un archivo RDS (R Data Serialization) malicioso de modo que provoque la ejecución de código cuando se cargue y se haga referencia a él.
La falla, a la que se le asignó el identificador CVE CVE-2024-27322, “implica el uso de objetos prometedores y una evaluación diferida en R”, dijo la empresa de seguridad de aplicaciones de IA HiddenLayer en un informe compartido con The Hacker News.
RDS, al igual que pickle en Python, es un formato que se utiliza para serializar y guardar el estado de estructuras u objetos de datos en R, un lenguaje de programación de código abierto utilizado en computación estadística, visualización de datos y aprendizaje automático.
Este proceso de serialización (serialize() o saveRDS() y de deserialización (unserialize() y readRDS()) también se aprovecha al guardar y cargar paquetes de R.
La causa principal detrás de CVE-2024-27322 radica en el hecho de que podría conducir a la ejecución de código arbitrario al deserializar datos que no son de confianza, dejando así a los usuarios expuestos a ataques a la cadena de suministro a través de paquetes R especialmente diseñados.
Por lo tanto, un atacante que busque convertir la falla en un arma podría aprovechar el hecho de que los paquetes de R aprovechan el formato RDS para guardar y cargar datos, lo que provoca la ejecución automática de código cuando el paquete se descomprime y deserializa.
“Los paquetes de R son vulnerables a este exploit y, por lo tanto, pueden usarse como parte de un ataque a la cadena de suministro a través de repositorios de paquetes”, dijeron los investigadores de seguridad Kasimir Schulz y Kieran Evans. “Para que un atacante se apodere de un paquete de R, todo lo que necesita hacer es sobrescribir el archivo rdx con el archivo creado con fines malintencionados, y cuando se cargue el paquete, ejecutará automáticamente el código”.
El defecto de seguridad se ha solucionado en la versión 4.4.0 publicada el 24 de abril de 2024, tras la divulgación responsable.
“Un atacante puede explotar esta [falla] mediante la creación de un archivo en formato RDS que contiene una instrucción de promesa que establece el valor en unbound_value y la expresión para que contenga código arbitrario”, dijo HiddenLayer. “Debido a la evaluación diferida, la expresión solo se evaluará y ejecutará cuando se acceda al símbolo asociado con el archivo RDS”.
“Por lo tanto, si se trata simplemente de un archivo RDS, cuando un usuario le asigna un símbolo (variable) para trabajar con él, el código arbitrario se ejecutará cuando el usuario haga referencia a ese símbolo. Si el objeto se compila dentro de un paquete de R, el paquete se puede agregar a un repositorio de R como CRAN, y la expresión se evaluará y el código arbitrario se ejecutará cuando un usuario cargue ese paquete”.
Ya leíste tus 3 artículos gratis de este mes
Únete gratis a la comunidad y sigue leyendo sin límite, descarga ebooks.
Gratis · sin spam · tus datos no se comparten


