Un investigador demuestra cómo errores puramente lógicos bastaron para escapar del sandbox de Microsoft Edge y ganar 175.000 dólares en Pwn2Own

Una cadena de fallos lógicos, sin ningún tipo de corrupción de memoria, puede transformar una página web maliciosa en código que se ejecuta en un equipo Windows fuera del sandbox de Microsoft Edge, según ha demostrado un investigador de seguridad.

Orange Tsai, de DEVCORE, hizo público el método completo el 28 de octubre, cinco meses después de que esa misma cadena se hiciera con 175.000 dólares en el concurso Pwn2Own celebrado en Berlín en mayo. Microsoft corrigió los fallos de Edge al día siguiente del certamen, de modo que un navegador actualizado no corre riesgo.

Qué es el sandbox y por qué importa esta cadena

El sandbox del navegador es la barrera que confina el código de una página web dentro del navegador y lo mantiene alejado del resto del ordenador. Romper esa barrera y, después, ejecutar un programa es lo que convierte un fallo web en el control total de la máquina.

Las fugas de navegador de este tipo dependen casi siempre de corrupción de memoria. Esta no empleó ninguna. En su análisis, Tsai describe una cadena construida únicamente con errores lógicos en la forma en que Edge y Windows gestionan funciones corrientes, y asegura que todo el exploit ocupa menos de 100 líneas de código.

El resultado es un primitivo de cross-site scripting universal (UXSS): una vía para ejecutar JavaScript en cualquier sitio web, saltándose la política de seguridad de contenido que debería impedirlo.

Como el ataque parte del propio proceso del navegador, puede alcanzar sitios como google.com a los que un fallo web ordinario no llegaría. Tsai lo describe como una nueva superficie de ataque y no como un error aislado.

Un exploit de competición, no un ataque real

Se trató de un exploit de concurso, no de un ataque observado en la naturaleza. Tsai lo demostró en el escenario de Pwn2Own; no hay evidencia de que se haya usado contra usuarios reales y los registros públicos de CVE indican que no ha sido explotado. Uno de los pasos de la cadena reinicia el navegador, algo que Tsai señala como una comodidad para el certamen y que no resultaría necesario en un ataque real.

Cómo arranca la cadena: el limitador de navegación de acceso condicional

La cadena comienza con una función de Edge para inicios de sesión empresariales llamada limitador de navegación de acceso condicional. Tsai descubrió que activarla permite que el propio proceso del navegador inicie una nueva navegación no vinculada a la página que la solicitó, por lo que Edge la asocia a la pestaña que esté abierta en ese momento. Esa discrepancia constituye el primer error y produce el UXSS.

Lograr que se ejecutara sin un clic exigió cuatro debilidades adicionales. Edge verificaba que la solicitud procediera de un sitio de Microsoft de confianza, pero Tsai eludió la comprobación abriendo la solicitud desde una segunda ventana. El bloqueador de ventanas emergentes de Edge debería haber frenado esa ventana, pero Edge incluía una lista codificada de direcciones permitidas y una de ellas abrió la ventana emergente.

El ataque también requería que la víctima ya estuviera autenticada, algo que la función de inicio de sesión automático de Edge proporciona por sí sola cuando el usuario visita un sitio de Microsoft. Por último, la cadena lee la dirección de correo electrónico de la víctima desde un sitio de Microsoft, assets.msn.com, que la devolvía a cualquier sitio web debido a una configuración incorrecta de origen cruzado.

Del JavaScript universal a la ejecución de código

Ejecutar JavaScript en todas partes todavía no equivale a controlar el ordenador. Para escapar del sandbox, Tsai recurrió al modo de lectura de Edge, Immersive Reader, que se ejecuta bajo una dirección personalizada read:// que Microsoft dejó fuera de la lista de páginas prohibidas para ejecutar scripts.

Desde allí, la cadena invocó una función interna de Edge destinada a comprimir registros de diagnóstico y la aprovechó para escribir un archivo con nombre y contenido elegidos por el atacante en cualquier lugar del disco.

Esa escritura de archivo se convierte en ejecución de código en dos pasos. La cadena sobrescribe un archivo de configuración que determina qué sitios web pueden lanzar qué manejadores de protocolo y luego reinicia Edge para que se lea ese archivo. Después lanza un enlace telnet://; como Windows no incluye un programa telnet por defecto, busca uno en la ruta del sistema y ejecuta una copia plantada por el atacante desde una carpeta en la que un usuario con bajos privilegios puede escribir.

Parche y puntuaciones

Microsoft publicó la corrección el 15 de mayo, un día después del concurso, en la versión estable de Edge 148.0.3967.70. Esa versión incorporaba tres correcciones específicas de Edge, registradas como CVE-2026-45492, CVE-2026-45494 y CVE-2026-45495. La primera figura como omisión de una característica de seguridad y la segunda como error de suplantación, ambas afectando a versiones de Edge anteriores a 148.0.3967.70.

Los registros de Microsoft califican las dos primeras con 5,4 sobre 10, una puntuación media que refleja un solo error aislado y no la cadena completa que los encadena hasta la ejecución de código. DEVCORE afirmó que la corrección llegó en menos de 24 horas desde la divulgación.

Actualizar Edge cierra esta cadena. Dado que la corrección se publicó en mayo, un navegador con actualizaciones automáticas ya la recibió hace tiempo y no hace falta ninguna acción adicional.

Investigación humana y reconocimiento

Tsai construyó la cadena a mano, a lo largo de unos dos meses, sin ninguna ayuda de inteligencia artificial, y presenta el trabajo como un argumento sobre dónde sigue importando la investigación humana.

Lo difícil es encontrarlos, y una vez que los encuentras todos, encadenarlos es la parte más fácil.

La investigación obtuvo el Premio Pwnie 2026 a la hazaña épica.

Cybersecurity
Cybersecurity
Cybersecurity
Cybersecurity

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *