Серов рассказал 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 станция, где работа 2147e37a8a MNC-код оператора 902b4ec3 МТС dabab083 Yota f6905f4a «Мегафон» 761370df «Билайн» 159961e5 Tele2 843539b896 Стоимость телефона/ноутбука 85ebdc3d дорогой 739b57f7 средний

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