{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Вся история с 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-разработчик

Антон Спиридонов, руководитель разработки

0
128 комментариев
Написать комментарий...
Alex Nosov

А можете как-то сделать чтобы ваше приложение нормально в фоне на андроиде работало? Вот люто бесит когда что-то ищешь, потом переходишь в окно другого приложения, через пару минут возвращаешься в 2Гис, а оно заново загрузилось сбросив все, что успел найти. У Яндекс Карт такой фигни нет. Там возвращаешься в окно их приложения и только геопозиция подгружается, все остальное сохраняется как было до перехода в другое окно.

Ответить
Развернуть ветку
Vlad Ig

Пора уже смарт с 6 ГБ ОЗУ. У вас наверно 1-2 ГБ.

Ответить
Развернуть ветку
Victor Ivanov

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

Ответить
Развернуть ветку
Alex Nosov

Это интересная тенденция последних лет - рост требуемой оперативной памяти. Как для смартфонов, так и для ПК. Причем, порой, вообще не заметно чтобы какое-то приложение как-то значительно поменялось, а оперативу есть начало больше. Недавно решил в одну онлайн-игру вернуться на ПК. Не играл 2 года. Последний раз до перерыва я в одном мониторе играл, в другом занимался в 3Д проектированием между загрузками в игре, параллельно был открыт хром на 100+ вкладок и шел процесс 3Д печати, слайсер для которого забирает 1,5 Гб. И вот поставил снова игру и оказалось, что моих 16 Гб уже не хватает, одна только игра начала жрать 10+ и видеокарту тоже нагрузила. При этом, из серьезных изменений только жадность 1С до донатов.

Ответить
Развернуть ветку
Victor Ivanov

Это не тенденция "последних лет".
Это было испокон веков.
Началось это с момента появления первых графических карт - S3 Virge, 3D Voodoo, и прочих.
Производители видеокарт вынуждали игровой рынок делать прожорливые игры, а это подогревало юзеров тратить деньги на железо.
В итоге этого замкнутого круга оказалось, что программисты отупели и обленились, обмазались библиотеками и фреймворками и напрочь забыли что такое 64k-demo, где важно было умение программировать и выжимать из железа максимум при минимальном коде.
Что мы имеем сейчас?
Недопрограммисты, которые ничего не понимают в стурктурах данных и алгоритмах, зато разбираются в фреймворках и библиотеках. А в итоге мы все получаем тормознутое, глючное говно на сотни гигабайт, требующее постоянного обновления.

Ответить
Развернуть ветку
A H

Базу выдал. Жаль только 1 лойс можно ставить

Ответить
Развернуть ветку
Victor Ivanov

вообще ничего не понял

Ответить
Развернуть ветку
Vlad Ig

это мировой заговор производителей смартфонов и разработчиков приложений и веб-мастеров

Ответить
Развернуть ветку
Victor Ivanov

могу только говорить про разработчиков приложений. Так вот, среди них нет заговора, но есть некомпетентность и требования сверху - делать быстро в ущерб качеству (не намеренно, но из-за нехватки времени и компетенций)

Ответить
Развернуть ветку
Vlad Ig

ну это рынок так решает: если можно сляпать быстро и дешево - то сляпаем. Клиенту пофиг на качество и размер кода.

Ответить
Развернуть ветку
Alex Nosov

4, но я не держу 100500 приложений открытыми и давно порезал большинству автозапуск

Ответить
Развернуть ветку
125 комментариев
Раскрывать всегда