¿Sabes lo que es la ejecución de código arbitrario? TIC Defense lo explica a detalle
Se trata del impacto de una vulnerabilidad en la deserialización de datos en la cadena de suministro en las aplicaciones basadas en el lenguaje de programación R, en este caso. Por ello, TIC Defense va a mostrarte toda la información concerniente a esta vulnerabilidad, desde el principio.
En primer lugar, la serialización es un proceso crucial en la informática moderna, la cual permite transformar un objeto o estructura de datos en una secuencia de bytes. Esta operación es importante para enviar datos a través de redes o almacenarlos en sistemas de memoria de forma eficiente.
Por otro lado, cuando hablamos de deserialización, es el proceso inverso, mediante el cual los datos que están serializados se convierten nuevamente en su forma original. Es decir, se convierten en un objeto o en una estructura utilizable.
Este mecanismo, si bien es vital en la gestión de datos en múltiples aplicaciones, puede volverse vulnerable si no se implementa de manera adecuada. Las vulnerabilidades de deserialización ocurren cuando los datos se procesan de forma no segura, permitiendo la ejecución de código malicioso o la manipulación de la información, comprometiendo sistemas enteros con graves consecuencias para la seguridad informática.
Recientemente, diversos investigadores identificaron una vulnerabilidad crítica en el ecosistema de R, un lenguaje de programación ampliamente utilizado en análisis estadísticos y científicos. Esta vulnerabilidad explota el proceso de deserialización en la carga y referencia de archivos RDS, el cual es el formato de serialización nativo de R.
El fallo permite que el atacante ejecute código arbitrario si manipula de forma maliciosa los archivos RDS, lo que podría poner en riesgo la seguridad de las aplicaciones y datos que dependan de este formato.
La vulnerabilidad ha sido calificada con un nivel crítico de 8.8 en la escala CVSS, lo que pone en evidencia su extrema gravedad. Este ataque se aprovecha de la creación de un archivo RDS manipulado, que incluye una “promesa” no vinculada.
Esta promesa, una estructura especial en R, se utiliza para diferir la ejecución de un cálculo hasta que se necesite. En este caso, un hacker malicioso puede definir una expresión arbitraria como parte de esta promesa. Cuando se accede al símbolo correspondiente en el archivo RDS, el código malicioso incluido en la promesa es ejecutado de manera inesperada.
Recordemos que una promesa en programación es un objeto que representa un valor, el cual puede que esté disponible “ahora”, en un “futuro” o que no lo esté “nunca”. Uno de los aspectos más críticos de esta vulnerabilidad es el uso del mecanismo de evaluación lazy (perezosa) en el lenguaje R.
En la evaluación lazy, los valores de las promesas no se calculan inmediatamente, solo cuando se accede a la variable o estructura de datos asociada. Esto significa que el código malicioso contenido en el archivo EDS permanece oculto y sin ejecutar, hasta que un usuario o sistema acceda al mismo. Es en este momento en el que el ciberdelincuente puede tomar control del sistema o manipular datos a su favor.
El problema se torna grave cuando consideramos el impacto que esta vulnerabilidad podría tener en la cadena de suministro de software. Si un objeto RDS malicioso es compilado dentro de un paquete de R, y este paquete es distribuido a través de repositorios como CRAN, el cual es el principal repositorio de R, cualquier usuario que descargue e instale dicho paquete estaría en riesgo.
Hay buenas noticias, ya que esta vulnerabilidad ha sido corregida en la versión 4.4.0 del lenguaje R. Sin embargo, todas las versiones anteriores, desde la 1.0.4 en adelante, están afectadas por dicha vulnerabilidad. Es de vital importancia que usuarios y administradores actualicen las instalaciones de R a la última versión lanzada.