Investigadores descubrieron una falla en Opera GX, la versión del navegador orientada a juegos, que permitía a un sitio malicioso instalar silenciosamente un complemento y usarlo para extraer datos específicos de las páginas que visita una víctima.
En una prueba de concepto, reconstruyeron la dirección completa de Gmail de un usuario autenticado con una sola visita, sin necesidad de clics. Opera ha parcheado la falla y afirma que no encontró evidencia de que se haya explotado activamente.
La corrección se incluyó en Opera GX versión 130.0.5847.89; cualquier usuario con una versión actual ya está protegido. No se asignó un CVE. Dado que el ataque no requería clics ni aprobaciones, no existía solución alternativa más que la actualización. El equipo de recompensas de Opera clasificó el problema como P1, su máxima gravedad, y pagó el premio máximo de 5,000 dólares por un error crítico.
Cómo funciona el ataque
Los GX Mods permiten personalizar Opera GX con sonidos, temas, fondos de pantalla y CSS que modifican el estilo de los sitios visitados. Se distribuyen como archivos .crx, similares a las extensiones del navegador, pero no pueden ejecutar JavaScript ni tienen permisos.
La debilidad radica en cómo se instalan: el proceso de modding de Opera descarga y activa un mod automáticamente, sin solicitar aprobación. Por lo tanto, una página maliciosa puede instalar uno silenciosamente, por ejemplo, cargando un iframe oculto que apunte a un archivo .crx. La única señal es una barra de notificación debajo de la barra de direcciones que indica que se agregó un mod, con un botón para eliminarlo.
Este comportamiento de instalación automática no es nuevo. El investigador Renwa lo identificó en 2023 y, al escalar un mod instalado a una extensión completa, logró suplantar la barra de direcciones del navegador. Opera parcheó ese ataque específico en marzo de 2023, pero dejó intacta la instalación automática subyacente, que es la base de esta nueva investigación.
Un mod de apariencia silenciosa parece inofensivo por sí mismo. Pero el CSS de un mod se aplica a todas las páginas visitadas, no solo a una. La inyección CSS común se limita a la página donde se inserta; aquí, el estilo del atacante alcanza todos los sitios que abre el navegador, una técnica que los investigadores denominan inyección CSS universal.
CSS no puede leer una página y enviarla por sí solo, pero puede ser manipulado para filtrar un valor pieza por pieza. El truco se basa en selectores de atributos: una regla puede probar si el valor de un atributo de un elemento, como un correo electrónico oculto en un campo, comienza con una letra determinada y obtener una imagen de fondo del servidor del atacante solo cuando coincide. Con suficientes pruebas, se descubre el valor carácter por carácter.
Los investigadores llaman a esto un XS-Leak (filtrado entre sitios). Para obtener una dirección de Gmail, apuntaron a la página de cuenta de Google (myaccount.google.com/contactemail), que contiene la dirección en tres de sus atributos HTML.
Crearon un mod con aproximadamente 150,000 reglas CSS, un conjunto para cada posible combinación de tres letras de la dirección, y permitieron que un script de reconstrucción uniera las coincidencias. Primero probaron con fragmentos de cuatro letras, que requerían 5.6 millones de reglas y unos 880 MB de CSS; el navegador colapsó, así que redujeron a fragmentos de tres letras que se superponen lo suficiente para reensamblar la dirección.
Encadenar todo el proceso requirió solo un pequeño empujón. La víctima llega a la página del atacante, el mod se instala en segundos y unas líneas de JavaScript redirigen el navegador a la página de cuenta de Google. El CSS del mod ya está cargado allí, por lo que dispara las solicitudes y filtra la dirección mientras la página se renderiza, antes de que la víctima pueda alcanzar el botón de eliminar de la notificación.
La dirección de Gmail fue solo la prueba de concepto; el mismo enfoque puede extraer otros valores que una página expone en su marcado, como un nombre de usuario. Además, los investigadores documentaron un segundo uso más tosco: cargar un .crx en modo incógnito bloquea el navegador y descarga todas las pestañas abiertas. Esto afecta también a Opera normal, no solo a Opera GX.
Gravedad y contexto general
El informe casi no recibe la atención que merecía. Opera ejecuta su programa de recompensas en Bugcrowd, y los analistas de triaje inicialmente clasificaron el error como P3, de gravedad media. Los investigadores demostraron su gravedad de manera inusual: mientras un analista reproducía el ataque, capturaron sus propios trigramas, reconstruyeron la dirección de Gmail del analista y la pegaron en el informe. El equipo de Opera elevó entonces la gravedad a P1 y pagó el máximo de 5,000 dólares.
La versión de Opera es más mesurada. En su aviso, la compañía afirma estar "bastante segura" de que la falla nunca se explotó activamente y describe el ataque como complicado de ejecutar: la víctima debía llegar a un sitio malicioso, obtener un mod nuevo e ignorar el aviso de eliminación el tiempo suficiente para que se ejecutara la redirección.
La demostración de los investigadores es el contrapunto. Su redirección se ejecuta en los segundos previos a que un usuario pueda siquiera leer el aviso, y mucho menos hacer clic en Eliminar. Fue un ataque limitado y delicado del que Opera no encontró rastro, pero que funcionó sin clics una vez configurado. El riesgo nunca fue la característica estética en sí misma, sino su alcance: una vez que el CSS de un mod podía seguir al usuario de un sitio a otro, "solo estilo" resultó ser suficiente.
Este es un giro en una idea conocida: el robo solo con CSS normalmente queda atrapado en la página donde se inyecta, como en la investigación de PortSwigger sobre Blind CSS Exfiltration, pero aquí acompañaba al usuario a cada sitio que visitaba. Tampoco es la primera vez que una función de Opera se vuelve contra sus usuarios; The Hacker News cubrió el error MyFlaw de 2024 en Opera My Flow, y Opera ya había sido advertida sobre este comportamiento de instalación automática desde 2023.




















Deja una respuesta