Исследователь под ником BruteCat обнаружил, что перебором можно было узнать номер телефона, привязанный к аккаунту Google, если знать имя пользователя и часть номера. Уязвимость оказалась в старой версии формы восстановления имени пользователя, которая работала без JavaScript — и, как выяснилось, без современной защиты.
Как всё работало
Форма позволяла отправить запросы с именем пользователя и номером телефона — и в ответ возвращала ответ, существует ли такой аккаунт. Всё это делалось с помощью двух POST-запросов. Формально защита была, но:
- Ограничение по числу запросов обошли с помощью IPv6-ротации — через /64-подсети можно было генерировать триллионы уникальных IP-адресов.
- CAPTCHA блокировали не всех — её удалось обойти, подставляя валидный BotGuard-токен от JS-версии формы.
Что использовал исследователь
BruteCat создал утилиту gpb
, которая:
- Перебирала номера по шаблонам, учитывающим формат номеров в конкретной стране;
- Работала с библиотекой
libphonenumber
от Google; - Автоматически получала BotGuard-токены через headless Chrome;
- Отправляла до 40 000 запросов в секунду.
Например, на подбор американского номера уходило около 20 минут, на британский — 4 минуты, на нидерландский — всего 15 секунд.
Как добывались недостающие цифры
Чтобы сузить круг поиска, исследователь получал часть номера из:
- Формы восстановления аккаунта Google — она показывает две цифры;
- Сторонних сервисов, например PayPal, где в процессе сброса пароля можно увидеть больше цифр (например, +14•••••1779).
А имейл-адрес пользователя, который Google больше не показывает напрямую, BruteCat доставал через Looker Studio: создаётся документ, передаётся на владение жертве — и её имя появляется в панели управления.
Чем это опасно
Если злоумышленник узнает привязанный номер телефона:
- Он может начать вишинг (мошеннические звонки с целью выманить данные);
- Провести СИМ-свопинг и получить контроль над номером;
- Использовать номер для сброса паролей и доступа к другим сервисам.
Реакция Google
- BruteCat сообщил об уязвимости 14 апреля 2025 года через программу вознаграждений Google.
- Сначала баг не восприняли всерьёз.
- 22 мая Google изменила оценку на «среднюю» степень риска и выпустила частичные патчи, выплатив исследователю $5 000.
- 6 июня Google окончательно закрыла уязвимую JS-disabled форму.
Использовали ли уязвимость злоумышленники до её закрытия — неизвестно.