Fallo de diseño en la librería NTDLL.DLL de Microsoft Windows afecta seriamente a compañías de seguridad informática
El equipo de investigación de 48Bits ha identificado una vulnerabilidad en la transformación de las rutas de estilo «DOS» a las rutas de estilo «NT», esta vulnerabilidad está localizada en la función RtlDosPathNameToNtPathName_U, la cual es exportada por la librería NTDLL.DLL.
RtlDosPathNameToNtPathName_U internamente chequea si la ruta dada se encuentra ya en estilo «NT» o está por el contrario en estilo «DOS», llamando respectivamente a las funciones RtlpWin32NTNameToNtPathName_U o RtlGetFullPathName_Ustr. Es en estas funciones donde la sintaxis es comprobada.
Cuando una ruta dada acaba con uno o mas caracteres de espacio, RtlpWin32NTNameToNtPAthName_U los mantiene en la ruta a devolver, por el contrario RtlGetFullPathName_Ustr los elimina, es aquí donde el fallo de diseño entra en juego porque este tipo de rutas no devolveran la ruta real de estilo «NT» , cuando de hecho es posible crear este tipo de archivos.
Cualquier programa que confie en RtlDosPathNameToNtPathName_U para realizar las conversiones entre rutas, es propenso a manejar de manera indebida ficheros con este tipo de rutas.
Muchas de las librerías del propio sistema operativo confían en esta funcion para realizar dichas transformaciones, incluida KERNEL32.DLL, que normalmente es utilizada por aplicaciones de terceros para el manejo de ficheros, otras librerías intermedias como MSVCRT.DLL utilizan a su vez KERNEL32.DLL por lo que también serían vulnerables.
Aunque pueden existir varios vectores de ataque posibles, el equipo de 48Bits ha conseguido explotar satisfactoriamente dos, redirección de ficheros y creación de ficheros no manejables. Es este último caso con el que se ha realizado un test don las principales compañías antivirus y antispyware del mercado viendo como reaccionaban ante ficheros que contuvieran firmas de testing de malware creados con rutas de este estilo. Los resultados son los siguientes:
Antivirus Vulnerables:
* Bitdefender: Residente incapaz de detectar ni desinfectar, bajo demanda incapaz de detectar ni desinfectar.* Norman: Residente incapaz de detectar ni desinfectar, bajo demanda incapaz de detectar ni desinfectar.
* Norton Antivirus (2006): Residente capaz de detectar pero incapaz de desinfectar, bajo demanda incapaz de detectar ni desinfectar.
* Antivir XP: Residente capaz de detectar (sin mostrar alertas) incapaz de desinfectar, bajo demanda incapaz de detectar ni desinfectar
* F-Prot: Residente capaz de detectar pero incapaz de desinfectar, bajo demanda incapaz de detectar ni desinfectar.
* Nod32: Residente capaz de detectar pero incapaz de desinfectar, bajo demanda incapaz de detectar ni desinfectar.
* AVG: Residente capaz de detectar pero incapaz de desinfectar, bajo demanda incapaz de detectar ni desinfectar.
* Avast: Residente capaz de detectar pero incapaz de desinfectar, bajo demanda incapaz de detectar ni desinfectar.
* Kaspersky (Personal 5): Residente capaz de detectar y desinfectar, bajo demanda incapaz de detectar ni desinfectar.
AntiSpyware Vulnerable:
* Spysweeper: Incapaz de detectar ni desinfectar.
* Spybot search and destroy: Incapaz de detectar ni desinfectar.
* Ad-Aware: Incapaz de ddetectar ni desinfectar.
No Vulnerables:
* Panda
* Macaffe
El advisory original y una prueba de concepto los podeís encontrar aquí
Links relacionados (Actualizado):
National Vulnerability Database
Un saludo,
Mario Ballano