Исследователи безопасности нашли в Opera GX дыру, через которую произвольный сайт мог без единого клика жертвы установить в браузер собственный модификатор — и с его помощью вытащить данные прямо со страниц, которые человек открывал после этого. В качестве доказательства команда восстановила полный Gmail-адрес залогиненного пользователя буквально за одно посещение вредоносной страницы. Никаких подтверждений, никаких предупреждений — просто зашёл на сайт и через несколько секунд твой адрес почты уже лежит на сервере атакующего.
Opera GX — это игровая версия браузера Opera, известная тем, что позволяет пользователям переделывать интерфейс под себя: менять звуки, темы, обои рабочего стола, накладывать собственные CSS-стили поверх интерфейса браузера. Эти надстройки называются GX Mods и поставляются в виде файлов.crx — по сути, это тот же формат, что используется для расширений браузера. Разработчики Opera подчёркивают, что моды не умеют выполнять JavaScript и не имеют разрешений — вроде бы безобидная косметика. Проблема была не в самих модах, а в том, как браузер их устанавливал.
Механизм оказался устроен так, что мод скачивался и активировался автоматически, без всякого запроса на подтверждение. Единственный признак того, что что-то произошло — тонкая уведомляющая полоска под адресной строкой с кнопкой «Удалить». Больше ничего. Ни диалогового окна, ни паузы, ни явного согласия пользователя.
Это не первая история с этим механизмом. Ещё в 2023 году исследователь под ником Renwa обнаружил ту же автоматическую установку и довёл атаку до логического предела — превратил установленный мод в полноценное расширение и подделал содержимое адресной строки браузера, заставив жертву поверить, что она находится на легитимном сайте. Opera тогда закрыла именно этот конкретный сценарий в марте 2023 года, но саму автоустановку модов трогать не стала. Новое исследование выросло ровно из этой оставленной без внимания дыры.
Атакующие использовали технику, которую можно назвать «универсальной CSS-инъекцией». Обычно инъекция стилей ограничена одной страницей — той, куда её вставили. Но стили, приходящие через мод, действуют вообще на всех страницах, которые открывает пользователь, включая совершенно посторонние сайты. Дальше в дело идёт классический трюк с CSS-селекторами по атрибутам: скрипт проверяет, начинается ли значение какого-то атрибута элемента (например, поля с email) с определённой буквы. Если совпадение есть, браузер отправляет запрос на загрузку фонового изображения с сервера атакующего — а значит, факт совпадения становится виден снаружи. Повторяя эту проверку раз за разом, можно восстановить значение символ за символом. Такой способ утечки данных в индустрии называют XS-Leak, то есть межсайтовой утечкой.
В качестве цели исследователи выбрали страницу — там адрес электронной почты присутствует сразу в трёх HTML-атрибутах. Первая версия атаки пыталась угадывать почту кусками по четыре буквы и потребовала 5,6 миллиона CSS-правил общим весом около 880 мегабайт — браузер попросту падал под такой нагрузкой. Финальный вариант оказался экономнее: около 150 тысяч правил с перекрывающимися трёхбуквенными фрагментами, из которых адрес затем собирался отдельным скриптом. Вся цепочка атаки выглядела так: жертва заходит на сайт атакующего, за несколько секунд подгружается мод, JavaScript перенаправляет браузер на страницу аккаунта Google, CSS мода начинает отстреливать запросы по мере отрисовки страницы, и адрес утекает ещё до того, как человек успевает нажать кнопку «Удалить».
Кража Gmail-адреса была всего лишь демонстрацией возможностей. Та же методика годится для извлечения любых данных, которые присутствуют в разметке страницы — например, имён пользователей или других идентификаторов, если они отображаются в атрибутах HTML.
Заодно нашли вторую, менее раскрученную проблему: если загрузить.crx-файл, находясь в режиме инкогнито, браузер падает и сбрасывает все открытые вкладки. Баг затрагивает и обычную Opera, и Opera GX — механизм установки расширений у них общий. В официальном сообщении компании об этой уязвимости не было ни слова — там говорилось только об утечке данных.
Отдельного упоминания заслуживает история с самой программой bug bounty, которую Opera ведёт на площадке Bugcrowd. Специалисты по разбору заявок сперва не разобрались, что происходит, и оценили уязвимость лишь как P3 — то есть среднюю по серьёзности. Переломный момент наступил, когда один из аналитиков сам пытался воспроизвести атаку у себя: исследователи перехватили его же собственные триграммы, восстановили из них его настоящий Gmail-адрес и вставили этот адрес прямо в отчёт как доказательство. После этого статус баг подняли до P1 — максимальной категории серьёзности, а выплату довели до потолка в 5000 долларов.
Opera публично называет атаку «сложной в исполнении», указывая, что жертве нужно сначала попасть на вредоносный сайт, дать установиться свежему моду и затем достаточно долго игнорировать уведомление об удалении, чтобы редирект успел сработать. Исследователи с этим не согласны: перенаправление срабатывает за считанные секунды — быстрее, чем человек вообще успевает прочитать текст уведомления, не говоря уже о клике по кнопке «Удалить». По их словам, схема действительно узкая и капризная в настройке, но при правильной подготовке срабатывает вообще без единого действия со стороны пользователя.
Главная суть проблемы была не в самой функции косметических модов, а в её охвате — способности дотянуться до содержимого абсолютно любой открытой страницы. Похожий класс атак разбирали в исследовании PortSwigger по слепой эксфильтрации через CSS, где отдельно отмечалось, что кража данных через один лишь CSS обычно остаётся заперта в пределах той страницы, куда её внедрили. В данном случае это ограничение оказалось снято благодаря самой архитектуре модов Opera GX. Это уже не первый случай, когда фирменная фича Opera превращается в уязвимость — ранее сообщалось про баг MyFlaw 2024 года в функции My Flow того же браузера. А про саму автоустановку модов компанию предупреждали ещё в 2023-м, задолго до нынешнего исследования.
Исправление вышло в версии Opera GX 130.0.5847.89. Проверить свою версию можно на странице Формальный номер CVE уязвимости не присвоили, а до выхода патча никакого обходного пути защититься от неё не существовало — атака не требовала ни кликов, ни каких-либо подтверждений со стороны пользователя. Сама компания заявляет, что «весьма уверена» — в реальных условиях эту дыру никто не эксплуатировал.
Opera GX — это игровая версия браузера Opera, известная тем, что позволяет пользователям переделывать интерфейс под себя: менять звуки, темы, обои рабочего стола, накладывать собственные CSS-стили поверх интерфейса браузера. Эти надстройки называются GX Mods и поставляются в виде файлов.crx — по сути, это тот же формат, что используется для расширений браузера. Разработчики Opera подчёркивают, что моды не умеют выполнять JavaScript и не имеют разрешений — вроде бы безобидная косметика. Проблема была не в самих модах, а в том, как браузер их устанавливал.
Механизм оказался устроен так, что мод скачивался и активировался автоматически, без всякого запроса на подтверждение. Единственный признак того, что что-то произошло — тонкая уведомляющая полоска под адресной строкой с кнопкой «Удалить». Больше ничего. Ни диалогового окна, ни паузы, ни явного согласия пользователя.
Это не первая история с этим механизмом. Ещё в 2023 году исследователь под ником Renwa обнаружил ту же автоматическую установку и довёл атаку до логического предела — превратил установленный мод в полноценное расширение и подделал содержимое адресной строки браузера, заставив жертву поверить, что она находится на легитимном сайте. Opera тогда закрыла именно этот конкретный сценарий в марте 2023 года, но саму автоустановку модов трогать не стала. Новое исследование выросло ровно из этой оставленной без внимания дыры.
Атакующие использовали технику, которую можно назвать «универсальной CSS-инъекцией». Обычно инъекция стилей ограничена одной страницей — той, куда её вставили. Но стили, приходящие через мод, действуют вообще на всех страницах, которые открывает пользователь, включая совершенно посторонние сайты. Дальше в дело идёт классический трюк с CSS-селекторами по атрибутам: скрипт проверяет, начинается ли значение какого-то атрибута элемента (например, поля с email) с определённой буквы. Если совпадение есть, браузер отправляет запрос на загрузку фонового изображения с сервера атакующего — а значит, факт совпадения становится виден снаружи. Повторяя эту проверку раз за разом, можно восстановить значение символ за символом. Такой способ утечки данных в индустрии называют XS-Leak, то есть межсайтовой утечкой.
В качестве цели исследователи выбрали страницу — там адрес электронной почты присутствует сразу в трёх HTML-атрибутах. Первая версия атаки пыталась угадывать почту кусками по четыре буквы и потребовала 5,6 миллиона CSS-правил общим весом около 880 мегабайт — браузер попросту падал под такой нагрузкой. Финальный вариант оказался экономнее: около 150 тысяч правил с перекрывающимися трёхбуквенными фрагментами, из которых адрес затем собирался отдельным скриптом. Вся цепочка атаки выглядела так: жертва заходит на сайт атакующего, за несколько секунд подгружается мод, JavaScript перенаправляет браузер на страницу аккаунта Google, CSS мода начинает отстреливать запросы по мере отрисовки страницы, и адрес утекает ещё до того, как человек успевает нажать кнопку «Удалить».
Кража Gmail-адреса была всего лишь демонстрацией возможностей. Та же методика годится для извлечения любых данных, которые присутствуют в разметке страницы — например, имён пользователей или других идентификаторов, если они отображаются в атрибутах HTML.
Заодно нашли вторую, менее раскрученную проблему: если загрузить.crx-файл, находясь в режиме инкогнито, браузер падает и сбрасывает все открытые вкладки. Баг затрагивает и обычную Opera, и Opera GX — механизм установки расширений у них общий. В официальном сообщении компании об этой уязвимости не было ни слова — там говорилось только об утечке данных.
Отдельного упоминания заслуживает история с самой программой bug bounty, которую Opera ведёт на площадке Bugcrowd. Специалисты по разбору заявок сперва не разобрались, что происходит, и оценили уязвимость лишь как P3 — то есть среднюю по серьёзности. Переломный момент наступил, когда один из аналитиков сам пытался воспроизвести атаку у себя: исследователи перехватили его же собственные триграммы, восстановили из них его настоящий Gmail-адрес и вставили этот адрес прямо в отчёт как доказательство. После этого статус баг подняли до P1 — максимальной категории серьёзности, а выплату довели до потолка в 5000 долларов.
Opera публично называет атаку «сложной в исполнении», указывая, что жертве нужно сначала попасть на вредоносный сайт, дать установиться свежему моду и затем достаточно долго игнорировать уведомление об удалении, чтобы редирект успел сработать. Исследователи с этим не согласны: перенаправление срабатывает за считанные секунды — быстрее, чем человек вообще успевает прочитать текст уведомления, не говоря уже о клике по кнопке «Удалить». По их словам, схема действительно узкая и капризная в настройке, но при правильной подготовке срабатывает вообще без единого действия со стороны пользователя.
Главная суть проблемы была не в самой функции косметических модов, а в её охвате — способности дотянуться до содержимого абсолютно любой открытой страницы. Похожий класс атак разбирали в исследовании PortSwigger по слепой эксфильтрации через CSS, где отдельно отмечалось, что кража данных через один лишь CSS обычно остаётся заперта в пределах той страницы, куда её внедрили. В данном случае это ограничение оказалось снято благодаря самой архитектуре модов Opera GX. Это уже не первый случай, когда фирменная фича Opera превращается в уязвимость — ранее сообщалось про баг MyFlaw 2024 года в функции My Flow того же браузера. А про саму автоустановку модов компанию предупреждали ещё в 2023-м, задолго до нынешнего исследования.
Исправление вышло в версии Opera GX 130.0.5847.89. Проверить свою версию можно на странице Формальный номер CVE уязвимости не присвоили, а до выхода патча никакого обходного пути защититься от неё не существовало — атака не требовала ни кликов, ни каких-либо подтверждений со стороны пользователя. Сама компания заявляет, что «весьма уверена» — в реальных условиях эту дыру никто не эксплуатировал.