martes, 24 de agosto de 2010

Microsoft confirma un grave problema de seguridad "compartido" con cientos de aplicaciones de terceros

HD Moore, líder del proyecto Metasploit, destapaba hace algunos días un problema de seguridad en decenas de aplicaciones de terceros cuando eran ejecutadas sobre Windows. Aunque la raíz del problema es, en realidad, una programación insegura de las aplicaciones, dada la magnitud del problema Microsoft ha publicado un aviso de seguridad con instrucciones para mitigar el fallo.

Moore identificaba el fallo mientras estaba investigando el grave problema en archivos LNK que fue conocido en Windows hace algunos días. A su vez Acros, una compañía de seguridad eslovena, hablaba de una vulnerabilidad en iTunes por la que, si se abría un archivo asociado a iTunes desde una ubicación remota, iTunes podría llegar a cargar más DLLs desde esa ubicación. HD Moore comenzó a buscar más aplicaciones que se comportasen de este modo.

Así, el problema está en múltiples aplicaciones de terceros (y propias) para Windows a la hora de cargar librerías dinámicas (archivos DLL). Si las aplicaciones no especifican las rutas completas de las librerías que necesitan, Windows podría llegar, en su búsqueda, a "encontrar" primero las librerías de los atacantes y ejecutarlas. Al principio Moore identificó unas cuarenta aplicaciones, pero en estos momentos se conocen cientos. El número, además, será mayor con el tiempo.

Todas estas herramientas no han seguido ciertas recomendaciones de seguridad a la hora de ser programas. Por tanto, un atacante podría llegar a ejecutar código si incita al usuario a abrir con una aplicación vulnerable un archivo desde una ubicación remota (compartida a través de WebDAV, SMB) o incluso una llave USB. La novedad es que el archivo abierto no tiene por qué contener ningún exploit. La única condición es que el atacante pueda escribir una librería en la misma ruta donde se encuentra el archivo que se quiere abrir, y el programa vulnerable se encargará de cargarla.

Este tipo de ataques son denominados "binary planting", "DLL preloading" o "DLL Hijacking" y pueden verse como una nueva variante de los ataques de ruta (PATH): a no ser que se especifique exactamente la ruta de los binarios, no se sabe qué se está ejecutando; bien porque exista un archivo con un mismo nombre en un directorio, bien porque se encuentre en el PATH de sistema o, como en este caso, bien porque la aplicación llame a DLLs que no son las legítimas.

Windows arrastró este histórico error durante mucho tiempo. Pero una de las (muchas) mejoras de seguridad introducidas desde Windows XP SP1, es que por defecto, se mejora el orden de la búsqueda de librerías con el parámetro SafeDllSearchMode activado... pero el problema se da cuando las librerías no existen en el sistema y no se especifica ruta completa... el programa va a buscarlas en remoto y el atacante podría cargar así las que quisiera.

Microsoft ha creado una guía de buenas prácticas para programadores y sobre cómo cargar de forma segura librerías dinámicas, disponible desde:
http://msdn.microsoft.com/en-us/library/ff919712(VS.85).aspx

El problema es muy grave, puesto que resulta utópico creer que el increíble número de aplicaciones vulnerables solucionarán este fallo en un periodo de tiempo razonable. Así que Microsoft anuncia contramedidas para mitigar el fallo. No se trata de una solución en forma de parche, puesto que bloquear por completo un comportamiento adquirido durante años por los programadores, solo podría causar problemas. De hecho, la introducción de SafeDllSearchMode hace 8 años "ya" podría considerarse como la solución. En todo caso, en el aviso se dan instrucciones precisas a los administradores para deshabilitar la carga insegura de librerías por aplicación o globalmente. También se recomienda, si no es necesario, detener el servicio "Cliente web" del sistema.

Por su parte, HD Moore ha publicado una herramienta para determinar si una aplicación hace uso de este tipo de técnicas y, por tanto, es susceptible de ser usada como vector de ataque. En estos momentos, están apareciendo aplicaciones vulnerables por decenas.

Además, varios programas propios de Microsoft son también vulnerables, como Office, Mail...

Ya están apareciendo exploits públicos que permiten aprovechar el fallo con todo tipo de aplicaciones, por ejemplo, al abrir un inocente archivo Office desde una unidad remota.


Sergio de los Santos
ssantos@hispasec.com


Más información:

Dynamic-Link Library Security
http://msdn.microsoft.com/en-us/library/ff919712(VS.85).aspx

Application DLL Load Hijacking
http://blog.rapid7.com/?p=5325

Insecure Library Loading Could Allow Remote Code Execution
http://www.microsoft.com/technet/security/advisory/2269637.mspx

No hay comentarios:

Publicar un comentario en la entrada