La ráfaga de errores de seguridad que Microsoft abordó con el lanzamiento de actualizaciones de este mes incluye una vulnerabilidad de ejecución remota de código en el navegador web Edge. La falla se basa en abusar de los esquemas URI y los scripts en Windows que pueden ejecutarse con parámetros definidos por el usuario.
Ahora rastreado como CVE-2018-8495, el error fue descubierto por el investigador de seguridad Abdulrahman Al-Qabandi.
Su investigación comenzó a partir de la simple respuesta al esquema URI ‘mailto‘ en Microsoft Edge cuando notó que Outlook se iniciaría con un parámetro personalizado para el escenario actual.
Al buscar en el Registro de Windows los ejecutables que aceptaban comandos definidos por el usuario, Al-Qabandi encontró Windows Script Host (‘WScript.exe‘), que puede ejecutar scripts en varios idiomas.
Al probar el esquema URI ‘wshfile: test‘ en Microsoft Edge, la primera respuesta del sistema operativo fue pedirle al usuario una aplicación para manejar el procedimiento. Windows Script Host (WSH) es el controlador predeterminado.
Armado con un esquema de URI compatible que podría ejecutar archivos ubicados en una ruta definida por el usuario, el investigador probó si al usar el truco de recorrido de ruta el WSH cargaría un VBScript desde una ubicación arbitraria, y el resultado fue positivo.
“¡Impresionante! Ahora podemos apuntar a cualquier archivo en cualquier directorio y siempre que podamos colocar un archivo en una ubicación predecible, tendremos RCE“, explica el investigador en su informe sobre el error.
Sin embargo, Edge como medida de seguridad almacena en caché los archivos en ubicaciones impredecibles, lo que hace que todo el esfuerzo de investigación sea hasta ahora inútil, a menos que haya una manera de hacer que el VBScript llamado a través del código del esquema URI acepte argumentos que podrían elaborarse de una manera tal que permita lanzar archivos en ubicaciones conocidas en el computadora.
Afortunadamente, para los que deseen explotar esta vulnerabilidad, una investigación anterior demostró cómo lograr esto con un VBScript firmado en particular que sufrió de “Inyección WSH” y especificó que existían más casos similares en Windows.
La búsqueda de Al-Qabandi de VBScripts que aceptaban parámetros definidos por el usuario produjo ‘SyncAppvPublishingServer.vbs‘. El archivo también puede ejecutar comandos a través de PowerShell sin filtrarlos.
El proceso es invisible para el usuario, que solo ve el resultado final, porque PowerShell se ejecuta en la línea de comandos con el argumento: ‘-WindowStyle Hidden‘.
Como beneficio adicional, Microsoft Edge no eliminó las comillas, por lo que un atacante podría pasar varios argumentos a “WScript.exe“.
Para demostrar sus hallazgos, Al-Qabandi creó una secuencia de comandos de prueba de concepto (PoC) que incluye una solución para manejar automáticamente el mensaje que le pide al usuario que elija la aplicación que maneja el esquema de URI.
El investigador reveló el problema en privado a Microsoft a través del programa Zero Day Initiative de Trend Micro que maneja la comunicación con los proveedores afectados y asegura la divulgación responsable.