Opera GX-fout laat kwaadaardige sites automatisch mods installeren om gegevens van bezochte pagina’s te stelen

Onderzoekers ontdekten een fout in Opera GX, de op gaming gerichte versie van de Opera-browser, waardoor een kwaadwillende website stilletjes een browser-add-on kon installeren en deze kon gebruiken om specifieke gegevens van de pagina’s die een slachtoffer bezoekt te halen.

In een proof of concept reconstrueerden ze het volledige Gmail-adres van een ingelogde gebruiker vanuit één bezoek, zonder klik. Opera heeft de fout verholpen en zegt geen bewijs te hebben gevonden dat het ooit in het wild is gebruikt.

De oplossing werd geleverd in Opera GX versie 130.0.5847.89, dus iedereen met een huidige build is al gedekt; u kunt de uwe bevestigen op opera://about. Er is geen CVE.

Omdat de aanval geen klikken of goedkeuringen nodig had, was er behalve de patch geen oplossing. Het bugbounty-team van Opera beoordeelde het probleem als P1, de hoogste ernst ervan, en betaalde de maximale beloning van $ 5.000 voor een kritieke bug.

Hoe de aanval werkt

Met GX Mods kunt u Opera GX een nieuwe look geven met aangepaste geluiden, thema’s, achtergronden en CSS die de sites die u bezoekt een nieuwe stijl geven. Ze worden verzonden als .crx-bestanden, zoals browserextensies, maar ze kunnen geen JavaScript uitvoeren en hebben geen rechten.

De zwakte zit hem in de manier waarop ze worden geïnstalleerd: de mod-pijplijn van Opera wordt automatisch gedownload en ingeschakeld, zonder goedkeuringsprompt. Een kwaadwillende pagina kan er dus een in stilte installeren, bijvoorbeeld door een verborgen iframe te laden dat naar een .crx-bestand verwijst.

Het enige teken is een meldingsbalk onder de adresbalk die aangeeft dat er een mod is toegevoegd, met een knop Verwijderen.

Dit automatische installatiegedrag is niet nieuw. De onderzoeker Renwa identificeerde het in 2023 en gebruikte het, door een geïnstalleerde mod te escaleren naar een volledige extensie, om de adresbalk van de browser te vervalsen. Opera heeft die specifieke aanval in maart 2023 gepatcht, maar de onderliggende automatische installatie behouden gelaten, waarop dit nieuwe onderzoek voortbouwt.

Een stille look-and-feel-mod klinkt op zichzelf onschadelijk. Maar de CSS van een mod wordt toegepast op elke pagina die u bezoekt, niet slechts op één. Gewone CSS-injectie is beperkt tot de pagina waarop deze terechtkomt; hier bereikt de stijl van de aanvaller elke site die de browser opent, een techniek die de onderzoekers een universele CSS-injectie noemen.

CSS kan een pagina niet zelf lezen en verzenden. Maar het kan worden overgehaald om stuk voor stuk een waarde te lekken. De truc is gebaseerd op attribuutkiezers: een regel kan testen of de attribuutwaarde van een element, zoals een e-mail die in een verborgen veld is weggestopt, begint met een bepaalde letter, en kan pas een achtergrondafbeelding van de server van de aanvaller ophalen als dat het geval is. Vuur genoeg hiervan af en je leert de waarde karakter voor karakter kennen.

Onderzoekers noemen dit een XS-lekafkorting van cross-site lek. Om een ​​Gmail-adres te achterhalen, richtten de onderzoekers dit op een Google-accountpagina, myaccount.google.com/contactemail, waarop het adres in drie van de HTML-attributen staat.

Ze pakten een mod in met grofweg 150.000 CSS-regels, één set voor elk mogelijk drieletterig stukje van het adres, en lieten een reconstructiescript de overeenkomsten weer aan elkaar plakken. Ze probeerden eerst stukken van vier letters, waarvoor 5,6 miljoen regels en ongeveer 880 MB CSS nodig waren. De browser verslikte zich, dus werden ze verkleind tot stukjes van drie letters die elkaar net genoeg overlappen om ze weer in elkaar te kunnen zetten.

Het aan elkaar koppelen ervan kostte slechts een duwtje in de rug. Het slachtoffer komt op de pagina van de aanvaller terecht, de mod wordt binnen enkele seconden geïnstalleerd en een paar regels JavaScript leiden de browser vervolgens door naar de Google-accountpagina. De CSS van de mod is daar al geladen, dus het activeert de verzoeken en lekt het adres terwijl de pagina wordt weergegeven, voordat het slachtoffer de knop Verwijderen van de melding kan bereiken.

Het Gmail-adres was slechts het proof of concept; dezelfde aanpak kan andere waarden verhogen die een pagina in de opmaak weergeeft, zoals een gebruikersnaam.

Hetzelfde pad voor automatische installatie kent een tweede, grover gebruik, zo hebben de onderzoekers gedocumenteerd: het laden van een .crx terwijl deze zich in de privémodus (incognito) bevindt, crasht de browser en dumpt elk geopend tabblad. Deze treft ook reguliere Opera, en niet alleen Opera GX, aangezien elke .crx de extensie-installatiepijplijn activeert, wat deze ook bevat. Het advies van Opera gaat in op de oplossing voor gegevensdiefstal en vermeldt de crash niet.

Ernst en het grotere geheel

Het rapport kreeg bijna zijn doel niet. Opera voert zijn premieprogramma uit op Bugcrowd, en de triage-analisten hadden moeite om te begrijpen wat de bug deed, en beoordeelden het eerst als een middelmatige P3.

De onderzoekers maakten hun standpunt op een ongewoon directe manier duidelijk: terwijl een analist de aanval reproduceerde, vingen ze de eigen trigrammen van de analist op, herbouwden het Gmail-adres van de analist en plakten dit in het rapport. Het team van Opera verhoogde vervolgens de ernst naar P1 en betaalde het kritische maximum van $ 5.000.

Opera’s eigen verhaal is meer afgemeten. In zijn advies zegt het bedrijf er “ervan overtuigd te zijn” dat de fout nooit in het wild is uitgebuit, en beschouwt het de aanval als ingewikkeld om uit te voeren: het slachtoffer moest op een kwaadaardige site terechtkomen, uiteindelijk een nieuwe mod krijgen en de verwijderingsmelding lang genoeg negeren om de omleiding te activeren.

De demo van de onderzoekers is het tegenwicht. Hun omleiding wordt uitgevoerd in de seconden voordat een gebruiker de melding zelfs maar kan lezen, laat staan ​​op Verwijderen klikken. Het was een bekrompen, onhandige aanval waar Opera in het wild geen spoor van vond, en nadat het eenmaal was opgezet, werkte het nog steeds zonder klikken.

Het risico hier was nooit het cosmetische kenmerk op zichzelf. Het was bereik. Zodra de CSS van een mod je van de ene site naar de andere kon volgen, bleek ‘gewoon stylen’ voldoende.

Dat is de draai aan een bekend idee: diefstal uit alleen CSS blijft meestal hangen op de pagina waar het wordt geïnjecteerd, zoals in PortSwiggers Blind CSS Exfiltratie-onderzoek, maar hier ging het mee op elke site die het slachtoffer opende.

Het is ook niet de eerste Opera-functie die zich tegen zijn gebruikers keert; The Hacker News berichtte over de MyFlaw-bug uit 2024 in Opera’s My Flow, en Opera werd sinds 2023 gewaarschuwd voor dit automatische installatiegedrag.

Thijs Van der Does