jueves, 10 de junio de 2010

Ejecución de comandos arbitrarios en Microsoft Windows XP y Windows Server 2003

Tavis Ormandy ha publicado, en la lista de Full Disclosure, los detalles y prueba de concepto de una vulnerabilidad sin parche que permite ejecutar comandos arbitrarios a través de una URL. El fallo descubierto se halla en Microsoft Windows Help Centre, la aplicación para acceder a la documentación de ayuda.

Dicha aplicación registra un manejador de protocolo con el esquema "hcp://" para acceder a la documentación a través de URLs. Cuando se accede a través de una URL a la documentación, el manejador del nombrado esquema "hcp", añade el parámetro de línea de comandos "/fromhcp" para indicarle a la aplicación del centro de ayuda que el recurso ha sido solicitado desde una URL; restringiendo el uso de parámetros y permitiendo sólo un conjunto de documentos que se encuentran en una lista blanca.

Ormandy ha encontrado un método para evadir esta lista blanca, basado en un error en la implementación de la función que comprueba las URL.

El fallo reside en la función "MPC::HTML::UrlUnescapeW", usada para la normalización y filtrado de la URL antes de ser validada. Dicha función usa a su vez la función "MPC::HexToNum" para convertir los caracteres escapados (p.ej %20 al valor de espacio en blanco) a su correspondiente valor numérico.

Sin entrar en detalles técnicos, básicamente, la función "MPC::HTML::UrlUnescapeW" omite el chequeo del valor de retorno de "MPC::HexToNum", permitiendo envenenar la cadena final y evadir la restricción de lista blanca.

Para proseguir con la explotación Ormandy necesitaba una página de la documentación que cumpliese con varias condiciones, poder ser invocado directamente desde una URL y con un fallo de cross-site scripting que le permitiese incluir una cadena manipulada.

Pudo localizar la página de documentación e identificar el XSS, pero curiosamente no pudo explotarlo (Ormandy no es especialista en Web). Así que tuvo que echar mano de su compañero en Google y experto en seguridad web y navegadores Michal Zalewski, muy nombrado últimamente por su escáner de seguridad web Skipfish.

Con la ayuda de Zalewski y de una propiedad exclusiva de Internet Explorer el XSS pudo ser explotado. En ese momento se disponía de un método para evadir la lista blanca, una página de documentación de ayuda instalada por defecto y con un XSS explotable. Al ejecutarse la página en una zona privilegiada tan solo bastaba incluir un comando en la cadena para provocar su ejecución.

¿Acabó aquí?

Hasta ahora está claro que con una URL con el manejador "hcp://" y apropiadamente manipulada se pueden inyectar comandos, pero cuando se invoca a través del navegador el usuario es advertido y aunque es conocida la incapacidad retentiva de la mayoría para hacer click en aceptar, a Ormandy no le pareció una forma elegante de finalizar con su investigación.

Consiguió un método para evitar la atención del usuario mediante el uso de archivos ASX (Advanced Stream Redirector). Windows Media Player 9 usa estos archivos, con estructura XML, para almacenar listas de reproducción. El navegador invoca el reproductor cuando abre un archivo con extensión ".asx". Entre los valores a incluir en dicho archivo uso el elemento "HTMLView" y le dio como valor una URL hacia una página HTML que contiene, ahora si, la URL maliciosa.

No deja de resultar curioso, en este caso en particular, el encadenamiento de explotaciones y descubrimientos que llevan al investigador desde un punto de intuición hasta la consecución de sus objetivos.

Son vulnerables los sistemas Windows XP y Windows Server 2003.

Mike Reavey, director del MSRC de Microsoft ha publicado una respuesta en el blog del MSRC, en la que ofrece una contramedida y explica el poco tiempo que el investigador les ha otorgado, para solucionar el fallo, antes de hacer públicos los detalles.


David García
dgarcia@hispasec.com


Más información:

Microsoft Windows Help Centre Handles Malformed Escape Sequences Incorrectly
http://seclists.org/fulldisclosure/2010/Jun/205

Windows Help Vulnerability Disclosure
http://blogs.technet.com/b/msrc/archive/2010/06/10/windows-help-vulnerability-disclosure.aspx

No hay comentarios:

Publicar un comentario en la entrada