Tavis Ormandy, investigador de seguridad del proyecto Zero de Google, también conocido como “el terror de todos los proveedores de software con programas inseguros”, ha demostrado que mediante el mal uso de la simple digitación de texto en un programa inofensivo como el Bloc de Notas, es posible hacerse con el control total de prácticamente todas las versiones actuales de Windows.
El agujero de seguridad, que Microsoft ha clasificado con una puntuación de 7,8, es decir de rango crítico, se ha resuelto con la actualización mensual de parches, “Patch Tuesday”, distribuida anteayer. Después de la disponibilidad del parche, Ormandy publicó una descripción detallada de su hack.
Todo comenzó cuando el investigador de seguridad simplemente quería comprobar si las ventanas de programa con derechos de usuario normales podían enviar comandos a programas que se ejecutaban con derechos de sistema. En realidad, esto no debería ser posible, porque representa una importante brecha de seguridad. Pero como han demostrado las investigaciones de Ormandy, las interacciones complejas y los errores de programación en Windows lo hacen posible, contrariamente a lo que él suponía inicialmente.
Con ello es posible utilizar una vulnerabilidad de Text Services Framework para enviar datos desde ventanas con privilegios de usuario normales a ventanas con privilegios de sistema. Esto, en el contexto correcto, permite a los usuarios normales ejecutar sus comandos con privilegios de administrador. Y esto, a su vez, puede utilizarse para obtener un control total sobre Windows, por ejemplo, para infiltrarse y ejecutar código malicioso.
Más información sobre Tavis Ormandy en Diario TI
Windows Text Services Framework también incluye los llamados IMEs (Input Method Editor), que se instalan automáticamente cuando el usuario elige un idioma de escritura específico. Esto permite, por ejemplo, introducir caracteres chinos o japoneses en teclados occidentales. Para lograr esto, el kernel de Windows genera una interfaz entre un programa – como el Bloc de Notas en el contexto de los derechos normales de usuario – y una ventana que opera con derechos de sistema, que convierte la entrada del usuario en caracteres del idioma del caso.
El proceso asociado se llama CTF (Ormandy no pudo averiguar qué significa esta supuesta abreviatura), se remonta a los tiempos remotos de Windows XP, y no ha cambiado mucho desde Windows Vista. Es muy complejo y, como ha dicho Ormandy, perforado. Además, toda la infraestructura carece totalmente de mecanismos para aplicar o controlar los derechos de acceso.
En este caso, cualquier usuario bajo Windows puede iniciar un proceso CTF y hacer que otras ventanas de programa se conecten a este proceso CTF, manipulado para un ataque. La idea inherente al diseño de esta infraestructura es que las ventanas de Windows deben obedecer dicha solicitud CTF, ya que de lo contrario el cambio del idioma de entrada y sus mecanismos de ayuda, como un IME existente, no funcionará.
Lo anterior también se aplica a los programas que operan con derechos de administrador. Dado que el atacante tiene control sobre el proceso CTF, puede, como simple usuario, transferir su información a un contexto en el que tenga derechos de sistema. Tras este descubrimiento, Ormandy se dio cuenta inmediatamente de que podía utilizarlo para lanzar ataques de escalada de derechos y vulnerar mecanismos de protección como los entornos de sandbox. Comenzó a aplicar ingeniería inversa al protocolo CTF y desarrolló una herramienta de línea de comandos para explotar sus vulnerabilidades.
Las entradas de las ventanas normales son recogidas por programas que se ejecutan con derechos de administrador, pero ¿cómo puede un atacante conseguir que se inicie tal ventana sin derechos de administrador? se preguntó Ormandy. Resulta que cada sistema Windows ejecuta una pantalla de inicio de sesión que, si es necesario, está equipada con derechos de administrador. Y esto se puede acceder con la herramienta CTF de Ormandy.
Resulta que cada sistema Windows ejecuta una pantalla de inicio de sesión que, si es necesario, está dotada de derechos de administrador. Y esto se puede acceder con la herramienta CTF de Ormandy, quien observa que, a fin de cuentas, es posible que el usuario desee utilizar su ayuda de voz al iniciar sesión en el sistema.
Ahora el atacante puede hacer un mal uso de uno de los muchos errores de procesamiento de memoria encontrados por Ormandy en el protocolo CTF para ejecutar código. O, mucho más simple, podría esperar a que un administrador escriba comandos en una línea de comandos y luego manipularlos. Según Ormandy, también puede dirigir el comando “Iniciar como administrador” del Control de Acceso de Usuarios de Windows (UAC) con CTF e iniciar sus programas de esta manera con privilegios de sistema sin necesidad de introducir un usuario.
Microsoft ha corregido la vulnerabilidad, identificada por Microsoft como “CVE-2019-1162”, con la actualización del martes por la tarde en todas las versiones de Windows compatibles. Sin embargo, basándose en los comentarios de Ormandy, parece casi seguro que hay más agujeros en el antiguo código de la CTF. Después de todo, un atacante no puede ejecutar daño externo sólo con esta brecha. Debe haber penetrado ya en un sistema y debe ser capaz de ejecutar código. Por lo tanto, la brecha sólo funciona para ampliar los derechos de los usuarios.
Ilustración: captura del blog de Tavis Ormandy