Gmail Cross Site Scripting

El dia de hoy les traigo un pequeño descubrimiento, una vulnerabilidad en el sistema de Presentaciones (para los burros, powerpoint) en linea de Google Mail. El problema es sencillo, y no le tomara mucho tiempo arreglar a los de Mountain View, pero hay algo que me preocupa más. Describire el problema de Gmail rapidamente para poder pasar al detalle del plugin de flash.

Google Slideshows no esta filtrando los hipervinculos de las presentaciones cuyo destino es una URI javascript:, con solo crear un simple enlace, colocarle como destino javascript:alert(1) e insertarlo en la presentacion, es posible ejecutar javascript en el contexto de mail.google.com. Para los que quieran verlo en funcionamiento he preparado un sencillo poc que envia las cookies a un sitio remoto (que no existe), tendrian que enviarse este archivo por correo, y luego verlo en modo de Presentacion desde Gmail.

Aqui es donde entra el detalle, estos enlaces son creados como objetos tipo flash, y son llamados para abrirse en una ventana nueva, mediante el parametro ‘_blank’. Aparentemente cada navegador maneja de manera distinta y son los culpables de este problema. Por ejemplo con este archivo, al clickear el recuadro que enlaza a javascript:alert(document.domain), Firefox, aunque abre una nueva ventana con el contexto about:blank, internamente no actualiza el contexto de ejecucion por completo y es posible acceder a ciertos objetos del DOM (document.cookie, document.domain) pero no a otros (XMLHttpRequest). Opera por otra parte, crea la nueva ventana, pero al ejecutar la javascript uri, lo realiza en la misma ventana donde se origino el evento, comprometiendo completamente el contexto del sitio que hostea el objeto flash. En versiones anteriores de IE, el comportamiento era, abrir una nueva ventana, y el javascript se ejecutaba correctamente como about:blank, pero en las mas recientes, aparece una nueva ventana, y se cierra instantaneamente, sin poder saber que ocurre. En safari el comportamiento es distinto, el navegador aparentemente intenta cargar una pelicula al clickear el recuadro, y queda vacio, pero no ejecuta el javascript.

Actualización: HaDeS preparo y publico un pequeño video en youtube demostrando la falla, y Google ha deshabilitado temporalmente esta caracteristica mientras solucionan el problema.

Firefox 2.0.0.10 released

Mozilla Corporation just released Firefox 2.0.0.10 which includes fixes against JAR uri attacks. This issue affected browsers that used Gecko engine, a quick check showed me that only K-meleon browser was also updated, however there are several Gecko based web browsers that need to get fixed: Gecko-based browsers.

Update: Let’s make that, Firefox 2.0.0.11, which also fixes some regressions.