Estos defectos ocurren cuando una aplicación recibe objetos serializados dañinos y estos pueden ser manipulados por el atacante para realizar ataques de repetición, inyecciones o modificar sus privilegios de ejecución. En el peor de los casos, la deserialización insegura puede conducir a la ejecución remota de código en el servidor. Elvin Mollinedo, presidente de OWASP […]
Estos defectos ocurren cuando una aplicación recibe objetos serializados dañinos y estos pueden ser manipulados por el atacante para realizar ataques de repetición, inyecciones o modificar sus privilegios de ejecución. En el peor de los casos, la deserialización insegura puede conducir a la ejecución remota de código en el servidor.
Elvin Mollinedo, presidente de OWASP Bolivia, estuvo con nosotros y aprovechamos de conversar sobre esta vulnerabilidad, la cual analizamos a continuación:
Primero ¿Qué es la serialización?
La serialización es el proceso de codificación de un objeto (como un archivo o buffer de memoria) en una secuencia de bytes para almacenarlo o transmitirlo a un dispositivo o base de datos en un formato legible como JSON o XML (entre otros).
Deserialización
La falla de seguridad de deserialización que se analiza en el Top10, nos explica que los datos serializados (que el atacante envía al servidor de consumo de servicios) hacen que se ejecute, al momento de deserializar, un código arbitrario (malicioso).
El riesgo de esta falla de seguridad es que el atacante, gracias al código malicioso, puede tomar control del servidor remotamente u obtener información de este. En específico serían los siguientes ataques:
Un ejemplo sería:
Un foro PHP utiliza serialización de objetos PHP para almacenar una cookie, conteniendo el ID, rol, hash de la contraseña y otros estados del usuario:
a:4:{i:0;i:132;i:1;s:7:"Mallory";i:2;s:4:"user";i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}
Un atacante modifica el objeto serializado para darse a si mismo los privilegios de administrador:
a:4:{i:0;i:1;i:1;s:5:"Alice";i:2;s:5:"admin";i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}
(fuente: OWASP)
Esta vulnerabilidad es una de las más actuales, debido al consumo de servicio que realizan las apps de celulares (IOS – Android) y las webs más modernas (Vue.js, Node.js, laravel, ruby on rails).
Recomendaciones
·Debe realizarse un parseo validado del formato del serializado antes de deserializar.
·Integrar firmas digitales a los objetos serializados con el fin de detectar modificación no autorizada.
·Aísla el código que realiza la deseralización, de modo que se ejecute en un entorno con los mínimos privilegios posibles, en este caso, el atacante no podría tener muchos privilegios si ingresa al servidor.
·Monitorear las conexiones de red entrantes y salientes desde contenedores o servidores que utilizan funcionalidades de deserialización.
Comenzó Patagonia Hacking, la conferencia de seguridad informática más austral del mundo y la única solidaria de Chile, que se realiza en Punta Arenas este 8 y 9 de noviembre. En ella participan expositores de Chile y el mundo.