Ataques XSS y JavaScript privilegiado: Vulnerabilidad en Firefox
Mozilla Firefox no protege adecuadamente de ataques XSS en el código JavaScript privilegiado usado internamente por el navegador, principalmente en su propia interfaz gráfica
Así es, hay código JavaScript privilegiado corriendo en los navegadores modernos. Tanto Google Chrome como Mozilla Firefox usan JavaScript en la programación de sus interfaces de usuario. Por privilegiado nos referimos a código que tiene acceso a las páginas abiertas en el navegador, el sistema de archivos... Hay distintos contextos de ejecución dentro del código privilegiado (algunos más restringidos que otros), siendo uno de los más interesantes por permitir introducir código externo es el de las extensiones del navegador.
En este caso, nos encontramos con una vulnerabilidad de Mozilla Firefox por no restringir la introducción de código JavaScript embebido en los documentos web que corren código privilegiado. Específicamente, el llamado 'chrome code', que no es más que código JavaScript especialmente privilegiado usado en la interfaz gráfica de Firefox (en la barra de estado, los menús... A toda esta parte se le llama Chrome).
Tras analizar superficialmente la vulnerabilidad, no está claro de qué forma sería explotable (sólo si la interfaz gráfica ya tiene una vulnerabilidad XSS). Los de Cisco afirman que basta con convencer a un usuario para que abra un link o un archivo especialmente diseñado. La descripción de la vulnerabilidad es especialmente vaga en cuanto a los términos de su explotación... Tras contactar con el investigador original de la vulnerabilidad, Johann Hofmann, éste nos confirma que la descripción es intencionalmente vaga, debido a que algunos usuarios tardan en actualizar. Dicho esto y viendo que los de Mozilla evalúan como crítica la vulnerabilidad , podemos imaginar que los de Cisco quizás no se equivoquen...
El parche a esta vulnerabilidad no se ha hecho esperar, y ya en la versión 58.0.1 está corregido el fallo. Según sus declaraciones, lo ideal sería usar CSP (políticas de seguridad respecto al contenido de los documentos web, configurables) en una de sus configuraciones más estrictas, para evitar JavaScript embebido en los documentos web que corren 'chrome code'. Pero por desgracia, tienen bastante de ésto en el código fuente de Firefox, y no es plausible a corto plazo. Así que se conforman con sanear la creación de nuevas etiquetas HTML para que no contengan JavaScript embebido.
Es posible que todo esto te haya sonado a chino, y no es de extrañar. Un navegador web modernos es de las piezas más complejas en cuanto a ingeniería de software. Y lo tienes gratis, al alcance de tus dedos :)
https://developer.mozilla.org/en-US/docs/Mozilla/Gecko/Script_security
https://developer.mozilla.org/en-US/Add-ons
https://developer.chrome.com/extensions/overview
Así es, hay código JavaScript privilegiado corriendo en los navegadores modernos. Tanto Google Chrome como Mozilla Firefox usan JavaScript en la programación de sus interfaces de usuario. Por privilegiado nos referimos a código que tiene acceso a las páginas abiertas en el navegador, el sistema de archivos... Hay distintos contextos de ejecución dentro del código privilegiado (algunos más restringidos que otros), siendo uno de los más interesantes por permitir introducir código externo es el de las extensiones del navegador.
En este caso, nos encontramos con una vulnerabilidad de Mozilla Firefox por no restringir la introducción de código JavaScript embebido en los documentos web que corren código privilegiado. Específicamente, el llamado 'chrome code', que no es más que código JavaScript especialmente privilegiado usado en la interfaz gráfica de Firefox (en la barra de estado, los menús... A toda esta parte se le llama Chrome).
Tras analizar superficialmente la vulnerabilidad, no está claro de qué forma sería explotable (sólo si la interfaz gráfica ya tiene una vulnerabilidad XSS). Los de Cisco afirman que basta con convencer a un usuario para que abra un link o un archivo especialmente diseñado. La descripción de la vulnerabilidad es especialmente vaga en cuanto a los términos de su explotación... Tras contactar con el investigador original de la vulnerabilidad, Johann Hofmann, éste nos confirma que la descripción es intencionalmente vaga, debido a que algunos usuarios tardan en actualizar. Dicho esto y viendo que los de Mozilla evalúan como crítica la vulnerabilidad , podemos imaginar que los de Cisco quizás no se equivoquen...
El parche a esta vulnerabilidad no se ha hecho esperar, y ya en la versión 58.0.1 está corregido el fallo. Según sus declaraciones, lo ideal sería usar CSP (políticas de seguridad respecto al contenido de los documentos web, configurables) en una de sus configuraciones más estrictas, para evitar JavaScript embebido en los documentos web que corren 'chrome code'. Pero por desgracia, tienen bastante de ésto en el código fuente de Firefox, y no es plausible a corto plazo. Así que se conforman con sanear la creación de nuevas etiquetas HTML para que no contengan JavaScript embebido.
Es posible que todo esto te haya sonado a chino, y no es de extrañar. Un navegador web modernos es de las piezas más complejas en cuanto a ingeniería de software. Y lo tienes gratis, al alcance de tus dedos :)
Carlos Ledesma
Más información:
Arbitrary code execution through unsanitized browser UI
https://www.mozilla.org/en-US/security/advisories/mfsa2018-05/
https://www.mozilla.org/en-US/security/advisories/mfsa2018-05/
An overview of the script security architecture in Gecko
MDN web docs: Add-ons
Chrome extensions: Overview
Via: unaaldia.hispasec.com
Ataques XSS y JavaScript privilegiado: Vulnerabilidad en Firefox
Reviewed by Zion3R
on
5:46
Rating: