Изследователи откриха уязвимост в Opera GX, ориентираната към геймъри версия на браузъра Opera, която позволява на зловреден уебсайт незабележимо да инсталира добавка към браузъра и да я използва за извличане на специфични данни от страниците, които жертвата посещава.
В демонстрация на концепцията (proof of concept) те са успели да възстановят пълния имейл адрес в Gmail на вписан потребител само от едно посещение, без необходимост от кликване. Opera е отстранила проблема и заявява, че няма доказателства уязвимостта да е била експлоатирана в реална среда.
Корекцията е внедрена в Opera GX версия 130.0.5847.89, така че всеки с актуална версия вече е защитен; можете да потвърдите вашата на адрес opera://about. За тази уязвимост няма издаден CVE номер.
Тъй като атаката не изисква кликвания или одобрения, нямаше друго временно решение освен инсталирането на пача. Екипът за награди за открити бъгове на Opera оцени проблема с P1 – най-високата степен на сериозност – и изплати максималната награда от 5000 долара за критична уязвимост.
Модовете за GX (GX Mods) позволяват промяна на облика на Opera GX с персонализирани звуци, теми, тапети и CSS, който престилизира посещаваните сайтове. Те се разпространяват като .crx файлове, подобно на разширенията за браузъри, но не могат да изпълняват JavaScript и нямат специални разрешения.
Слабостта е в начина им на инсталиране: процесът за модове на Opera изтегля и активира даден мод автоматично, без подкана за одобрение. Така зловредна страница може да го инсталира скрито, например чрез зареждане на скрит iframe, насочен към .crx файл.
Единственият знак е известие под адресната лента, което съобщава, че е добавен мод, с бутон за премахване (Remove).
Това поведение на автоматично инсталиране не е ново. Изследователят Renwa го идентифицира още през 2023 г. и, чрез ескалиране на инсталиран мод до пълно разширение, го използва за подмяна (spoofing) на адресната лента на браузъра. Opera коригира тази конкретна атака през март 2023 г., но остави основния механизъм за автоматично инсталиране, над който надгражда новото изследване.
Скрит мод за промяна на външния вид звучи безобидно сам по себе си. Но CSS кодът на мода се прилага към всяка посетена страница, а не само към една. Обикновеното инжектиране на CSS е ограничено до страницата, на която попада; тук стиловете на атакуващия достигат до всеки сайт, който браузърът отваря – техника, която изследователите наричат „универсално инжектиране на CSS“.CSS не може да чете страница и да изпраща данни самостоятелно. Но може да бъде принуден да извлича стойности символ по символ. Трикът разчита на селектори на атрибути: дадено правило може да проверява дали стойността на атрибут на елемент (като имейл адрес, скрит в скрито поле) започва с определена буква, и да изисква фоново изображение от сървъра на атакуващия само когато това е вярно. Чрез изпращане на достатъчно такива заявки стойността се разкрива символ по символ.
Изследователите наричат това XS-Leak (cross-site leak / изтичане на данни между сайтове). За да извлекат имейл адрес от Gmail, те насочват атаката към страницата на профила в Google (myaccount.google.com/contactemail), която съдържа адреса в три от своите HTML атрибути.
Те са заредили в мода около 150 000 CSS правила – по един набор за всяка възможна трибуквена част от адреса, и са използвали скрипт за сглобяване на съвпаденията. Първоначално са опитали с четирибуквени части, което е изисквало 5,6 милиона правила и около 880 MB CSS. Браузърът се е затруднил, затова са преминали към трибуквени сегменти, които се застъпват достатъчно, за да бъдат сглобени отново.
Свързването на атаката в едно цяло изисква минимално взаимодействие. Жертвата попада на страницата на атакуващия, модът се инсталира за секунди, а няколко реда JavaScript пренасочват браузъра към страницата на Google акаунта. CSS кодът на мода вече е зареден там, така че той задейства заявките и извлича адреса още докато страницата се рендира – преди жертвата да успее да стигне до бутона Remove в известието.
Имейлът в Gmail беше само демонстрация; същият подход може да извлече и други стойности, които страницата показва в своя код, като например потребителски имена.
Същият път за автоматично инсталиране има и второ, по-грубо приложение, документирано от изследователите: зареждането на .crx файл в режим инкогнито (Private) срива браузъра и затваря всички отворени раздели. Това засяга и стандартната версия на Opera, а не само Opera GX, тъй като всеки .crx задейства процеса за инсталиране на разширения, независимо от съдържанието му. Официалното становище на Opera адресира защитата срещу кражба на данни и не споменава срива на браузъра.
Сериозност на проблема
Докладът за уязвимостта първоначално е бил напът да бъде пренебрегнат. Opera управлява програмата си за награди в Bugcrowd, и анализаторите по триаж първоначално са имали трудности да разберат какво прави бъгът, оценявайки го със средна степен P3.
Изследователите са доказали тезата си по необичайно директен начин: докато анализаторът е възпроизвеждал атаката, те са прихванали неговите данни, възстановили са имейл адреса му в Gmail и са го поставили в доклада за грешката. След това екипът на Opera е повишил сериозността до P1 и е изплатил максималната сума от 5000 долара.
Официалното становище на Opera е по-умерено. Компанията заявява, че е „напълно сигурна“, че уязвимостта не е била експлоатирана в реални условия, и представя атаката като сложна за изпълнение: жертвата трябва да попадне на зловреден сайт, да получи нов мод и да игнорира известието за премахване достатъчно дълго, за да се задейства пренасочването.
Демонстрацията на изследователите обаче показва обратното. Тяхното пренасочване се задейства за секунди – преди потребителят изобщо да успее да прочете известието, камо ли да кликне върху бутона за премахване.