Los exploits y mecanismos de ataques son tan simples como depositar un fichero DLL normal (con la funcionalidad maliciosa deseada, generalmente instalar malware) en un recurso externo (disco USB, recurso de red ,etc) que tenga el nombre de una de las librerías mal programadas para ser cargadas en una de las aplicaciones vulnerables y esperar a que desde dicha aplicación se abra o "vaya" a ese directorio. Nótese que en especial no se requiere construir ningún fichero con contenido complejo hábilmente preparado como suele ser habitual en exploits de otras vulnerabilidades.
Ante la explosión de exploits disponibles de cada vez más aplicaciones muy conocidas y para mitigar la proliferación de instalación de malware vía esta familia de vulnerabilidades, Microsoft ha publicado una actualización cuya instalación define un nuevo parámetro de configuración de Windows que permite eliminar el directorio actual del camino de búsqueda o restringir su uso, si bien , esta contramedida está suponiendo problemas colaterales en muchas aplicaciones, algunas de Microsoft, tal y como podemos leer en los siguientes extractos traducidos de la noticia de ISC de SANS y comentarios de lectores:
'Las DLLs más importantes se especifican en una rama del registro (HKLM/System/
Sin embargo, en otros casos, el sistema intenta dinámicamente buscar la DLL. Al principio, Microsoft cometió un error al colocar el directorio actual en el primer lugar de búsqueda (algunos de los antiguos conocedores de Unix recordarán los tiempos cuando "." estaba en el primer lugar de la variable PATH). Microsoft corrigió esto con la introducción del valor del registro SafeDllSearchMode setting (registry value) que espeficica el orden en que una DLL debe buscarse. Por ejemplo, tal y como se especifica en http://msdn.microsoft.com/en-
1. El directorio desde el que se abre la aplicación
2. El directorio de sistema.' [...]
3. 'El directorio de sistema de 16-bit ' [...]
4. 'El directorio de Windows' [...]
5. 'El directorio actual
6. Los directorios especificados en la variable de ambiente PATH. ' [...]
Si varios directorios contiene una DLL con el mismo nombre, el primer ajuste según el order anterior gana. Este ajuste viene establecido por defecto ya en Windows XP SP2.
El problema aparece, por ejemplo, cuando una aplicación intenta cargar una DLL que no existe en el sistema' [..]
'Microsoft ha publicado varios artículos describiendo los detalles de esta vulnrabilidad a la par que describiendo varias contramedidas ["workarounds"]. El boletín principal de seguridad está disponible aquí (2269637).' [..]' También ha publicaod una herramienta que permite crear listas negras de directorios para que no sean utilizados en la carga de librerías. Más información aquí y sobre la herramienta en sí aquí. La herramienta añade un nuevo valor de registro denominado CWDIllegailInDllSearch. '
'[...] si [CWDIllegailInDllSearch] se establece a 0xFFFFFFFF, el directorio actual de ejecuón ya no está en los caminos de búsqueda'
'Hemos establecido CWDIllegalInDllSearchValue=
"HKEY_LOCAL_MACHINE\SOFTWARE\
ya funcionan'
El valor , menos radical que la supresión completa del directorio actual de la ruta en todas las circunstancias, que se está recomendando para el nuevo parámetro CWDIllegailInDllSearch es 0x00000002 ya que bloquea la búsqueda de librerías dinámicas en recursos remotos para las aplicaciones que se han iniciado desde las unidades de disco locales, sirviendo por tanto en principio de protección si se combina esta medida con la de nunca iniciar una aplicación cuyo ejecutable esté en recurso remoto, pero establecer este valor parece que también está generando problemas para ciertas aplicaciones.
Entradas relacionadas:
- [25/08/2010] Microsoft confirma un grave problema de seguridad "compartido" con cientos de aplicaciones de terceros (Hispasec)