Opera усунула критичну вразливість у механізмі GX Mods свого ігрового браузера Opera GX, яка дозволяла зловмисному сайту без жодного кліка користувача встановити браузерний мод, а потім витягувати конфіденційні дані — зокрема адресу електронної пошти Gmail — зі сторінок, які жертва відвідує. Виправлення увійшло до версії 130.0.5847.89; ідентифікатор CVE не присвоєно. За даними офіційного бюлетеня Opera, свідчень експлуатації вразливості в реальних атаках не виявлено, однак публічний PoC експлойт доступний. Користувачам Opera GX необхідно переконатися, що їхня версія браузера актуальна, перевіривши її на сторінці opera://about.
Механізм атаки: від автоустановлення мода до витоку даних
GX Mods — це система кастомізації Opera GX, що дає змогу змінювати теми, звуки, шпалери та CSS стилі відвідуваних сайтів. Моди поширюються у форматі .crx (аналогічно до розширень), але, за даними дослідників, не можуть виконувати JavaScript і не запитують дозволів. Ключова проблема полягала в конвеєрі встановлення: Opera автоматично завантажувала та активувала мод без запиту підтвердження в користувача.
Як описують дослідники з Zhero Web Security, зловмисна сторінка могла ініціювати встановлення мода через прихований iframe, що вказував на .crx-файл. Єдиним візуальним індикатором була панель сповіщень під адресним рядком із кнопкою «Видалити», однак атака завершувалася за секунди — до того, як користувач встигав прочитати сповіщення.
Сам по собі «косметичний» мод виглядає нешкідливим, але критичний нюанс полягає в тому, що CSS мода застосовується до усіх відвідуваних сторінок, а не тільки до однієї. Дослідники назвали це універсальною CSS-інʼєкцією — на відміну від звичайної CSS-інʼєкції, обмеженої рамками конкретної сторінки. Ця концепція розширює раніше задокументовані техніки, такі як Blind CSS Exfiltration від PortSwigger, де CSS-ексфільтрація залишається в межах одного сайта.
Техніка XS-Leak: посимвольне вилучення даних через CSS
CSS не може безпосередньо прочитати вміст сторінки та надіслати його на зовнішній сервер. Однак, за даними дослідників, за допомогою CSS селекторів атрибутів можна перевіряти, чи починається значення атрибута HTML-елемента з певної послідовності символів, і в разі збігу завантажувати фонове зображення з сервера зловмисника. Перебираючи всі можливі комбінації, атакувальний бік відновлює значення посимвольно — класична техніка XS-Leak (cross-site leak).
Для демонстрації дослідники націлилися на сторінку myaccount.google.com/contactemail, де адреса електронної пошти присутня в трьох HTML-атрибутах. Мод містив близько 150 000 CSS правил, що покривали всі можливі трисимвольні фрагменти (триграми) адреси. Скрипт на боці зловмисника збирав збіги та відновлював повну адресу. Показово, що перша спроба з чотирисимвольними фрагментами вимагала приблизно 5,6 млн правил і ~880 МБ CSS, що призвело до відмови браузера.
Ланцюжок атаки виглядав так: жертва потрапляє на зловмисну сторінку → мод установлюється за секунди → JavaScript перенаправляє браузер на сторінку Google-акаунта → CSS мода вже активний і під час рендерингу сторінки надсилає запити на сервер зловмисника. Увесь процес не вимагав жодного кліка.
Передісторія: проігнороване попередження 2023 року
Автоматичне встановлення модів без підтвердження не було новою проблемою. Як описав дослідник Renwa ще у 2023 році, цю ж особливість можна було використати для ескалації встановленого мода до повноцінного розширення та підміни адресного рядка браузера. Opera усунула конкретний вектор підміни адресного рядка, але, за наявними даними, залишила базовий механізм автоустановлення без змін — саме на ньому й побудована нова атака.
Додаткова вразливість: аварійне завершення в приватному режимі
Дослідники також задокументували другий, грубіший вектор: завантаження .crx-файла в приватному (Incognito) режимі призводило до аварійного завершення роботи браузера з втратою всіх відкритих вкладок. За даними дослідників, ця проблема зачіпала не лише Opera GX, а й звичайну Opera, оскільки будь-який .crx-файл активував конвеєр встановлення розширень. Варто зазначити, що бюлетень безпеки Opera не згадує про цю проблему, і незалежне підтвердження її впливу на звичайну Opera в доступних джерелах відсутнє.
Процес розкриття та оцінка серйозності
За даними дослідників, процес розкриття через платформу Bugcrowd пройшов не гладко: аналітики тріажу спершу оцінили вразливість як P3 (середня серйозність). Щоб продемонструвати реальний масштаб загрози, дослідники перехопили триграми самого аналітика, відновили його Gmail-адресу й вставили її в звіт. Після цього рейтинг було підвищено до P1 (максимальна серйозність), а дослідникам, як повідомляється, виплатили максимальну винагороду у розмірі 5 000 доларів.
Opera у своєму бюлетені характеризує атаку як складну в реалізації: жертва мала потрапити на зловмисний сайт, отримати встановлений мод і не встигнути натиснути кнопку видалення до завершення перенаправлення. Однак демонстрація дослідників показує, що перенаправлення спрацьовувало за секунди — швидше, ніж користувач міг прочитати сповіщення.
Оцінка впливу
Вразливість зачіпала користувачів Opera GX версій до 130.0.5847.89. Хоча доведений PoC витягував лише Gmail-адресу, дослідники зазначають, що той самий підхід застосовний до будь-яких значень, які сайт розміщує в HTML-атрибутах — імен користувачів, ідентифікаторів та інших даних. Аудиторія Opera GX орієнтована на геймерів, які активно використовують моди й кастомізацію, що робить соціальну інженерію для залучення на зловмисну сторінку потенційно ефективнішою.
Рекомендації
- Оновіть Opera GX до версії 130.0.5847.89 або новішої. Перевірте поточну версію на сторінці
opera://about. - Перевірте список установлених модів — видаліть будь-які незнайомі або неочікувано зʼявлені GX Mods.
- Обхідних шляхів, окрім оновлення, не існує: атака не вимагала дій користувача, і блокування на рівні налаштувань було неможливим.
- Організаціям, які дозволяють використання Opera GX у корпоративному середовищі, варто включити цей браузер до політик примусового оновлення.
Цей випадок наочно демонструє, як «нешкідлива» функція кастомізації — CSS стилі без JavaScript і дозволів — перетворюється на вектор витоку даних, коли її область дії поширюється на всі відвідувані сайти, а встановлення відбувається без згоди користувача. Opera усунула конкретну вразливість, але базовий архітектурний висновок ширший: будь-який механізм, що автоматично вбудовує контент у контекст довільних вебсторінок, потребує явного підтвердження користувача — незалежно від того, наскільки обмеженим здається цей контент.