Seguridad

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).

Separación entre contexto de ejecución JavaScript privilegiado (Chrome, interfaz gráfica de Firefox) y no privilegiado (content, donde acostumbramos a que se ejecute JavaScript). Extraído de developer.mozilla.org.



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/

An overview of the script security architecture in Gecko

https://developer.mozilla.org/en-US/docs/Mozilla/Gecko/Script_security

MDN web docs: Add-ons

https://developer.mozilla.org/en-US/Add-ons

Chrome extensions: Overview

https://developer.chrome.com/extensions/overview

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.