Специалист по безопасности заявил о возможности перехвата переписки во «ВКонтакте» через Wi-Fi Статьи редакции

Специалист по безопасности компании HeadLight Security Михаил Фирстов опубликовал код скрипта, позволяющего обрабатывать перехваченную переписку пользователей приложения «ВКонтакте» для Android и iOS, находящихся в одной локальной сети с хакером. Об этом он сообщил в своём микроблоге.

Обновлено: представители «ВКонтакте» опровергли возможность перехвата переписки при включённом HTTPS-соединении.


Пример работы скрипта

Код утилиты под названием vkmitm (от MITM — «man in the middle», тип атаки) Фирстов опубликовал на GitHub. Её исполняемая часть является скриптом на Python, который ищет в локальной сети запросы приложений «ВКонтакте» для Android или iOS на обновление списка сообщений.

В описании работы утилиты сказано, что запросы имеют одинаковый вид. В них различается только параметр key, который обновляется не чаще раза в два часа и не реже раза в сутки, поэтому использовать его можно продолжительное время. По мнению Фирстова, таким образом можно узнавать не только текст отправляемых и получаемых сообщений конкретным пользователем, но и служебные уведомления вроде «Набирает текст» и «Прочитано».

Чтобы иметь возможность прослушивать трафик, устройству злоумышленника достаточно находиться в одной локальной сети с жертвой — например, открытом Wi-Fi в кафе. «Слушать» сообщения в режиме реального времени необязательно: можно создавать дампы трафика через PCAP и разбирать их по заданной маске позднее.

Пример перехваченного трафика

Как рассказал Фирстов TJ, возможность получать сообщения в незашифрованном виде заложена в мобильных приложениях «ВКонтакте». По какой-то причине они передают их через протокол HTTP, даже если в настройках аккаунта стоит галочка «Всегда использовать защищённое соединение (HTTPS)».

По мнению исследователя, HTTPS был отключён специально, так как в мобильных приложениях принято экономить трафик, поэтому представителям «ВКонтакте» он об обнаруженном способе сниффинга не сообщал: «Это не уязвимость, а “фича”, которая изначально была заложена разработчиками».

Даже при включённой галочке «HTTPS» в настройках приложения данные о сообщениях (входящие/полученные/различные ивенты) передаются всё равно по HTTP. Я потестировал и написал небольшой скрипт, который получает эти данные из проходящего трафика и расшифровывает их — даже, скорее, расставляет по местам, так как в «сыром» виде сообщения малочитабельны.

Чтобы пропустить через себя чужой трафик, достаточно применить даже самую простую атаку — ARP-спуфинг. Находясь в одной сети, мы сможем видеть весь трафик, проходящий от чужого устройства к роутеру, а от роутера в интернет, ну и как следствие сможем видеть данные от «ВКонтакте», проходящие по незашифрованному HTTP и выводить их в удобоваримом виде.

Михаил Фирстов, специалист по безопасности HeadLight Security

Параметр key берётся из сниффинга всего объёма трафика по определённой маске. Определять личность пользователя по этому параметру Фирстов пока не научился, однако считает, что это можно сделать по косвенным признакам — например, по IP-адресу или по тексту самой переписки.

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

Обновлено в 15:52: Как уточнил Фирстов, в последнем обновлении приложения VK App для iOS передача сообщений по HTTP была исправлена, но только в том случае, если пользователь указал на сайте «Всегда использовать защищённое соединение (HTTPS)».

Обновлено в 19:05: Пресс-секретарь «ВКонтакте» Георгий Лобушкин заявил TJ, что клиент для iOS использует HTTPS уже больше года (в нём нет возможности выключить защищённое соединение), а в случае Android трафик шифруется при включённой опции на сайте или в приложении. Когда именно соцсеть полностью собирается перейти на HTTPS, он не уточнил.

Результаты проверки наших специалистов по безопасности полностью опровергли доводы, приведённые в статье. Защищённое соединение HTTPS всегда используется в нашем приложении на iOS (его нельзя отключить). Также оно может быть включено пользователем в настройках в приложении на платформе Android. В таком случае получить доступ к переписке пользователя перехватом Wi-Fi-трафика невозможно. В ближайшем будущем мы планируем полностью отказаться от использования HTTP.

Георгий Лобушкин, пресс-секретарь «ВКонтакте»

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

0
41 комментарий
Популярные
По порядку
Написать комментарий...
Нужный корабль

Ну и обязательный совет — при подключении к публичным сетям Wi-Fi всегда используйте VPN.

Ответить
11
Развернуть ветку
Нужный корабль

От товарищей не должно быть секретов! Не баг, а фича!

Ответить
11
Развернуть ветку
Нужный корабль

По мнению исследователя, HTTPS был отключён специально, так как в мобильных приложениях принято экономить трафик, поэтому...

...он сразу выложил код на Гитхаб. Пусть ВК о дырках в своём приложении от прессы узнает. Это же так прикольно.

Ответить
7
Развернуть ветку
Нужный корабль

Дыра? Ты ещё на все сайты которые не используют https напиши что у них дыра.

Ответить
2
Развернуть ветку
Нужный корабль

Я лучше напишу, что дыра у тебя в голове, дед. Мне до лампочки, у кого там что, но в конкретном случае товарищ выложил уязвимость в открытый доступ до того, как известить разработчика, и отмазался, мол, это не баг, а фича такая. Это непорядочно.

Ответить
1
Развернуть ветку
Нужный корабль

Разработчик мог сознательно этого не сделать. В таком случае это не баг и не дыра, а недоработка.

Ответить
0
Развернуть ветку
Нужный корабль

Не факт, может быть каноничная ситуация "написал в саппорт о дыре" -> "игнорят месяц" -> "окей, дыру в паблик".

Ответить
0
Развернуть ветку
Нужный корабль

поэтому представителям «ВКонтакте» он об обнаруженном способе сниффинга не сообщал: «Это не уязвимость, а “фича”, которая изначально была заложена разработчиками».

Ответить
0
Развернуть ветку
Нужный корабль

Окей, не увидел. Но сама дыра, конечно, очень дурацкая.

Ответить
0
Развернуть ветку
Нужный корабль

Ну об этой "фиче" было известно давно, коллега у нас в офисе демонстрировал пол года назад, тупо перехватывая трафик варежкой.

Ответить
5
Развернуть ветку
Нужный корабль

У нас в сети университета тоже пару лет назад был один "умелец", который перехватывал данные и исправлял всем статусы и писал сообщения. После этого полунивера познало и признало https.

Ответить
1
Развернуть ветку
Нужный корабль

Да вы серьёзно? Аж целый скрипт? Скачайте Wireshark и будет счастье. И не используйте wife в кафе, трафика давно уже хватает всем.

Ответить
3
Развернуть ветку
Нужный корабль

Скрипт нужен для предоставления данных в удобоваримом виде.

Ответить
6
Развернуть ветку
Нужный корабль

Иллюстрацию прокрутил на автомате. Там все сразу понятно. Каюсь. :3

Ответить
0
Развернуть ветку
Нужный корабль

который обновляется не реже двух часов и не чаще суток

Я сломался

Ответить
3
Развернуть ветку
Нужный корабль

HTTP был отключён специально, так как в мобильных приложениях принято экономить трафик
Заговор жидомасонов.

Ответить
2
Развернуть ветку
Нужный корабль

HTTPS, поправил.

Ответить
2
Развернуть ветку
Нужный корабль

И много жрет хттпс?

Ответить
0
Развернуть ветку
Нужный корабль

Там соединение намного медленнее. Когда соединение установлено то разницы уже почти нет.

Ответить
1
Развернуть ветку
Нужный корабль

Насколько обязательным является правило использования впн при подключении к публичным вай-фаям?

К тому же гмайлу, по идее, соединение идет зашифрованное - смысл тогда впн использовать? С вк, видимо, баг.

Ответить
1
Развернуть ветку
Нужный корабль

Комментарий удален по просьбе пользователя

Ответить
0
Развернуть ветку
Нужный корабль

Nuff said.

Ответить
1
Развернуть ветку
Нужный корабль

Какой у нас там год на дворе, 2007й? А не, 2015, показалось

Ответить
1
Развернуть ветку
Нужный корабль

Комментарий удален по просьбе пользователя

Ответить
–5
Развернуть ветку
Нужный корабль

А почему бы не похаять и тех и тех?

Ответить
10
Развернуть ветку
Нужный корабль

Твой фирменный стиль

Ответить
5
Развернуть ветку
Нужный корабль

А давайте!

Ответить
1
Развернуть ветку
Нужный корабль

В эпоху моды на кнопку "поделиться", раскрытие переписки видится как логичный шаг... VK создает тренды :D

Ответить
0
Развернуть ветку
Нужный корабль

Чем больше людей протестирует, тем лучше. В основном интересен Android, в последней версии приложения на iOS разработчики закрыли данную уязвимость.

Ответить
0
Развернуть ветку
Нужный корабль

Спасибо за информацию!

Ответить
0
Развернуть ветку
Нужный корабль

Что мне бесит, так это то, что раньше в приложении был пункт "Использовать HTTPS", а потом недокодеры решили, что это не нужно и тупо снесли эту опцию.

Ответить
0
Развернуть ветку
Нужный корабль

Можно чуть подробнее? Когда эта опция была в приложении? Когда я тестировал, ее, как я понимаю, уже не было.

Ответить
0
Развернуть ветку
Нужный корабль

У меня и сейчас есть.

Ответить
0
Развернуть ветку
Нужный корабль

Она есть и сейчас

Ответить
0
Развернуть ветку
Нужный корабль

поэтому представителям «ВКонтакте» он об обнаруженном способе сниффинга не сообщал: «Это не уязвимость, а “фича”, которая изначально была заложена разработчиками».
Т.е. автор за них решил, что это не баг а фича? И Вк теперь узнаёт о дыре из новостей? Это как-то не профессионально.

Ответить
0
Развернуть ветку
Нужный корабль

Проблемы негров шерифа не волнуют.

Ответить
0
Развернуть ветку
Нужный корабль

Гришка всех переиграл.

Ответить
0
Развернуть ветку
Нужный корабль

Ну вообще-то это не новость, а баян
И это не уязвимость, а опция. Проблема только в том, что шифрование выключено по дефолту, но и это понятно, HTTPS требует мощностей, которые вк не хочет тратить на миллионы школоты, типичное для mail.ru отношение к пользователю

Ответить
0
Развернуть ветку
Нужный корабль

Ребятки, кто-то уже скомпилил exeшник? Или разобрался с установкой Scapy???

Ответить
–2
Развернуть ветку
Нужный корабль

Неужели так лень познать Python?

Ответить
1
Развернуть ветку
Нужный корабль

С чего стоит начать?

Ответить
–1
Развернуть ветку
Читать все 41 комментарий
null