Fallo de seguridad en la carga dinámica de librerías en Windows

Fecha de Publicación: 2010-08-24 10:36:00

Sistemas Afectados

    Multitud de aplicaciones para Windows

Detalle

Esta vulnerabilidad se produce cuando un tipo de archivo vulnerable es abierto desde dentro de un directorio controlado por el atacante. Este directorio puede ser una unidad USB, un recurso compartido en red o WebDAV. En la mayoría de los casos, el usuario tendrá que ir al directorio y después abrir dicho archivo. El fallo reside en la aplicación encargada de gestionar dicho fichero que cargará una DLL desde el directorio de trabajo.

Cuando una aplicación carga dinámicamente una librería de enlace dinámico (DLL) sin especificar un nombre de ruta de acceso completa, Windows intenta localizar el archivo DLL mediante la búsqueda en una serie de directorios definidos. Si un atacante obtiene el control de uno de los directorios, pueden forzar a la aplicación a cargar una copia de una DLL maliciosa en lugar de la DLL que la apliCacion esperaba. Estos ataques se conocen como «ataques de precarga DLL» y son comunes en la mayoría de sistemas operativos que soportan carga dinámica de librerías compartidas.

El siguiente sería un ejemplo de carga de librería de forma insegura:

DWORD retval = SearchPath(NULL, "schannel", ".dll", err, result, NULL);
HMODULE handle = LoadLibrary(result);

De acuerdo con la función anterior, la aplicación buscará «schannel.dll» por medio de la ruta de búsqueda menos segura. Si un atacante puede poner schannel.dll en CWD (Current Working Directory), se cargará incluso antes de que la aplicación busque los directorios de Windows para la librería adecuada.

Esta vulnerabilidad, por tanto, puede ser explotada mediante el envío al usuario de un enlace a un recurso compartido, por ejemplo, \servidorpeliculas junto con un conjunto de ficheros que se vean afectados por esta vulnerabilidad. El usuario intentará abrir cualquiera de esos ficheros, por ejemplo un fichero multimedia, y el programa encargado de reproducirlo cargará una o mas DLL que contendrán el código malicioso. iTunes se vio afectado por este fallo de seguridad la semana pasada pero se ha descubierto que la mayoría de las aplicaciones para Windows tienen esta vulnerabilidad también.

Al parecer, dicho fallo de seguridad fue descubierto la semana pasada al investigar sobre la vulnerabilidad .lnk por el experto de seguridad HD Moore; pero según afirma este, a principios de este año, Taeho Kwon y Zhendong Su de la Universidad de California, publicaron un documento titulado «Automatic Detection of Vulnerable Dynamic Component Loadings» donde ya se describían las diferentes variantes de DLL hijacking además de mostrarse una lista de aplicaciones vulnerables.

Microsoft recomienda que los desarrolladores de software definan con claridad desde dónde van a cargar librerías específicas y ha publicado recientemente un artículo para MSDN denominado «Dynamic-Link Library Security» que proporciona orientación a los desarrolladores sobre cómo cargar las librerías de manera segura. De forma genérica las recomendaciones son:

  • Siempre que sea posible, utilice un nombre de ruta de acceso completa al cargar una librería;
  • Elimine el directorio actual de la ruta de búsqueda mediante el uso de SetDLLDirectory;
  • No utilizar SearchPath para ubicar una librería.
  • No cargar librerías exclusivamente para identificar la versión de Windows. En su lugar, utilice GetVersionEx, o una función similar que ofrece la API de Windows.

Microsoft ha elaborado recientemente un documento para orientar y ayudar a los desarrolladores a entender este problema.

Mientras los fabricantes de software afectado desarrollen parches para solucionar el problema, se recomienda llevar a cabo las soluciones temporales propuestas por Microsoft y comentadas en el presente aviso técnico

Solución

Microsoft ha publicado una solución provisional para deshabilitar la carga de librerías de WebDAV y recursos compartidos remotos hasta que esté disponible una actualización de seguridad que ayude a solucionar y bloquear parte de los ataques conocidos hasta el momento.

Para mayor seguridad puede deshabilitarse el cliente WebDaV mediante los siguientes pasos:

  • Pulsar en inicio -> ejecutar y escribir Services.msc
  • Botón derecho sobre WebClient y selecionar propiedades
  • Cambiar el tipo de inicio a Disable. En el caso de que esté ejecutándose pulsar Stop

Nota: Después de aplicar esta solución todavía es posible para un atacante remoto explotar esta vulnerabilidad provocando que Microsoft Office Outlook ejecute programas ubicados en el ordenador del usuario o en la red de área local (LAN) aunque se les pedirá confirmación antes de ejecutar dichos programas desde Internet.

Otra solución adicional consistiría en bloquear los puertos 139 y 445 en el cortafuegos. Estos puertos se utilizan para iniciar una conexión con el componente afectado. Microsoft recomienda bloquear toda comunicación entrante no solicitada desde Internet para impedir ataques que puedan utilizar otros puertos.

Deja una respuesta

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

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.