Blog

Secuestro de DLLs (DLL Hijacking)
Publicado por Florencio Cano
24/08/2010

La empresa eslovena de seguridad informática ACROS Security(external link) publicó el 18 de agosto un (aparentemente) nuevo tipo de vulnerabilidad que puede ser explotada remotamente y que ellos han denominado “binary planting”, que viene a significar “plantado de binarios”. Su advisory(external link) describe una vulnerabilidad en iTunes versión 9.0.3.15 para Windows XP, Vista y 7, que, según su advisory, permite a atacantes locales y remotos desplegar y ejecutar código malicioso en el contexto del usuario logueado.

La vulnerabilidad existe debido a la manera que tiene Windows de cargar las DLL (Dynamic Loading Library).

Las DLL más importantes están especificadas en la clave del registro “KnownDLLs” (HKLM/System/CurrentControlSet/Control/Session Manager/KnownDLLs). Cuando una aplicación necesita una de estas DLL sabe que debe buscarlas en el directorio especificado en la clave del registro “DllDirectory” (que es habitualmente SystemRoot/system32).

Sin embargo, cuando una aplicación necesita una DLL que no está entre las más importantes (y por tanto no está en la clave KnownDLLs), Windows trata de encontrarla dinámicamente siguiendo unas reglas(external link) por defecto. Windows mirará en los siguientes lugares en el orden indicado finalizando con la primera coincidencia que encuentre:


  1. El directorio donde está la aplicación

  2. El directorio del sistema. Valor de retorno de la función GetSystemDirectory()

  3. El directorio del sistema de 16 bits

  4. El directorio de Windows. Valor de retorno de la función GetWindowsDirectory()

  5. El directorio actual (Current Working Directory)

  6. Los directorios listados en la variable de entorno PATH

Por lo tanto, podría darse el siguiente escenario de ejemplo. Un fichero .XYZ (formato muy conocido y difundido que por ejemplo se utiliza para almacenar fotos o música) que se abre con la aplicación vulnerable XYZReader. La aplicación es vulnerable porque intenta cargar la DLL MyDLL.dll pero ésta no existe. Introducimos el fichero, real e inofensivo, mifoto.xyz junto a otros muchos ficheros y una DLL maliciosa a la que ponemos el nombre MyDLL.dll. Cuando el usuario trata de abrir el fichero mifoto.xyz se ejecutará XYZReader que a su vez tratará de cargar la DLL MyDLL.dll y, como no la encuentra en los directorios iniciales, finalmente la cargará del directorio actual, cargando la DLL maliciosa.

Esta vulnerabilidad, que también podría denominarse “DLL in the middle”, nos recuerda a aquella vulnerabilidad(external link) en sistemas UNIX consecuencia de poner el directorio actual “.” el primero en el PATH.

Comentarios (0)


Deja tu comentario

Nombre: *
Email: * (No saldrá publicado)
Website:
Comentario: *
simple_captcha.jpg
(Escribe el código en la casilla)

En cumplimiento de lo dispuesto en la Ley Orgánica 15/1999 de 13 de diciembre de Protección de Datos de Carácter Personal (LOPD), SEGURIDAD INFORMATICA Y HACKING ETICO, S.L. es responsable y único destinatario de los datos de carácter personal que nos proporcione al rellenar este formulario, que serán tratados únicamente con la finalidad de atender su solicitud o comentario. Pulsando el botón de 'Enviar' usted consiente el tratamiento de sus datos para estos fines, pudiendo acceder a sus datos, rectificarlos, cancelarlos u oponerse a su tratamiento en los términos y en las condiciones previstas en la LOPD, dirigiéndose a nosotros a través del formulario de contacto.