Эксперт обнаружил уязвимость на странице авторизации Google

Эксперт обнаружил уязвимость на странице авторизации Google

Эксперт обнаружил уязвимость на странице авторизации Google

На странице авторизации Google обнаружена уязвимость белого списка, позволяющая злоумышленнику перенаправлять пользователей на произвольные страницы или загрузить вредоносный код, предупреждает эксперт по безопасности Эйдан Вудс (Aidan Woods).

По мнению исследователя, страница авторизации Google принимает уязвимый параметр GET ‘continue’, который должен указывать на сервис Google, но не проверяет тип сервиса, который был указан. Таким образом, злоумышленник может вставить любое требуемое значение в конце процесса входа в систему.

Из-за этой уязвимости злоумышленник может загрузить файлы с помощью Google Drive, а также установить редиректы с помощью различных сервисов.

Для того, чтобы использовать эту уязвимость для редиректа, злоумышленник должен установить значение уязвимого параметра “continue=https://www.google.com/amp/example.com#identifier,”, это позволит отправить пользователя на произвольную страницу после входа в систему, объясняет эксперт. Таким образом, легитимная страница авторизации Google может использоваться для фишинговых атак.

Вудс приводит следующий пример атаки – пользователь может быть перенаправлен на страницу, которая будет утверждать, что пароль или логин были введены неправильно и попросить еще раз ввести их, так данные пользователя могут попасть в руки злоумышленников. 

Исследователь также объясняет, что параметр ‘continue’ принимает домен docs.google.com в качестве значения, это значит, что злоумышленник может загрузить любой файл, находящийся в Google Drive, если только для него была создана ссылка общего доступа. Более того, злоумышленник может указать прямой путь для загрузки файла и он будет загружен браузером не выходя из легитимной страницы входа в систему Google. Пользователь в этом случае будет думать, что файл загружается самим Google.

Исследователь говорит, что он был в состоянии успешно загрузить как .html, так и EXE-файлы, не покидая страницы входа в систему. 

Вудс также отмечает, что пользователи могут избежать опасности, просто проверяя URL на каждом этапе входа в систему, либо не кликать на ссылки, которые не поступают непосредственно от Google. Также никогда не стоит запускать файлы, которые якобы идут от Google в процессе входа в систему.

Эксперт утверждает, что послал Google три различных отчета на тему наличия уязвимости. Только на третий отчет был дан ответ, что эта ситуация не будет отслеживаться как ошибка безопасности.

Тем не менее, Вудс считает, что уязвимость вполне реальна, и что публичное раскрытие информации может заставить Google изменить свою позицию по этому вопросу. Он даже опубликовал видео с подробным описанием уязвимости.

Расширения Chrome могут слить секреты URL через атаку по стороннему каналу

Как оказалось, расширения Chrome можно использовать для слива кодов авторизации, сеансовых ID и других секретов из URL любой открытой вкладки. Никаких специальных разрешений для этого не понадобится, только доступ к declarativeNetRequest API.

Этот механизм, пришедший на смену webRequest API, позволяет расширениям сообщать браузеру, что следует изменить или заблокировать на загружаемой странице (заголовки, реклама, трекеры).

Правила обработки запросов при этом добавляются динамически, а фильтрация осуществляется по регулярным выражениям, соответствующим подмножествам знаков, которые могут присутствовать на определенных позициях в URL.

Исследователь Луан Эррера (Luan Herrera) обнаружил, что блокировку, диктуемую правилами, Chrome производит почти мгновенно, за 10-30 мс, а остальные запросы выполняются дольше (~50-100ms) — из-за сетевых подключений. Эту разницу во времени расширение может использовать для бинарного поиска с целью посимвольного слива URL.

// extensions/browser/api/web_request/extension_web_request_event_router.cc:1117-1127
case DNRRequestAction::Type::BLOCK:
  ClearPendingCallbacks(browser_context, *request);
  DCHECK_EQ(1u, actions.size());
  OnDNRActionMatched(browser_context, *request, action);
  return net::ERR_BLOCKED_BY_CLIENT;

Оракул для подобной тайминг-атаки строится с использованием chrome.tabs.reload для перезагрузки страницы и перехватчика chrome.tabs.onUpdated, помогающего отследить событие status === "complete". Замер времени между reload и завершением загрузки покажет, заблокирован запрос или успешно обработан.

Повторение проверок и бинарного поиска позволяет получить полный URL (с довеском после «?»), затратив на каждый знак строки несколько прогонов. Таким образом, можно незаметно для пользователя украсть включенные приложением в адрес секреты — токены OAuth и сброса пароля, API-ключи, ссылки на контент, закрытый для поисковых систем.

Проверка PoC проводилась на Windows 11 24H2 с использованием Chrome разных версий:

  • 144.0.7559.97 (Stable)
  • 145.0.7632.18 (Beta)
  • 146.0.7647.4 (Dev)
  • 146.0.7653.0 (Canary)

В Google подтвердили возможность подобной атаки по стороннему каналу, но заявили, что решить проблему нереально.

RSS: Новости на портале Anti-Malware.ru