Personal information:

A Coruña, Galicia, Spain

viernes, 10 de septiembre de 2010

HP Data Protector Media Operations 6.11 NULL Pointer Dereference Local DoS

Os traigo un bug en este conjunto de aplicaciones de Hewlett-Packard, el cúal provoca una denegación de servicio a sus usuarios legítimos si estos intentan operar con un fichero especialmente creado para el tema.

El fallo reside en los módulos "DBTools.exe" y "DBServer.exe", únicamente explotable de forma local en los dos casos.

Una breve y rápida descripción de como manipular dicho fichero, sería decir que se trata de el formato ".4DC" (.4DC - 4th Dimension provide software
solutions to business problems),cuyo header está compuesto por 0x24 bytes que contiene el Signature, comienzo del Image Data,etc... y concretamente, el offset +8 es usado como un puntero a una zona del propio fichero en donde guarda un valor que representa el número maximo de secciones que tiene(no estoy seguro de que es exactamente :( ):



Manipulando los bytes contenidos en el offset al que apunta, ejecutándo los módulos y cargando nuestro archivo, podremos comenzar a depurar.

Traceando podremos llega la zona en la que se realiza el siguiente CALL; y vemos en el stack la variable [ESP+14] que es igual a 0x00000000:



En una situación normal, veríamos que el CALL anterior encuentra lo que anda buscando usando el WORD que contiene nuestro byte como índice en una estructura de datos (ignorando el posible integer overflow :) ):



Si tiene éxito, la variable [ESP+14] cambiará su valor; pero cambiando dicho byte a un valor de los siguientes [0x1-0xA], ambos inclusive, el CALL anterior no tendrá éxito, y [ESP+14] seguirá siendo NULL:



Más adelante este valor se carga en EAX y es desreferenciado , provocando un "crash" de la aplicación:



En el caso de "DBTools.exe" basta con ejecutarlo y abrir el fichero.
En "DBServer.exe", tendríamos que sustituirlo en su directorio de instalación, ya que lo carga automáticamente al iniciarse la aplicación.

Un apunte, "DBServer.exe" por defecto es autoiniciado con el SO como SYSTEM, así que en el caso de ejecutar algún tipo de código arbitrario podría producirse un Privilege Escalation.

Podréis encontrar un PoC aquí.


-H4ppyH4ck1n9-

No hay comentarios:

Publicar un comentario