El fallo afecta a todas las versiones desde Windows XP, permitiendo leer y escribir comunicaciones de MSCTF para escapar de un sandbox y escalar privilegios
El equipo de seguridad Google Project Zero ha descubierto que la comunicación entre servidor y cliente del servicio Ctfmon es insegura, siendo empleada por el Text Services Framework (TSF), responsable de notificar a las aplicaciones de cambios en el mapeado de teclado y el método de entrada.
Los fallos descubiertos permiten conectarse a una sesión CTF para leer el texto que se introduce en cualquier ventana (incluyendo contraseñas) y manipular su entrada, aunque pertenezca a otra sesión. Este error permite a un usuario sin permisos esperar a que el administrador se encuentre disponible para escalar privilegios. El fallo también puede ser aprovechado por aplicaciones que usan el sandbox AppContainer para comunicarse con otras aplicaciones fuera del sandbox.
Los fallos en Ctfmon dejan inservible el User Interface Privilege Isolation (UIPI) introducido en Windows Vista, permitiendo entre otras cosas tomar el control de la ventana de consentimiento (UAC). Como puede comprobarse en el siguiente vídeo puede ser usado para escalar privilegios en el sistema.
El problema no es debido a una única vulnerabilidad, sino del mismo protocolo CTF. Al no requerirse ningún tipo de autenticación, pudiendo conectarse a cualquier sesión existente, se puede obtener el control completo sobre cualquier comunicación. Lo único que se solicita al conectarse a una sesión es el id del hilo, el id de proceso y el HWND (el ID de ventana) empleado por la sesión, pudiendo el cliente mentir sin que MSCTF compruebe si es cierto.
Hay disponible en Github una herramienta para comprobar posibles explotaciones en el protocolo CTF, con ejemplos para cualquier versión de Windows que utilice este servicio.