Офтоп
Никита Лихачёв

Герои и Злодеевы: администраторов и авторов сообществ «ВКонтакте» деанонимизируют третий год подряд

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

4 мая HTML-верстальщик из Смоленска Алексей Злодеев рассказал на «Хабрахабре» об очередном способе узнать, кто является автором предложенной в сообщество публикации, а кто — опубликовавшим её администратором. По его словам, он смог сделать это через официальный API соцсети, но для успешного разоблачения обязательно требовалось, чтобы в сообществе были разрешены комментарии.

Я смотрел метод newsfeed.getComments без каких-либо злых намерений. Этот метод возвращает посты в которых текущий пользователь оставил комментарий или иным образом подписался на уведомления (раздел «Мои новости → Комментарии»). Получив необходимые мне результаты, я обратил внимание на то, что в ответе сервера в злополучном массиве profiles лежит пять аккаунтов. Зачем они нужны и откуда они берутся, следовало немедленно выяснить. Для тестов я брал анонимную группу своего города, оставлял комментарий под последним постом и смотрел на ответ сервера по запросу к этому методу.

Оказалось, что каждый из этих пользователей имел непосредственное отношение к посту. Первым был тот, кто опубликовал новость, то есть человек с правами не ниже модератора, вторым был тот, кто «предложил новость», если он вообще был, и оставшиеся трое — последние прокомментировавшие запись. После проверки на тех группах, в которых все эти данные были «скрыты» настройками приватности, всё лишь подтвердилось. Всё именно так и было: всё, что скрывалось настройками приватности, было доступно в три клика.

Алексей Злодеев, верстальщик

По словам Злодеева, он собирался сообщить о найденной уязвимости во «ВКонтакте», однако по незнанию воспользовался неподходящими для этого средствами. Сначала он пытался отправить сообщение об уязвимости через баг-трекер «ВКонтакте», но не был в курсе, что он доступен только для зарегистрированных на платформе разработчиков.

Затем он отправил информацию о своей находке в vc.ru: там его попросили доказать работоспособность метода. Злодеев принялся экспериментировать с найденным багом и начал публиковать списки администраторов крупных новостных сообществ (РБК, Первого канала, «Известий») у себя в паблике.

Пример результата ответа, который возвращал API «ВКонтакте»

Ссылки на профили пользователей автоматически преобразовались в упоминания: администратор сообщества «Известий» заметил это и сообщил об ошибке во «ВКонтакте». Позднее аккаунт Злодеева в соцсети заблокировали.

В разговоре с TJ он признался, что до этого случая не знал о программе вознаграждения за найденные уязвимости Hacker One, в которой участвует «ВКонтакте» (соцсеть регулярно платит от 100 до 500 долларов, но иногда выплачивает более крупные награды — от 2 до 5 тысяч долларов). По его словам, он в итоге не смог подать туда заявку из-за слишком плохого знания английского языка: «Я застопорился на первом же пункте „Тип уязвимости“».

Сам верстальщик считал, что блокировка — результат жалоб упомянутых им пользователей на спам. Однако пресс-секретарь «ВКонтакте» Евгений Красников рассказал TJ, что Злодеева заблокировали за публичное эксплуатирование уязвимости, а баг устранили после обращения одного из «разоблачённых» администраторов сообществ.

Мы полностью устранили эту уязвимость. Пользователя, который воспроизводил её умышленно и публично, пришлось его заблокировать.

Евгений Красников, пресс-секретарь «ВКонтакте»

По словам Красникова, вознаграждение обнаружившему уязвимости выплачено не будет: «С террористами переговоров не ведём».

Аналогичный случай произошёл в апреле 2015 года: тогда Злодеев изучал тот же метод в API «ВКонтакте» и обнаружил схожую уязвимость. После обращения в поддержку «ВКонтакте» уязвимость закрыли, награды не выплатили, а через некоторое время аккаунт Злодеева был заморожен за якобы спамный пост на стене его собственной группы.

Первый широко известный случай такой деанонимизации произошёл в октябре 2014 года: студенты Киевского политехнического института выпустили утилиту на основе API «ВКонтакте», которая помогала вычислять администраторов сообществ через ID репостов записей. Если репостов в сообществе не было, вычислять не получалось.

Об этом же случае вспоминал Злодеев, по всей видимости считая, что нашёл уязвимость независимо от украинцев. В том случае пресс-секретарь «ВКонтакте» Георгий Лобушкин назвал этот способ разоблачения анонимов «недокументированной фичей». В разговоре с TJ Красников подтвердил, что исправленная в мае уязвимость — это «призрак той истории 2014 года» с «трудновоспроизводимой» уязвимостью.

Сам Злодеев писал, что он никакой не хакер и не разработчик, а все эти «уязвимости» (или «незадокументированные фичи») он обнаруживал почти случайно. «Я человек. Человек, которому интересно, как работает то, чем он пользуется чаще одного раза в день. И если в функциональности найден изъян, не поделиться с кем-то этим я не могу. Банально не хватает терпения сдерживать в себе информацию, которая может оказаться полезной некой категории людей, имеющих возможность извлечь из неё выгоду и поделиться со мной знанием, как такие знания использовать», — писал он в апреле 2015 года.