Критическая уязвимость Google раскрывала телефонные номера пользователей через устаревшую форму восстановления

CyberSecureFox 🦊

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

Техническая сущность обнаруженной уязвимости

Основой для эксплуатации стала устаревшая форма Google по адресу accounts.google.com/signin/usernamerecovery, которая функционировала без поддержки JavaScript и была лишена современных механизмов защиты от автоматизированных атак. Первоначально эта страница предназначалась для помощи пользователям в проверке связи резервного адреса электронной почты или номера телефона с определенным отображаемым именем аккаунта.

Исследователь смог обойти примитивную защиту от массовых запросов, используя ротацию IPv6-адресов для генерации триллионов уникальных IP-адресов через подсети /64. Для обхода CAPTCHA специалист подставлял действительный токен BotGuard в параметр bgresponse=js_disabled, взятый из формы с поддержкой JavaScript.

Методология проведения брутфорс-атаки

BruteCat разработал комплексный инструмент для автоматизированного перебора номеров телефонов, который включал несколько компонентов:

Для генерации корректных форматов номеров использовалась библиотека libphonenumber от Google, была создана база масок телефонных номеров различных стран, а также разработан скрипт для генерации токенов BotGuard через headless Chrome. Результирующее решение обеспечивало скорость перебора около 40 000 запросов в секунду.

Эффективность атаки варьировалась в зависимости от региона: поиск номеров в США занимал около 20 минут, в Великобритании — 4 минуты, в Нидерландах — менее 15 секунд, а в Сингапуре — менее 5 секунд.

Обход защитных механизмов отображаемых имен

Для проведения целенаправленной атаки против конкретного пользователя требовалось знание его отображаемого имени (display name). Хотя Google значительно ограничил доступ к этой информации в 2023-2024 годах, исследователь нашел способ обхода через сервис Looker Studio.

Создавая документ в Looker Studio и назначая жертву его владельцем по email-адресу Gmail, атакующий мог получить доступ к отображаемому имени без какого-либо взаимодействия с целью. Для сужения круга поиска среди тысяч аккаунтов с одинаковыми именами использовались частичные номера телефонов из функции восстановления аккаунта Google, показывающей последние две цифры номера.

Временная шкала обнаружения и устранения

Исследователь сообщил о проблеме в рамках программы bug bounty Google в апреле 2024 года. Первоначально компания оценила риски как низкие, однако 22 мая 2024 года уровень опасности был повышен до «среднего» с применением временных мер защиты. За обнаружение уязвимости BruteCat получил вознаграждение в размере 5000 долларов.

Окончательное закрытие уязвимого эндпоинта произошло 6 июня 2024 года, когда Google полностью отключил доступ к форме без поддержки JavaScript. Однако остается неизвестным, использовали ли злоумышленники данную уязвимость до ее устранения.

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

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.