В середине марта программист Владимир Серов раскрыл самую крупную уязвимость в сервисе бесплатного Wi-Fi московского метро. Минимум год дыра позволяла любому получить номера телефонов всех подключенных пассажиров поезда, а затем прочитать в незашифрованном виде цифровой портрет каждого: примерный возраст, пол, семейное положение, достаток, а также станции, на которых человек живет и работает. Затем Серов пошел дальше и написал скрипт, позволяющий отслеживать передвижение по подземке конкретного абонента, если он подключен к сети MT_FREE, — обычно такие технологии доступны только спецслужбам. Компания «МаксимаТелеком», оператор системы, зашифровала номер телефона в течение суток после того, как об уязвимости стало известно публично. Остальные данные открыты до сих пор, а сколько человек могли сохранить всю незашифрованную базу за время, пока «дыра» была открыта — неизвестно.

Статистики за 2017 год нет, но к декабрю 2016-го в сетях «Максимы» было зарегистрировано более 12 миллионов пользователей. Все их телефонные номера неизвестные могли загрузить ранее, а сейчас могут отследить, в каких конкретно поездах находятся абоненты. The Village рассказывает, каким образом в Сеть утекла информация стоимостью в миллионы рублей, почему это опасно и как вы можете проверить, что о вас знает Wi-Fi в Москве.

В чем уязвимость

У любого устройства, поддерживающего Wi-Fi, есть уникальный номер, который называется MAC-адрес. Авторизация в сети городского интернета MT_FREE происходит по сочетанию MAC-адреса с номером телефона, который пассажир сам регистрирует в системе — по требованию закона о противодействии терроризму. Страница авторизации открывается у всех автоматически. Разработчик сети, провайдер «МаксимаТелеком», разместил там рекламный блок. Именно на нем компания и зарабатывает. Чтобы сделать рекламу более эффективной, используется таргетинг — вам выдаются те объявления, которые лучше подходят к вашему цифровому портрету предпочтений. Обычно этот портрет собирают крупные аналитические и маркетинговые компании, которые затем передают данные в зашифрованном виде конкретным рекламным площадкам. Однако программист Владимир Серов обнаружил, что цифровой портрет, включая номер телефона на странице авторизации Wi-Fi в метро Москвы, никак не шифруется.

Серов рассказал The Village, что нашел уязвимость еще 5 марта, и обратился к знакомым разработчикам из mos.ru, «убедившись, что запрос дошел до ответственного за wi-fi в метро». Стоит отметить, что напрямую к «Максиме» Серов не обращался, а спустя неделю решил опубликовать находку на профильном ресурсе для программистов.


Владимир Серов

Android-разработчик

Я обнаружил это еще месяц назад, 5 марта. Решил посмотреть, какие данные мне отдает страничка авторизации, и обнаружил кусок кода userdata: там совершенно открыто была перечислена информация, включая номер телефона, пол, примерный возраст, семейное положение, достаток, станции, где твои дом и работа, и все привязано к твоему MAC-адресу. Хоть по закону страница и не выдает персональные данные (нет фамилий и имен), публично привязывать номера к MAC-адресам все равно опасно. Поменять MAC-адрес можно на любой другой, это легко. Значит, зная чужой MAC-адрес, можно посмотреть, что по нему выдает страница авторизации Wi-Fi.

Дальше: есть такая программа, Airodump-ng — она позволяет получить MAC-адреса всех активных Wi-Fi-устройств вокруг тебя в виде готовых списков. Сел, допустим, на красной ветке, на «Библиотеке имени Ленина», за пару станций собрал тысячу работающих маков и смотришь по ним социологию о владельцах.

В тот же день я написал об этой уязвимости ребятам из mos.ru, потому что у самой «МаксимыТелеком» нормальной техподдержки нет. То есть я их начальству рассказал о том, как подрядчик раздает направо и налево личные данные о пользователях — письмо спустили вниз, но ответа я так и не получил. Прождал неделю и написал на «Хабрахабр» пост «Как получить телефон (почти) любой красотки в Москве, или Интересная особенность MT_FREE». Сделал небольшой скрипт, который сам выгружал данные в удобном виде. Мы с читателями начали веселиться.


The Village обнаружил, что по данным сервиса Wayback Machine, уязвимость была в коде страницы авторизации как минимум с 17 мая 2017 года. В августе компания заявляла, что идентификацию в сети ежедневно проходят 1,5 миллиона пользователей, а раньше, в декабре 2016-го, — что всего зарегистрировано более 12 миллионов пользователей. Эта же сеть MT_FREE сейчас доступна и в «Аэроэкспрессах», на Московском центральном кольце и даже в некоторых пригородных электричках, включая «Ласточки». А с 2017 года «Максима» развивает ту же самую сеть в Петербургском метрополитене.

Насколько это расширяет объем номеров, которые могли быть раскрыты, неизвестно, The Village тестировал уязвимость только в метро Москвы. Однако все цифровые портреты и сейчас доступны по точно такому же принципу подмены MAC-адресов, который описал Серов: любой мог собирать миллионы телефонных номеров на протяжении года. Любопытно, что совладелец «Максимы» Алеко Крихели признавал в интервью «Деловому Петербургу», что компания собирает информацию о пользователях, но, в отличие от коллег по рынку, «не загружает их в сторонние рекламные площадки», а хранит как «уникальное богатство».

Как отследить ваше местоположение

На получении «цифрового портрета» Серов не остановился. Исследуя узявимость подробнее, он обнаружил индикатор current_station («текущая станция»), который постоянно менялся. Названия самих станций в нем заменили на обычные номера. Довольно быстро удалось составить карту, просто отслеживая передвижение собственного MAC-адреса, и выяснить, например, что «164» — это «Южная», а «165» — «Пражская» — станции на одной ветке нумеруются последовательно. Написав еще один простейший скрипт, Серову удалось отследить передвижение другого человека по подземке в режиме реального времени — некая девушка возвращалась с работы домой. Во время тестирования слежке поддался один из 16 случайно пойманных MAC-адресов. Неизвестно, сколько данных, привязанных к номерам телефонов, другие люди уже могли сохранить за год. Имея такую базу, потенциально отследить более 10 миллионов телефонов в подземке можно и сейчас.

Тестирование трекинга по MAC-адресу в метро Москвы в режиме реального времени

Обычно отслеживать геолокацию конкретных телефонов могут только спецслужбы — технология триангуляции абонента с помощью близости к сотовым вышкам требует решения суда и постоянного общения с сотовыми операторами. Уязвимость MT_FREE делает передвижение абонента по подземке абсолютно прозрачным.

Как реагировала «МаксимаТелеком»

Уже через два часа после публикации Серова номер телефона на странице авторизации стал шифроваться в виде «хеша с солью» («хеш» в данном случае — номер телефона, а «соль» — добавочный ключ к строчке из случайных символов). Схожий алгоритм шифрования используется в криптовалютах, чтобы исключить вероятность хакерского взлома. Однако Серов считает, что и этот способ небезопасен, поскольку телефоны можно будет снова вскрыть, как только в Сеть сольют значения «соли», то есть ключа.

К программисту обратились представители «Максимы», попросив удалить публикацию. Серов отказал: «Все это время компания была в курсе, что нарушает банальные правила безопасности работы с подобными данными — и не только отдавала (и отдает) их пользователю, что невиданно, но и делает это по незашифрованному каналу в открытой сети. И почему я должен молчать о том, что с моими личными данными так обращаются?» Затем представитель компании попросил добавить в пост официальный комментарий, но Серов снова отказался. С разрешения программиста The Village публикует фрагмент из ответов оператора (вся переписка есть в распоряжении редакции):


«МаксимаТелеком»

представитель

Уязвимость, обнаруженная на портале авторизации, которая позволяла анализировать профильные данные других пользователей, можно было применить исключительно при подмене MAC-адреса и отправке запроса к порталу непосредственно в сети MT_FREE. Это сильно ограничивало ее полезное применение, однако мы благодарны пользователям за неравнодушие и оперативно устранили выявленные недостатки архитектуры системы <…> [Мы] убрали передачу профильных данных (таких как номер телефона, пол, возрастная группа и прочее) в открытом виде или в формате, который подлежит легкой дешифровке. Мы применили устойчивое шифрование с «солью» и обновили справочники в смежных системах. Причем мы зашифровали не только значения, но и сами имена переменных, чтобы усложнить реверс-инжиниринг этого массива данных <...> Решили проблему отсутствия ограничений на число попыток входа в личный кабинет, что потенциально позволяло получить доступ к чужому личному кабинету методом простого перебора СМС-кода. <...> Начали внутренний аудит используемых в продуктиве форм на предмет небезопасного обмена данными между клиентом и сервером и уже исправили ряд других выявленных недостатков. <…> В новом релизе системы авторизации в принципе не будет возможности загрузки страниц с подменой MAC-адреса, что повысит устойчивость всей платформы к подобным атакам.


Серов заявляет, что компания лукавит, когда рассуждает о безопасности, — масштабы ошибки они не признают, а защититься от подмены MAC-адреса практически невозможно. По его версии, разработчики допустили уязвимость, чтобы сэкономить на загрузке серверов «Максимы»: обычно скрипт для таргетинга работает удаленно, а в браузер на телефон человека приходит уже ссылка на конкретный рекламный блок. Сейчас же выбором подходящего объявления занимается как бы сама страница авторизации, именно она по MAC-адресу и подгружает цифровой портрет человека, который в итоге оказывается в публичном доступе. Данные пассажиров, за исключением номера телефона, до сих пор открыты — пункты цифрового портрета просто заменили на случайный, но статичный набор символов.

The Village также обратился за комментарием в «Максима Телеком».


Анастасия Самойлова

Представитель компании

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

Идентификация абонентов в любых сетях происходит с использованием MAC адресов, что отвечает требованиям постановления №801 Правительства РФ от 12 августа 2014 года.

Данные, хранящиеся в профиле пользователя сети – это внутренняя база данных, создаваемая для нужд бизнеса компании. Требования к ее защите законодательством РФ не предъявляются, поскольку она не содержит персональных данных, однако кража такой базы описанным путем может расцениваться как деяние, предусмотренное ст. 272 УК РФ.

Для того, чтобы улучшить безопасность сервиса, мы призываем сообщать о найденных уязвимостях на ibhotline@maximatelecom.ru и гарантируем, что сообщения на эту линию не останутся без внимания».


Почему такая утечка могла произойти

IT-специалист Владислав Здольников считает, что уязвимость больше похожа на банальную некомпетентность создателей, чем на желание разгрузить серверы.


Владислав Здольников,

Основатель сервиса TgVPN и IT-консультант ФБК

Действительно, авторизация в Wi-Fi-сетях происходит по MAC-адресу; с этим ничего поделать нельзя, никаких вариантов лучше нет. Но тот факт, что аналитическая информация передается на браузер пользователя, — это какая-то очень странная история. Даже на тех ресурсах, которые собирают аналитику о пользователе и которые подразумевают авторизацию по логину и паролю (то есть нельзя просто так притвориться другим пользователем), эта информация чаще всего недоступна для пользователя и уж тем более не передается в браузер. А уж для сервиса, в котором можно без труда притвориться другим пользователем (почти на любое устройство можно прописать MAC-адрес другого устройства), — это запредельный уровень пренебрежения личными данными пользователей.

Такая архитектура не очень похожа на экономию ресурсов «МаксимыТелеком» — скорее, это можно объяснить некомпетентностью тех, кто делал механизм. Отдельно возмущает то, что компания после публикации уязвимости не срочно отключила выдачу аналитики и перестала переделывать этот механизм, а просто заменила значения, которые уже расшифрованы.


Как проверить самому

Вы сами можете проверить, какой цифровой портрет о вас сохранил Wi-Fi в метро. Для этого достаточно подключить ноутбук к сети MT_FREE в метро или наземном транспорте и зайти на страницу. Затем откройте исходный HTML-код страницы или «Инструменты разработчика» — например, в браузере Google Chrome это можно сделать, кликнув на пустом поле правой кнопкой и выбрав пункт «Посмотреть код страницы». В самом коде нас интересует только фрагмент, после userdata. Сейчас он выглядит хаотичным набором символов, но Владимир Серов составил таблицу с расшифрованными значениями. Их и следует искать в документе с кодом (Ctrl+F или CMD+F).

5777DE2CD9

Возраст

7ef6265d

45+

0ae09acd

35–44

c40467ec

12–17

00f0d9de

18–24

fd5a4e2f

25–34


b6c3b13598

Пол

1549f86b

Мужчина

bf5cc560

Женщина


cb19ed6f70

Занятость

1d049b46

студент

78051d61

безработный

4294e679

домохозяин


5e97672e80

Семейное положение

b2ccc4af

не женат

d858a4ad

в активном поиске

7dce1b03

женат

3d2e2a0d805

Достаток

785d323e

низкий

85ebdc3d

высокий

b8a058b4

средний


cec952789d

станция, где человек сейчас

104c52d70d

станция, где дом

f4befe4ab6

станция, где работа


902b4ec3

МТС

dabab083

Yota

f6905f4a

«Мегафон»

761370df

«Билайн»

159961e5

Tele2


843539b896

Стоимость телефона/ноутбука

85ebdc3d

дорогой

739b57f7

средний

В незашифрованном виде фрагмент userdata выдавал даже теги, которые к вам уже привязали маркетологи. Например, к MAC-адресу самого Владимира Серова были привязаны yandex.taxi, obed, coffee, а также аналитика по использованию МЦК и пригородных электричек. Напоследок Серов утверждает, что механизм авторизации по какой-то причине использует для удаленного хранения скриптов Yastatic — облако, которое использует только «Яндекс» для работы своих сервисов. Сами рекламные блоки «Максиме» отправляет платформа Adfox — она также принадлежит «Яндексу». Через него идет и обмен userdata: «Кто-то им эти данные передал, не особо беспокоясь и проверяя, куда они в итоге попадут».