viernes, 19 de febrero de 1999

Agujero que permite control total de NT 4.0

Un nuevo problema de seguridad en el sistema operativo Windows
NT 4.0, puede permitir que cualquier usuario con acceso local
a la máquina consiga derechos de administrador.
El conocido grupo L0pht ha hecho público un nuevo problema de
seguridad. No es la primera vez que esta agrupación aparece en
nuestras noticias por este tipo de descubrimientos. Esta vez, el
problema parece ser bastante grave, ya que permitiría a cualquier
usuario local con acceso a una máquina Windows NT 4.0 , lograr
derechos de administrador, independientemente de los permisos
originales que disponga el usuario.

El problema radica en la implementación en Windows NT de una zona
de memoria caché destinada al mapeado de objetos, con el propósito
de cargar librerías de acceso dinámico (dlls) lo más rápido
posible. Esta caché de objetos, se crea con los permisos
necesarios para que el grupo de todos los usuarios tenga control
total sobre ella. Por tanto, y en este punto reside la
vulnerabilidad, es posible borrar objetos de esta caché y
reemplazarlos por otros que apunten a diferentes dlls.

Cuando se crea un proceso, se carga el ejecutable importando las
dlls en el espacio de procesos. Si en esta zona existe un objeto
dll cachéado, se asocia en el espacio de procesos antes que ir al
disco. Por lo tanto, hay una condición explotable cuando un
usuario sin privilegios reemplaza una dll en la caché por una dll
troyana, seguido de un acceso con privilegios lanzando el proceso.
El proceso con privilegios mapeará la dll falsa y su código
ejecutable en beneficio del usuario sin privilegios.

L0pht ha desarrollado una dll troyana basada en el kernel32.dll
para demostrar la vulnerabilidad de esta forma de administrar la
creación de procesos. La dll troyana realiza las llamadas a las
funciones de la dll original, aunque incluye una función DllMain()
diferente, que se ejecuta cuando se carga la librería maligna. Una
aplicación se encarga de sustituir el mapeado al kernel32.dll de
la caché del sistema por la dll maliciosa.

De igual forma, ha desarrollado un parche para cubrir los peligros
de esta vulnerabilidad y que presenta en forma de servicio Win32
para ser instalado por el administrador del sistema. El parche se
configura a sí mismo para ejecutarse cada vez que se inicia el
sistema y antes de que el usuario tenga oportunidad de ejecutar
un programa ajusta los permisos de la caché a unos valores más
seguros.

Todos los detalles técnicos del problema, el modo de funcionamiento
del espacio de memoria en el que se almacenan las dlls o el parche
(y el código fuente) que soluciona la vulnerabilidad se encuentran
en http://www.l0pht.com/advisories.html.

Más información:
Información original del problema: http://www.l0pht.com/advisories.html
Dll troyana: http://www.l0pht.com/advisories/hackdll.zip
Parche: http://www.l0pht.com/advisories/dllfix.zip
System Internals (herramienta WinObj v2.0): http://www.sysinternals.com


Antonio Ropero