Reflexiones sobre la vulnerabilidad CVE2012-1889: MSXML

Nuestro compañero Aleksandr Matrosov, responsable del equipo de investigación y seguridad de ESET, ha estado siguiendo de cerca la evolución de la vulnerabilidad CVE2012-1889. A continuación ofrecemos una adaptación de sus conclusiones.

Tan pronto como Microsoft lanzó los parches de seguridad para el boletín de seguridad MS12-037 (que solucionaba 13 vulnerabilidades para Internet Explorer), Google publicó información (vulnerabilidad de Microsoft XML está siendo aprovechada) sobre una nueva vulnerabilidad zero-day (CVE-2012-1889) en Microsoft XML Core Services. A veces las vulnerabilidades se descubren a un ritmo que sobrepasa el proceso de parcheo, por lo que se necesita un arreglo temporal. Esto es lo que ha proporcionado Microsoft en esta ocasión: un parche temporal. Recomendamos encarecidamente que se instale este parche, puesto que ya estamos observando varios exploits que se aprovechan de esta vulnerabilidad.

Pero aún hay más: hace unos días, un exploit para la vulnerabilidad CVE-2012-1889 se hizo público a través de una publicación  en el repositorio de Metasploit Framework (nuevo exploit crítico Zero-day para Microsoft IE en Metasploit). Las soluciones de seguridad de ESET detectan esa vulnerabilidad como JS/Exploit.CVE-2012-1889. No obstante, es muy aconsejable instalar el parche si se está usando software vulnerable, tal y como se detalla en el documento informativo sobre seguridad de Microsoft (2719615).

Sobre los detalles técnicos: CVE-2012-1889 se aprovecha de problemas en la corrupción de memoria en Microsoft XML Core Services cuando se intenta acceder a un nodo XML que no ha sido inicializado, usando la llamada a la API get_definition, lo que puede causar corrupciones en la memoria y permitir la ejecución de código remoto. Este tipo de vulnerabilidad, conocida como Use-after-free, se encuentra de forma bastante frecuente en programas desarrollados en lenguajes C/C++.

Esta vulnerabilidad resulta fácil de aprovechar en todas las versiones conocidas de Internet Explorer. El atacante puede realizar una petición de identificación-CLSID llamando a métodos de librerías MSXML y crear un identificador de objetos para tratar de acceder a un objeto inexistente. Existe código como prueba de concepto que puede causar que un cuelgue del sistema se asemeje a lo siguiente:

Este código parece simple, pero genera corrupción de memoria y hace que falle Internet Explorer. El código intenta una petición a un objeto no iniciado, pero la referencia en la región de la memoria ya existe. La corrupción de la memoria sucede en la función de ayuda _dispatchImpl :: InvokeHelper() dentro de la librería MSXML. Es posible ejecutar código remoto tras iniciar la siguiente instrucción:

call    dword ptr [ecx+18h]

Así que si un atacante modifica los valores de la pila, este código transfiere el control al shellcode. Para poder modificar la pila los atacantes pueden usar técnicas de heap-spray que pueden resultar en un control del proceso de ejecución, tal y como se muestra en los siguientes pasos.

En la siguiente imagen se muestran todas las ejecuciones de la pila después de que Internet Explorer sufra el fallo.

En la pila, es posible averiguar el momento en el que el objeto del nodo XML se maneja.

En el siguiente paso de ejecución, la shellcode recibe el control y se ejecuta, y como resultado es posible realizar operaciones maliciosas en la máquina afectada.

Por supuesto, en Windows 7 o Vista los atacantes necesitan saltarse ASLR, DEP y otros mecanismos de seguridad incorporados en el sistema operativo. Pero en el laboratorio ya disponemos de varios ejemplos de exploits reales que pueden usar este mecanismo y no existe un método universal para detener a los atacantes en este momento. Lo que es peor, hay maneras en las que es posible para un exploit hacer uso de ficheros .DOC. Las versiones de Microsoft Office que se ven afectadas son la 2003/2007. Recomendamos encarecidamente instalar el parche temporal en el sistema para mitigar este vector de ataque.

La siguiente versión de Microsoft Internet Explorer incluirá una nueva revisión de seguridad para frames de la pila y mecanismos para mitigar ataques que transfieran control a direcciones de la shellco de (Protecciones de memoria mejoradas en IE10)

 Josep Albors

@JosepAlbors

Comentar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Atención: nuestra página utiliza cookies Al utilizar nuestro sitio web, consiente nuestra política de uso.

Aceptar y ocultar este mensaje