Скрытые обновления приложений в Android

В последние полтора месяца с обновлениями приложений из Google Play начало происходить что-то странное. Это заметил как и я, автор этой статьи, так и некоторые пользователи Reddit и 4PDA. Давно известно, что Google может самостоятельно обновлять свои сервисы и сам Маркет, но тут речь идёт именно о сторонних приложениях: они обновляются без каких-либо уведомлений и согласия пользователя (даже если автообновление выключено в настройках).

Первое упоминание этой ситуации на 4PDA
Первое упоминание этой ситуации на 4PDA

У меня обновлялись по 1—2 приложения за раз при доступных ~50 обновлений. На 4PDA цифры разнятся, у кого-то они доходят до 5, у кого-то до до 12.

Некоторые предполагают, что Google тестирует недавно анонсированную функциональность In-app Updates API. Однако если верить описанию, для той возможности нужно предварительно запустить обновляемые приложения и взаимодействовать с интерфейсом.

Первое упоминание этой ситуации на Reddit.
Первое упоминание этой ситуации на Reddit.
Когда я только заметил эту ситуацию, в Google Play (Мои приложения > Установленные > Сортировать по дате обновления) показывалась дата, когда произошло самопроизвольное обновление. (Об подобном также свидетельствует этот пост.)
Пару дней назад ситуация повторилась, но с тех пор сам магазин Google Play обновился как минимум 1 раз. Я зашел туда же, чтобы посмотреть дату обновления, и обнаружил, что на этот раз она совпадает с датой релиза обновлений тех приложений в Google Play. И в списке недавно обновлённых приложений ничего нет. Из чего напрашивается вывод, что это не баг, и Google пытается это скрыть.

Очистка данных Маркета как способ решения оказалась неэффективной.

Официальных ответов компании также не поступало.

На Reddit и 4PDA многие говорят о том, что версии приложений совпадают с теми, которые были до обновления, при этом контрольные суммы apk изменились. Также неоднократно сообщалось, что некоторые приложения обновились даже при том, что они уже были на последней версии, которая вышла несколько месяцев назад. Я же заметил, что версии некоторых приложений изменились, и приложения, которые можно было обновить, теперь обновить нельзя. Однако большинство приложений, которые стали «жертвами», действительно уже были на последней версии. На 4PDA также дважды упоминается уведомление о загрузке «обновления безопасности» во время этого процесса, которое исчезает после его завершения. Также пользователи обратили внимание на появление в настройках Маркета опции «обновлять только из проверенных источников».

Скрытые обновления приложений в Android, image #3

Пользователь gar_alex на 4PDA также заметил, что обновлялись только приложения, у которых последние версии были выпущены с июня по октябрь (по ноябрь — прим.ред.).

Изначально у меня было предположение, что Google пытается закрыть какую-то серьезную дыру, пересобирая файлы приложений, при этом принудительно обновляя всех на последнюю версию приложения и не меняя версию у тех, кто уже был на последней. Но потом я решил сравнить оригинальные файлы с измененными.

Скрытые обновления приложений в Android, image #4

Все файлы внутри APK в проверенных экземплярах остались без изменений, их контрольные суммы полностью совпадали. Однако хэши APK не совпадали, поэтому я решил сравнить их с помощью diff'a.

Как видно на скриншоте слева, перед блоком с подписью APK появился ещё один блок байт, начало которого всегда содержит NDF! Его предназначение пока неизвестно. В документации о подписи приложений информацию также найти не удалось. Предположительно этот блок связан с вышеупомянутой опцией «обновления только из проверенных источников». Вероятнее всего, Google выкатывает новый слой безопасности приложений, который затруднит установку обновлений приложений из сторонних источников. Однако всё ещё не совсем понятно, почему это было решено сделать для уже установленных приложений, вместо внедрения этого в новые версии. А также почему этот процесс занимает уже более месяца, а его «жертвы» ограничены по дате.

Предотвратить автообновлние на данный момент можно только полным лишением доступа к интернету Play Market.

Проверить реальную дату обновления отдельных приложений можно:

  • С ПК, через adb: adb shell dumpsys package ИМЯ_ПАКЕТА | grep date
  • С телефона, c root: su dumpsys package ИМЯ_ПАКЕТА | grep date

На MIUI можно также в свойствах каждого приложения нажать на (i) и посмотреть реальную дату обновления.

По данным GP, приложение обновлено 4 недели назад, как раз когда вышла последняя версия приложения
По данным GP, приложение обновлено 4 недели назад, как раз когда вышла последняя версия приложения
При этом MIUI пишет об обновлении 19.12.2018. С момента установки приложение я ни разу не обновлял
При этом MIUI пишет об обновлении 19.12.2018. С момента установки приложение я ни разу не обновлял

Rddd Ddd, специально для The Brown Room — независимого интернет-издания о социальных сетях и современных способах коммуникации.

Корректор: Арсений Метелев

Больше интересных материалов — The Brown Room!
Больше интересных материалов — The Brown Room!
826 views·6 shares