Вся история с Google Play и 2ГИС — наш post mortem
Мы уже рассказывали о произошедшем и получаем много вопросов от пользователей. Решили подробнейше разобрать ситуацию публично, рассказать все технические нюансы и дать максимум ответов. Материал будет интересен тем, кто любит углубляться в детали, и паблишерам приложений в Google Play, которые могут столкнуться с аналогичными трудностями.
Post mortem — это статья, написанная по следам крупного инцидента. Её цель — помочь предотвратить подобные ситуации в будущем.
Как всё обычно работает?
Ошибки в алгоритмах проверки — не редкость. Перед релизом в Google Play каждое приложение проходит проверку. И если систему проверки что-то смутило, то разработчик получает уведомление.
Решение проверки можно оспорить, прикрепив скрины или текстом объяснив модератору необходимость каких-то запросов или работу той или иной фичи или библиотеки. Как правило, именно такие шаги помогали нам решать большинство вопросов модерации.
Но 2ГИС нет в Google Play, и мы не можем получать и оспаривать перед релизом решения алгоритмов проверки. Поэтому сейчас мы разбираемся, что послужило причиной ошибочного срабатывания защиты.
Почему вообще Google Play Protect определил 2ГИС как «опасное» приложение?
Мы не знаем наверняка. Возможно, Google действует по простому алгоритму. 2ГИС нет в Google Play, значит, модерация может не иметь ссылку на политики конфиденциальности, которые выполняют ключевую функцию по регулированию работы с данными. Он не может задать нам уточняющие вопросы о запрашиваемых разрешениях и автоматически помечает 2ГИС как вредоносное.
Если смотреть список причин, из-за чего можно попасть в эту категорию spyware, к которой нас отнёс Google, то можно предположить только одну причину — чтение контактов и фото. Для остальных возможных причин у приложения нет прав. Оба этих действия мы делаем строго с согласия пользователя. Контакты используем для построения социального графа (отзывы и «Друзья на карте»), а фото — для добавления изображений к местам.
Разрешения запрашиваем не при запуске приложения, а непосредственно при действиях пользователя в конкретных фичах. Обе эти пермиссии существуют с нами давно.
Зачем вам permission на SMS и журнал звонков?
Мы не запрашиваем такие чувствительные пермиссии. В заблуждение вводит шаблонный текст от Google Play Protect.
Мы используем SMS Retriever API от Google, чтобы автоматически вводить одноразовый код из нашей же смски, когда вы регистрируетесь в 2ГИС по номеру телефона. То есть вам не нужно вручную вводить одноразовый код для 2ГИС, который вы получили в SMS.
В предупреждении об опасности Google Play Protect используется текст, в котором перечисляется всё обобщённо. Из-за этого может показаться, что 2ГИС якобы имеет доступ ко всем SMS и журналу звонков. Это не так.
Зачем вам моя фоновая геопозиция? Пермиссии ACCESS_BACKGROUND_LOCATION и ACTIVITY_RECOGNITION
В начале декабря мы выпустили фичу «Друзья на карте», сейчас ей активно пользуется несколько процентов аудитории — пользователи могут разрешать друг другу видеть, где они находятся. Самостоятельно приложение не может получить права фонового определения геопозиции. Чтобы 2ГИС получил доступ, пользователь сам должен перейти в настройки телефона и явно их выдать. Разрешение запрашиваем только при включении «Друзей на карте», оно необязательное и нужно только для тех, кто решил использовать фичу.
Вот как происходит её включение:
Запрос на отображение геопозиции в фоне отличается от запроса геопозиции для отображения вашего местоположения на карте — там мы не запрашиваем фоновую геопозицию.
Контакты. Зачем картографическому приложению permission READ_CONTACTS?
Для добавления друг друга в друзья и построения соцграфа. Друзья показываются на карте и в карточках мест, чтобы пользователи могли видеть мнения близких людей о ресторанах, парках или стоматологиях.
Пермиссия необязательная, запрашиваем только если пользователь сам хочет добавить в 2ГИС контакты для «Друзей на карте» или рекомендациях в отзывах.
Звонки. Что на счёт пермиссии CALL_PHONE?
CALL_PHONE используется для звонка в компанию напрямую из приложения без дополнительного перехода в системный дайлер («звонилку»). Эта пермиссия в приложении уже давно. Запрашиваем её непосредственно после тапа на номер телефона в карточке компании.
Доступ к микрофону? Permission RECORD_AUDIO
Для голосового ввода текста — эта функция есть во множестве популярных приложений. Например, чтобы за рулём быстро найти нужный адрес, не набирая его на клавиатуре. Запрашиваем разрешение в тот момент, когда вы активируете функцию голосового ввода.
Что говорит сам Google?
Пока ничего. Мы сразу отправили апелляцию, на статус всё ещё In progress. Обращения по другим каналам тоже остаются без внимания, в том числе обращение в Google Play Community, поддержанное нашей аудиторией (спасибо вам!).
Есть ли сейчас безопасная с точки зрения Google версия?
Свежая версия 6.31.0.535 свободна от предупреждений Google Play Protect. В ней мы удалили пермиссии, на которые теоретически мог ошибочно срабатывать Play Protect: android.permission.READ_CONTACTS, android.permission.CALL_PHONE, SMS Retriever API (это не пермиссия, но в ситуации недостатка информации решили тоже отключить).
Мы рекомендуем использовать её всем пользователям, чтобы не сталкиваться с предупреждениями.
Почему при самообновлении через 2ГИС от Google Play Protect всё равно появляется предупреждение на новую версию?
Версия 6.31.0.535 свободна от предупреждений Google Play Protect. Но обновиться на неё с предыдущей версии без предупреждения не получится — для Google Play Protect всё выглядит так, что «вредоносное ПО пытается поставить ещё одно приложение». И, конечно, пользователя об этом предупреждают. После обновления предупреждение перестаёт показываться.
А почему старые версии 2ГИС не помечают как«вредоносные»?
Мы не знаем. И по использованию данных, и по пермиссиям они одинаковы с harmful-версиями («вредоносными»).
Может быть проблема в новой фиче «Друзья на карте» по шарингу геопозиции?
Мы рассматриваем эту версию. Но против неё три аргумента:
- Фича вышла в версии 6.29, на которую Google Play Protect не «ругается».
(upd 16 января Google начал отправлять ошибочные уведомления для версии 6.29, но прежние два аргумента в силе)
Более того, в первое время после появления проблемы эта версия была тихой гаванью, куда мы перенаправили все новые установки пользователей. - В новой версии 6.31.0.535 мы не удаляли эту фичу, а Google Play Protect перестал относить приложение к вредоносным и не видит больше проблем с безопасностью.
- Для нарушений, связанных с отслеживанием местоположения у Google есть категория stalkerware, а не spyware, ошибочно присвоенная 2ГИС.
Если отобрать у 2ГИС все пермиссии, он останется работоспособным?
Да. Как и в случае, если не выдавать пермиссии — приложение будет работать с учётом ограничений.
Первый раз вижу чтобы Google Play Protect срабатывал на крупное известное приложение. 2ГИС первый?
Нет, 2ГИС не первый. Похожая история случилась с Samsung Wallet: обсуждение на reddit и в треде на форуме Google.
Все равно вам не верю, вы просто очень складно сочиняете. Google крупная компания, почему я должен верить вам?
Мы уверены, что произошла ошибка, и уверены в безопасности 2ГИС. Мы рассказываем подробно обо всём, что делаем в эти дни, аргументируя свои выводы. Мы прозрачны и не пытаемся завлечь вас обманом пользоваться 2ГИС. Если вы хотите получить ещё больше деталей — пишите нам, обязательно поделимся.
Что делать?
Вы можете обновиться на новую версию 6.31.0.535, которую Google Play Protect уже не помечает как вредоносное. Второй вариант: временно отозвать все разрешения 2ГИС в настройках устройства, если они нужны для функций приложения, которыми вы не пользуетесь.
Руслан Назаров, ведущий Android-разработчик
Антон Спиридонов, руководитель разработки
Нормально объяснили. 2ГИС уважуха!
» Пермиссии
Мы вообще-то в России. В русском языке нет такого слова.
Слова тролль тоже не было раньше. А вон, поди же ты - сидишь тут.
Слова «разрешения» или «права доступа» видимо недостаточно технологично звучат.
Ну пермишнс звучит ещё глупее, ну а если прогеры постоянно сталкивающиеся с какой то частой в их работе проблеме решили дать ей некое конкретное название, значит так тому и быть)) можно в словарь вносить, как новый англицизм. А пытаться с помощью "фи" учить айтишников ещё глупее чем требовать от гопников не пить пиво ночью на лавке, в лучшем случае матом пошлют)
это ж термин
Учитывая как работает служба проверки приложений у гугла, иногда достаточно просто отправить точно тотже релиз но с новой версией сборки.
Подтверждаю. Прокатывало раз пять)
Почему из гугла удалили а в аппстор вернули? Вот это мне интереснее.
Две разные компании с несвязанными сторами, с независимыми правилами модерации в них. И в каждой свои процессы и своя реакция на происходящее.
Кажется, с 2ГИС случилось всё неклассное, что могло случится:( Лучи поддержки всем.
Хрен пойми, что людям нужно
Одни кричат о том, что расскажите, что произошло, давайте больше гласности
Вторые же, заводят телеку про "оправдание путь виновного"
С людьми на контакт идут, а люди "ГЫГЫГЫ ВЫ ПОМОЙКА"
Чего злые то все такие, с обеих сторон?
2ГИСу - сил и ума, чтобы поскорей разобраться со всем
Остальным - просто ума и доброты в сердце (ну и паранойи поменьше)
Когда-то я был фанатом 2ГИС, ещё во времена Symbian.
А сейчас даже не авторизоваться по почте, чтобы отзыв о фирме оставить.
Фу такое.
наавторизуются фейканы, потом репутация в го*не. ну такое - не понимать этого.
Самое наглое из виденных мной приложений - WhatsApp.
Оно просто отказывается работать, пока ему хотя бы один раз не дашь доступ к контактам.
Наглость и непринуждённость. Один раз приспичило - пришлось устанавливать у маленького сына, у него книга контактов пустая.
Вы еще WeChat не пробовали :).
Там за отказ выдать доступ к контактам может оказаться невозможным дальше продолжить регистрацию аккаунта на этот номер.
Гугл последнее время решил, что безопасный только он!
Просто тырить и пользовать данные он хочет в одну каску, это же бабло рекламное.
Тот момент когда читал про проблему, а узнал про хороший аналог гугл контактов на карте. Тугис и тут обогнал красных.
Уже поздно. Теперь 10 раз подумаю прежде чем возвращать эту помойку обратно в свой телефон.
Это разрешение действительно дает доступ ко всем SMS.
Нет у 2гис таких разрешений
Подскажите, где можно чуть подробнее почитать?
Мне почему-то кажется что 2гис прогнулся под структуры власти и силовиков. Какой-то шпионский код был добавлен в приложение как раз незадолго до мартовских выборов. Возможно фсб будут использовать инфраструктуру 2гис для своих каких-то операций по выявлению протестующих и прочее. То как они оправдываются выглядит забавно.
А ничего что протестующие уже давно релоцировались?
Конспиролог, впрочем, вы годный.
У Google очень плохой по качеству ревью даже в самом сторе: протащить мимо него можно любую скрытую функциональность, если она не требует разрешений из черного списка (включая ее через его же remote config, проверено), полагать что Play Protect работает как-то иначе было бы наивно.
Поэтому теория в принципе была бы хорошей, но Google не обладает достаточными компетенциями, разве что привлекли топовых реверсеров для исследования, но тогда думаю был бы и какой-нибудь пост у них в блоге.
Я думаю, что если к ЛЮБОЙ компании в РФ придёт правительство - никому не отвертеться, вне зависимости от полит позиции и отношению к правительству
Есть опасность для владельцев приложений - Google может тихо удалять приложения с устройства.
Google Earth например не было в ru GP. Если скачать и установить apk из стора где есть, то после установки через какое-то время приложение удалится.Никаких дополнительных предупреждений, сообщений и прочего. Вариант - ставить с исправленным bundle ID.
Т.е. механизм тихого удаления есть, когда и как корпорация не-добра захотят использовать для чужих приложений вопрос.
Это при выключенном автообновлении?
молодцы 2ГИС, хорошо работаете с аудиторией, спасибо. а я сразу решил, что это гугл вредничает и просто забил на уведомление :-) уже больше 15 лет пользуюсь сервисом
Бесконечно можно смотреть как подсанкционные конторы пытаются выщемится в сторы
Вы в суть плохо вникли - всё чётко наоборот - их то там как раз в сторах уже давно нет, а проблема куда неприятнее для айти, чем на первый взгляд - переживвют не из-за того, что не могут не залезть в карман поглубже, а из-за того, что тупо не отхватили жесткую антирекламу непосредственно на самом товаре, причём массово, считай, репутация просела минимум раза в два, просто одним кликом какого то болвана из силикоидной лрлины, а назад эту самую репутацию вернуть будет крайне сложно.
По моему это конкретная провокация и беспредел. То есть, на многих из нас сейчас американцы испытали возможность без каких либо усилий залезть в голову. И эта мелочь для нас всех кажется, а уже скандал, хоть и местечкового уровня, а если они просто в какой то момент воспользуются и в полную силуа, то ест фактически, бэкдором ко всем смартфонам на андроиде в мире ?
Так они не особо пытаются.
Просто кое для кого приложение не из системного стора - подозрительно по определению.
1) 2гис = уроды. Щас расскажу.
Вот мой магазин в 2ГИС.
https://2gis.ru/kaluga/search/часы/firm/8585515070657787
Всякий раз перед очередным праздником вношу изменения режима работы в яндекскарты и гуглкарты, и пытаюсь то же самое сделать в 2гис. Ан нет! - функция не реализована.
2) Вывод из п.1: Вы самоубийцы, уже давно. А ведь когда-то лидировали по информативности во всех провинциях, особенно за Уралом.
3) Итого. Помер Максим, ну и фиг с ним.
В личном кабинете можно скорректировать
2гис - хочу чтоб можно было несколько точек маршрута задавать и тусовать их туда-сюда.
Давно есть. При построении маршрута можно нажать зайти и хоть 10 промежуточных точек добавить и менять их местами.
https://developer.android.com/reference/android/Manifest.permission#RECEIVE_SMS
Но, пожалуй, это вам ваши коллеги, получающие ЗП, должны подсказать.
Этот permission и SMS Retriever API, который использует 2ГИС, связаны между собой чуть менее чем никак
Проходили через такое. Мы делали сервис для родительского контроля по определению местоположения без использования интернета, через смс. Через пару месяцев после внедреня этой киллерфичи из Play нас выпилили к херам. И еще добавили плашку: опасное приложение с вирусом!
Апеляции не помогли.
Похоже, приложения которые умеют читать смс в фоне попадают в базу вредоносного ПО. Чтобы не попасть в такую ситуацию, лучше заранее писать в редакцию проверки Play.
Даже не догадываюсь, с чего бы это. С учетом распросранения смс-авторизации, например...
А можете как-то сделать чтобы ваше приложение нормально в фоне на андроиде работало? Вот люто бесит когда что-то ищешь, потом переходишь в окно другого приложения, через пару минут возвращаешься в 2Гис, а оно заново загрузилось сбросив все, что успел найти. У Яндекс Карт такой фигни нет. Там возвращаешься в окно их приложения и только геопозиция подгружается, все остальное сохраняется как было до перехода в другое окно.
Пора уже смарт с 6 ГБ ОЗУ. У вас наверно 1-2 ГБ.
проверьте в настройках устройства, даны ли для 2ГИС разрешения работать в фоне
https://www.youtube.com/watch?v=HYRbclFVyws
Ваше "приложэние" - до сих пор определяется смартфоном как ОПАСНОЕ.
ОДНО ПРИЛОЖЕНИЕ ИЗ БОЛЕЕ ЧЕМ 50.
.
https://www.youtube.com/watch?v=sACj_1UG4UQ
на новое обновление не ругается, обновитесь через официальный сайт или рустор
Комментарий удален модератором
Поздно... оправдание путь виновного. Я рад что избавился от вашей ерунды на телефоне, дополнительно сбросив настройки.
Вместо того, чтобы работать над навигатором, который в центре Москвы кружит карту, постоянно сбивается с маршрута и перестраивает его, показывая что ты то тут то там так что вообще не понятно где ты и как ехать дальше, они прикручивают каких-то "друзей на карте", которыми будут пользоваться три калеки.
PS. и "пермиссии" это конечно высшая степень дебилизации русского языка
Ну, формально да, а по факту - не очень. Карту без геопозиции, конечно, можно использовать, но как-то очень уж неудобно.
Это так, замечание из разряда буквоедства.
Тем не менее небольшая часть аудитории именно так и пользуется. Мы всегда удивлялись, как люди это делают, но поискать адрес или посмотреть проезд вполне можно
Может тогда подскажите, а "requestLegacyExternalStorage" вам зачем был нужен?
External storage используется
1. Как костыль на старых телефонах — без него на некоторых устройствах слетает доступ к файлам на внешней SD-карточке.
2. Для доступа к загрузке фоток на старых Андроидах (на которых нет более нового варианта — READ_MEDIA_IMAGES)
https://www.youtube.com/watch?v=_3N2jBr4ugQ
СМС в фоне это жесть, уберите и не позорьтесь
смс в фоне?
Почему же
пермиссии, перверсии...
Удалили компанию из справочника за отказ от рекламы