El modo protegido de Internet Explorer es, en realidad, el uso de control de integridad aplicado al navegador de Microsoft. Una especie de sandbox. Esta funcionalidad aporta una medida extra de seguridad a Internet Explorer, además de ser, junto a Chrome de los pocos navegadores que la utilizan. Pero en Internet Explorer existe una forma «por diseño» de eludirla. Hemos creado una pequeña herramienta que permite vigilar qué aplicaciones se pueden «saltar» la sandbox.
Desde su versión Vista, Windows implementa MACL («Mandatory Access Control List«). Todos sus objetos tienen un «nivel de integridad» asociado. Normalmente «medio«. Los objetos (procesos, ficheros, carpetas…) que tengan asociado un nivel de integridad «bajo«, no podrán acceder a niveles superiores («medio» o «alto«), mientras que los de nivel «medio» o «alto» sí podrán acceder a los objetos definidos con nivel de integridad «bajo«. Esto deja a los procesos o archivos definidos con nivel de integridad «bajo«, en una especie de sandbox, puesto que no pueden acceder a nada con nivel «medio«… o sea, al disco duro.
¿Cómo se definen estos niveles de integridad?
Aunque es una herramienta muy útil, no existe forma gráfica de hacerlo en Windows. Sólo es posible con la utilidad icacls.exe o a través de APIs específicas en los procesos. Tampoco existen demasiados programas que las utilicen de forma predeterminada. Uno de ellos es Internet Explorer, y al hecho de usarlo en sus procesos, Windows lo llama «Modo protegido«.
Pero claro, ¿cómo es posible grabar a disco algo descargado desde el navegador, o realizar cambios en el sistema, si en teoría con el modo protegido el navegador no puede acceder a esa parte? Tanto Chrome como Internet Explorer manejan el concepto de «broker» que es un proceso en modo de integridad «medio«, que siempre se ejecuta y hace de intermediario para que el navegador no se encuentre totalmente aislado. Esto puede suponer un punto de exposición. ¿Quién es «broker» en Windows? ¿A qué otros programas se les permite actuar de esta manera? Los que están definidos en esta rama de registro:
SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy
Tanto en su versión de LocalMachine como de CurrentUser. La mayoría de las extensiones y plugins de Internet Explorer necesitan de estas políticas de elevación para poder funcionar cómodamente. Si no fuese así, muchas de estos programas integrados en el navegador, esperarían confirmación cada vez que son ejecutados, y aparecería un diálogo como este:
Así que si la rama «Policy» del programa «broker» tiene el valor 3, una instancia del programa que se ejecute con integridad «baja» podrá invocarlo de forma silenciosa (sin que apareciese el diálogo) y manejará la petición en modo de integridad «medio«… lo que supone un peligro. Otras opciones de ejecución de estos programas «brokers» son: el valor 0, que impide que sea lanzado; el valor 1 que haría que se lanzase el proceso desde Internet Explorer siempre con nivel «bajo» sin preguntar; y el nivel 2 que lanzaría el programa con nivel «medio» preguntando.
Una buena parte del adware que se instala en forma de barra en Internet Explorer, también se introduce en esa rama del registro para ejecutarse de forma transparente.
MICBypassCheck
Hemos creado una pequeña herramienta (no demasiado elaborada estéticamente) que, simplemente, recorre esa lista de programas y muestra de forma cómoda sus políticas. Un código de colores ayuda a diferenciar qué política tiene cada programa. Además, marcará en rojo las rutas a programas que no existen. Por ejemplo, ciertos programas desinstalados pueden «olvidar» el eliminar esa rama. Estos pueden ser eliminados sin problemas. El programa también permite grabar un fichero con la información.
Ha sido programado en C# por Sergio de los Santos y necesita .NET 4 para funcionar. Está disponible desde:
Por cierto, durante su elaboración descubrimos algo muy curioso:
Sergio de los Santos
Twitter: @ssantosv
Anónimo dice
Indicar que al ejecutar el programa encuentro 3 claves que no pueden ser accedidas por su utilidad. Obteniendo el mensaje «Acceso denegado al Registro solicitado».
Examinado el registro, dichas claves se corresponden con los siuientes programas:
wermgr.exe, CertEnrollCtrl.exe, TSWbPrxy.exe
Aparentemente todos de Microsoft. ¿Consideran normal que se produzcan dichos errores de acceso al registro? ¿Hay algo que no estoy haciendo correctametne?. Muchas gracias de antemano y por la aplicación.
ssantos dice
No hay problema, es el comportamiento normal.
Anónimo dice
Hola, podríais confirmarme si por diseño este programa verifica también la clave SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Low Rights\ElevationPolicy ???
Lo he probado y elimina las de
SOFTWARE\Microsoft\Internet Explorer\Low Rights\ElevationPolicy
Gracias.