Яндекс наступает на грабли Facebook, запрашивая полный доступ к вашим смартфонам (feat. DTF)
Кто-то считает встраивание таких метрик хорошей идеей? Давайте разбираться.
Обновление: комментарий «Яндекса»
Такое уведомление могло появляться у некоторых пользователей устройств на Android 12, имеющих root-доступ, из-за проблемы в алгоритмах проверки на стороне AppMetrica. Мы исправили проблему в обновленной версии AppMerica 4.2.0.
Наличие root-прав на устройстве AppMetrica определяет для того, чтобы владельцы приложений могли учитывать эту информацию для аналитики и поиска ошибок в приложениях. Например, при определенных условиях пользователи с root-доступом могут использовать подписку без оплаты или повышать свой рейтинг в игре, и так далее. Никаких чувствительных данных ни о приложении, ни о его пользователях при этом AppMetrica не запрашивает и не получает. Безопасность данных наших пользователей и партнеров подтверждена международной сертификацией и соответствует мировым стандартам информационной безопасности.
Оригинальный текст
Предисловие
В 2018 году официальное приложение Facebook здорово напугало пользователей Android, когда от его имени пошли запросы на выдачу прав суперпользователя (root), позволявших ��рограмме делать со смартфонами всё что угодно.
Когда жалоб стало слишком много, представитель Facebook вышел на связь и заявил, что всплывающее окно с запросом root-прав просто «ошибка в коде», от которой благополучно избавились.
Нам не нужны (и не хотелось получать) эти права [суперпользователя], и мы уже исправили эту проблему. Приносим извинения за вызванный сумбур.
Эта история стала лишь еще одним случаем в череде крупных скандалов, связанных с конфиденциальностью и защитой персональных данных пользователей социальной сети Facebook.
А как с этим у нас?
В том же десятилетии российские компании, напротив, очень редко фигурировали в заголовках новостных сводок на тему слежки или превышения полномочий в своих мобильных приложениях. Из событий тех лет можно вспомнить разве что, как в 2015 году на Хабре появилась заметка с вопросами к мобильному приложению «Яндекс.Метро», которое безо всякой на то причины и без предупреждения круглосуточно собирало и отсылало на свои сервера геолокацию устройства со списком идентификаторов, по которым не составляет труда выйти на его владельца. Вот какой ответ тогда пришел из команды Яндекса:
То, что метро отправляет эти запросы в фоновом режиме — это явный баг ‹…› Исправим в ближайшем релизе ‹…› Если не учитывать бага со сбором данных в фоне, то, на мой взгляд, сбор данных о локации для приложения с функционалом карты не является шпионством.
При этом без ответа оставался вопрос, как встроенная минимум в пять приложений Яндекса (Карты, Транспорт, Такси, Электрички, Метро) служба, занимающаяся сбором и отправкой данных о местоположении с привязкой ID, могла появиться из обычного бага.
Через неделю Яндекс решил постоять за свою репутацию и выложил в своем блоге публикацию с разбором «странностей в работе Яндекс.Метро», где ответил на некоторые вопросы. Суть поста сводилась к следующему:
- Приватность пользователей очень важна для нас
- Работа службы вне приложения — баг, такого не будет
- Без службы никак, а о запросах вас предупреждали в пользовательском соглашении
Правда на главный вопрос ответ появился не в самом материале, а в комментариях, лишь со второго раза:
По этой логике главным виновником ситуации можно признать тот же Google за несовершенную реализацию разрешений приложений в тогдашнем Android и оттого вынужденные костыли. Вопрос закрыт.
Повод для нового поста в корпоративном блоге?…
С тех пор многое изменилось. Появились новые разрешения на геолокацию в Android, мобильные приложения стали получать приставку «супер-», а в 2022 году Яндекс решил наступить на грабли вслед за Facebook.
Сразу уточню, Magisk (обобщенно говоря, провайдер root-прав) известен немалому числу пользователей Android, в том числе из СНГ; не является чем-то диковинным или опасным сам по себе, у него открытый исходный код и не подпорченная репутация, в отличие от ряда неофициальных модификаций клиента VK, «правильных» пересборок MIUI и прочего неочевидного зловреда с отечественных технофорумов. Но речь сегодня не о нем.
Итак, в конце января 2022 года на мои устройства (на базе Android) стали приходить оповещения от Magisk, что такие приложения Яндекса, как Браузер (com.yandex.browser, предустановлено в систему производителем смартфона), Я.Маркет (ru.beru.android, прямиком из Play Маркет), Яндекс (ru.yandex.searchplugin, предустановлено), Яндекс Go (ru.yandex.taxi, прямиком из Play Маркет) и Карты (ru.yandex.yandexmaps, предустановлено), запрашивают права суперпользователя (root).
Списать на внезапный троян возникшую ситуацию не удалось. После незатейливой декомпиляции приложений (скачанных из Play Маркета) я обнаружил, что в некоторых файлах четко указано рыскать по смартфону в поиске приложений для root-прав (например, SuperUser.apk) и вызывать команду su для root по какой-то своей внутренней логике.
Забегая вперед, скажу, что практика отслеживания потенциальных уязвимостей на смартфонах не нова, вот уже несколько лет этим занимаются некоторые приложения банков, чтобы уведомить своего клиента мол «смотри, у тебя на телефоне можно выдавать root-права, будь осторожен, не давай их кому попало, а то деньги уведут, и мы ничего не сделаем». Сегодняшняя история отличается от повсеместной практики тем, что приведенный банковский «функционал антивируса» сам не начнет запрашивать у тебя эти самые root-права, поскольку иначе станет в один ряд со зловредами.
Почему бы просто не написать в Яндекс? Хочешь хайпа?
Я понимаю, что если сразу обращаться к саппорту крупной IT-компании без какой-либо огласки, то с высокой вероятностью получу отписку, что всё это — неправильная трактовка их кода, результат вирусов у меня в телефоне и вообще со стороны разработчиков не сделано ничего недопустимого.
Да, предвкушаю контраргумент, что и с шумихой любой IT-гигант сможет публично оправдаться заботой о безопасности и сохранности [чего-угодно] пользователей, и всё это не имеет смысла. Но попытаться стоит. Я убежден: любая неочевидная метрика, резко и без основания пытающаяся заполучить полный доступ к смартфону, ничем не отличается от зловреда, против которого и созданы антивирусы.
А поскольку приложения с этой встроенной метрикой выходят в Play Маркете и других каталогах приложений, команды должны раскрывать и обосновывать их действия ничуть не меньше, чем все остальные разработчики. Тем более, если приложениям уже мало тех системных разрешений, которые они открыто просят у пользователей. На секунду: незаявленный функционал — это вполне обоснованный повод для исключения приложения из онлайн-каталога.
За всё время пользования Android (примерно с 2011 года) это первый случай на моей памяти, когда программы запрашивают root-доступ, хотя их разработчики ни разу не заикались о его необходимости, в отличие от специализированных программ, которым он действительно необходим (это обосновывается, и потому многие из таких приложений беспрепятственно выходят в Play Маркете).
Итак, не знал, куда бы обратиться и написать об этой ситуации, поэтому забросил попытки докопаться до сути… до сегодняшнего дня, когда недавно обновленное мобильное приложение DTF тоже послало злосчастный запрос (см. скриншот в самом начале статьи).
Теперь у меня появился повод рассказать об этом именно здесь ^_^
В обоих случаях код, вызывающий команду su, приводится в файлах службы метрики Яндекса, но теперь он замечен не только в собственных сервисах Яндекса, но и у DTF.
Вместо заключения
Уверен, что я не первый человек, который с января получал такие запросы от приложений Яндекса, но пока не нашел в блогах Яндекса какого-либо опровержения или обоснования этому поведению.
Также, пока писал заметку, наткнулся на глоссарий AppMetrica (платформа Яндекса), где говорится о том, что в отчёте может предоставляться информация, «имеет ли устройство root-access».
Повторюсь, что я не высказываюсь против идеи уточнения метриками наличия root-прав на смартфонах. Однако, как показывает практика, ничто не мешает это реализовывать и без выполнения опасных команд. Как? Обратиться к опыту банковских приложений и утилиты Momo, последняя не просто определяет, есть ли root или нет, но и объясняет, на основании каких признаков сделан вывод.