Определить пользователя вконтакте по номеру телефона или не success story про bug bounty
История берёт начало в 2015 году. Разбирался я с настройкой рекламы вконтакте. Хорошая штука, спам по смс запрещён, а тут можно загрузить список номеров et voilà показываем рекламу тем же самым людям. С другой же стороны — можно загрузить список айдишников, в качестве аудитории для рекламы. И самое интересное, что можно сделать, так это пересечения и объединения аудторий из разных источников.
А если создать аудиторию с одним номером телефона, то на выходе можно определить, есть ли во второй группе с id такой же пользователь. Далее делим аудиторию пополам, проверяем и так пока не останется 1 на 1. В результате чего получим соответствие id вконтакте с номером телефона.
И тут я подумал, а почему бы не отправить это в bug bounty. Отправил репорт, стал ждать. Через месяц пришёл ответ — да есть такое, но использовать это из-за ограничений в API не очень то и получится.
Но время появилось только на новогодние празники. Сделал скриптик, который находит пользователя по номеру телефона, для диапазона id от 1 до 100000. Дальше действительно мешает ограничение, но сделать фейковые аккаунты и распараллелить это дело ничего не мешает. Прикрепил proof of concept в тот же репорт. Но видимо раз закрыли, то закрыли, реакции не последовало. Уже в марте отправил новый репор, с демкой и исходниками, через день написли, что посмотрят, проверят. Это вселяло надежду…
15 января 2017 “Всё проверили, не находит ничего”. Лезу смотреть, как так? Работало же? И в правду, теперь уже ничего не работает. В API сделали округление в показе количества людей в группе до 100, и разницу в одного человека скрипт уже не видел. Репортить баги отбило желание :(.
Хотя и это ограничение можно обойти. Если взять дополнительную аудиторию из 99 человек и объединять с искомой аудиторией в одного человека, то в случае успеха результат уже будет подходящей аудиторией из 100 человек и это будет видно. Это уменьшает диапазон для поиска с одного аккаунта, но всё возможно.
Но мне уже лень.
The End.