Раскрытие номера телефона аккаунта ВК

Где обнаружено

Здравствуйте!
Обнаружил баг на https://id.vk.com/restore.

Описание уязвимости

Если на странице восстановления аккаунта ввести актуальный номер телефона аккаунта, то ВК предложит отправить код подтверждения на почту, а если неправильный номер, то попросят сделать селфи:
 
После нескольких попыток ввода номера сервер блокирует запросы и на любой ввод возвращает Access denied: Security error:
 
Однако скорость ответа от сервера между вводом актуального номера и неверного отличается:
 
Где ~<120мс — ответ на неверный номер, а ~160мс — на верный (8XXXXXXX933). Сравнение времени ответа позволяет узнать номер телефона аккаунта через перебор.
Для российских номеров количество возможных комбинаций составляет 999'999'900 = 100 DEF-кодов (от 900 до 999) * 999-99-99.
На среднем ноутбуке (16Gb RAM, Intel i7-12700H) PoC скриптом на python я получил скорость ~670 запросов в секунду.
Например, если запустить этот код параллельно в 20 потоков/машин, то все варианты номера телефона будут перебраны менее чем за сутки (~20 часов).
Вероятно, баг возможен из-за того, что сервер не проверяет права пользователя на запрос прежде чем обратиться к базе данных, а проверяет уже позже.

Шаги воспроизведения

  1. На странице восстановления аккаунта указать ник нужного пользователя.
  2. Отправить запрос с любым невалидным номером (а ля 89998887766).
  3. Отправить запрос с верным номером.
  4. Сравнить скорости ответа между шагом 2 и 3.

Влияние на безопасность

Злоумышленник может узнать номер телефона страницы жертвы.

Дополнительные ссылки

Видео PoC приложил.
PoC код тоже.
Для воспроизведения нужно заменить в коде префикс номера телефона и вставить значение restore_session_id в поля restore_session_id и hash.

Другой метод атаки

Также возможен вариант массовой атаки: через предварительный сбор ID/ников ВК и отправкой одного варианта номера телефона на все сессии восстановления.
VKontakte
VK
Report No.: 11914
Created: June 12, 2025, 14:23
Disclosed: February 20, 10:45
Status: Fixed
Type: Vulnerability
Severity:
Medium
Author:Kevgen

Files

VK_restore_phone_wrong.png
VK_restore_phone_success.png
VK_restore_securityerror_burp_bn.png
VK_restore_server_delay.png
200_numbers_s_wm.png
Comments
By
wellenc_lex_vk
June 16, 2025
By
wellenc_lex_vk
June 16, 2025
By
wellenc_lex_vk
June 20, 2025
By
wellenc_lex_vk
June 20, 2025
By
wellenc_lex_vk
June 20, 2025
By
Kevgen
June 20, 2025
By
p.uvarov
June 20, 2025
By
Kevgen
June 20, 2025
By
a.san
July 31, 2025
By
WhiteCat
July 31, 2025
By
Kevgen
July 31, 2025
By
wellenc_lex_vk
August 4, 2025
By
wellenc_lex_vk
August 4, 2025
By
Kevgen
February 2, 11:40
By
wellenc_lex_vk
February 2, 12:45