Выводы и условия принятия решения

  • Успешная установка, успешная проверка подписи и идентичность официального издателя - это три независимых суждения; первые два не могут заменять третье.
  • Переподписанные пакеты обычно не могут обновить официальную версию, установленную под другой идентичностью подписи; цепочка обновлений является критическим контрольным пунктом для выявления аномальных артефактов.
  • Итоговый APK должен фиксировать имя пакета, версию, дайджест сертификата, дайджест файла, источник сборки и порядок обработки канала.
  • Сервер должен поддерживать белый список разрешённых версий и идентичностей приложений, рассматривая сигналы целостности платформы как входные данные для оценки рисков, а не полагаясь на данные, сообщаемые самим клиентом.

Различайте проверку установки, идентичность подписи и бизнес-авторизацию

Android требует подписи APK. Система проверяет, подтверждают ли структура пакета установщика и данные подписи, что текущее содержимое было подписано соответствующим закрытым ключом. Если злоумышленник модифицирует DEX-файлы, ресурсы или Manifest, а затем полностью переподписывает результат своим ключом, новый пакет становится криптографически самосогласованным и может удовлетворять условиям для чистой установки.

Этот результат отвечает лишь на вопрос, имеет ли текущий пакет проверяемую подпись; он не отвечает на вопрос, является ли подписант официальным издателем. Авторизация бренда, легитимные каналы распространения, права входа в учётную запись и доступ к интерфейсам повышенного риска - это бизнес-задачи, которые приложение и сервер должны оценивать отдельно.

Следовательно, отчёты о тестировании не должны приравнивать «возможность установки после переподписи» к «сбою защиты подписи», а «неудачу установки» - к «полному устранению рисков переупаковки». Правильные вопросы таковы: Может ли модифицированный пакет попасть на устройства пользователей? Может ли он выдать себя за официальную версию при обновлении? Может ли он подключиться к реальным сервисам? И как сервер идентифицирует и обрабатывает такие случаи?

Четыре часто путаемых суждения
СуждениеНа какой вопрос отвечаетТребуемые доказательстваВывод, который нельзя экстраполировать
Пакет поддаётся разборуМожет ли установщик прочитать структуру файла?Результат работы установщика, Manifest и структура ресурсовНе доказывает легитимность подписи или безопасность кода
Текущая подпись самосогласованаПодписано ли текущее содержимое закрытым ключом, соответствующим текущему сертификату?Проверка схемы подписи и дайджест сертификатаНе доказывает, что сертификат принадлежит официальному субъекту
Непрерывность идентичности при обновленииМожно ли обновить уже установленное официальное приложение поверх существующего?Выполнение обновления с реальной рабочей версииНе доказывает, что все бизнес-интерфейсы отвергнут аномальные клиенты
Бизнес-авторизация пройденаРазрешает ли сервер учётной записи и версии доступ к ресурсам?Политики версии, учётной записи, целостности и поведения на стороне сервераНе гарантирует, что код клиента защищён от анализа или модификации

Почему переподписанные пакеты часто допускают только чистую установку

Android использует идентичность подписи приложения для обеспечения непрерывности обновлений. При установке обновления поверх существующей версии платформа должна подтвердить, что новая версия соответствует правилам идентичности подписи относительно текущей. Модифицированный пакет, подписанный посторонним сертификатом, обычно не может быть установлен поверх официальной версии напрямую; это требует предварительного удаления официального приложения, изменения имени пакета или установки пользователем в отдельной среде.

Именно поэтому тестирование переупаковки должно включать как чистую установку, так и обновление поверх существующей версии. Тестирование только чистой установки пропускает проверки непрерывности подписи, а тестирование только обновлений упускает сценарии проникновения поддельных пакетов через другие имена пакетов или циклы удаления и повторной установки. Результаты для обоих сценариев необходимо фиксировать отдельно.

Ротация подписей и Play App Signing усложняют цепочку выпуска. Команды должны сохранять текущие и исторически допустимые идентификаторы сертификатов, правила ротации, а также разграничивать ответственность ключей загрузки и ключей подписи приложений. Серверные политики должны использовать данные, соответствующие методу дистрибуции. Сертификаты разработки, загрузки и финальной дистрибуции никогда не должны смешиваться в одном поле.

  • Выполнить обновление поверх текущей рабочей версии
  • Выполнить чистую установку после удаления
  • Проверить изменения имени пакета и влияние на каталог данных
  • Верифицировать ротацию сертификатов согласно правилам платформы дистрибуции

Управление переупаковкой должно начинаться с идентификации финального артефакта

Команды часто сохраняют только номер сборки, игнорируя запись дайджеста файла финального APK и дайджеста подписывающего сертификата. Инъекция ресурсов канала, выравнивание, переподпись или оптимизация пакета могут изменить финальный файл. Если сканирование безопасности анализирует артефакты до канальной обработки, файлы, получаемые конечными пользователями, не покрываются теми же доказательствами.

Рекомендуем генерировать однозначные записи артефактов для каждого кандидата на выпуск: имя пакета, versionCode, versionName, SHA-256 файла, SHA-256 сертификата, результат верификации схемы подписи, источник сборки, канал, порядок обработки и временную метку генерации. Статические проверки, установка обновлений, функциональное регрессионное тестирование и серверные правила допуска должны ссылаться на эту запись.

Дайджесты файлов сами по себе не являются мерами защиты; их ценность заключается в предотвращении незаметного изменения тестируемого объекта в ходе рабочего процесса. Любое изменение дайджеста, подписи или последовательности каналов указывает на новый кандидат на выпуск, требующий повторного выполнения затронутых контрольных точек.

Публичный пример записи идентичности кандидата на выпуск APK
artifact:
  package: com.example.redacted
  version_code: 240
  version_name: 2.4.0
  sha256: REDACTED
signing:
  certificate_sha256: REDACTED
  schemes: [v2, v3]
  distribution: managed-channel
pipeline:
  - build-release
  - harden-candidate
  - channel-resources
  - final-sign
acceptance:
  install_fresh: required
  upgrade_from_production: required
  server_policy_check: required

Серверы должны рассматривать аномальных клиентов как проблему политик безопасности

Клиенты могут передавать имена пакетов, версии, сертификаты или материалы целостности, однако модифицированные клиенты способны подделывать эти стандартные поля отчётности. Серверы должны отдавать приоритет верифицируемым сигналам, объединяя статус учётной записи, версию, поведение запросов, риски устройства и среду дистрибуции в единую политику, вместо того чтобы доверять одиночному булевому значению от клиента.

Play Integrity может возвращать вердикты относительно распознавания приложения, целостности устройства, лицензирования учётной записи и рисков среды. Официальная документация отмечает, что некоторые сигналы могут быть недоступны из-за версии ОС, форм-фактора устройства, источника дистрибуции, состояния сервисов Play или конфигурации. Правильный подход - моделировать состояния «недоступно», «ошибка» и «высокий риск» отдельно, предусматривая стратегии деградации, дополнительной верификации, ограничения привилегий или отказа в доступе.

Сценарии дистрибуции вне Google Play не могут просто копировать сигналы, эксклюзивные для Play. Корпоративная дистрибуция, внутренние каналы и частная доставка требуют создания собственных списков разрешённых версий, сопоставлений сертификатов, механизмов обновлений и процедур обработки аномалий. Сигналы платформы являются частью доказательной базы, а не универсальным решением для всех каналов.

Многоуровневая серверная обработка идентичности клиента
Входные данныеМетод верификацииВозможные состоянияРекомендуемые действия
Версия и имя пакетаСверка с реестром релизов и правилами каналовРазрешено, истекло, неизвестноРазрешить, запросить обновление, ограничить высоко рискованные возможности
Сигнал распознавания приложенияПроверка подписи, возвращенной платформой, и результатов идентификации приложенияИдентифицировано, не идентифицировано, недоступноНормальный режим, запрос подтверждения или ограничение, деградация функционала по каналу
Учетная запись и лицензированиеСерверные права доступа учетных записей и лицензии распространенияДействительно, истекло, аномальноАвторизация или отказ на основе области ресурсов
Поведение запросовЧастота, повторное воспроизведение, изменения устройства и бизнес-контекстНормальный, подозрительный, высокий рискЛогирование, дополнительная проверка, ограничение частоты или блокировка
Устройство и окружениеВердикты платформы и проприетарные правила оценки рисковУсловия выполнены, слабый сигнал, неизвестноГрадуированная оценка риска вместо абсолютного суждения по одной точке

Некорректная последовательность релиза аннулирует предыдущие проверки

Изменение DEX, ресурсов или манифеста после финальной подписи нарушает целостность данных, покрытых подписью; пересборка или повторная подпись после сканирования разрывает связь между выводами сканера и итоговым файлом. Если инструменты обработки каналов требуют модификации тела пакета, это должно быть выполнено до финальной подписи, а последовательность зафиксирована в реестре артефактов.

Распространение через AAB дополнительно разделяет загруженные артефакты и сплит-APK, получаемые устройствами пользователей. Командам следует загружать или получать фактически доставленные артефакты с платформы распространения для выборочных проверок, подтверждая соответствие имен пакетов, версий, идентичности подписей и ключевых ресурсов записям релиза. Локально сгенерированные универсальные APK не могут автоматически представлять все конфигурации устройств.

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

Рекомендуемая последовательность конвейера релиза
ЭтапВходные данныеВыходные доказательстваОсновные условия сбоя
Сборка релизаЗамороженный исходный код и зависимостиЗапись сборки и базовые артефактыНевоспроизводимые зависимости или конфигурация
Обработка упрочнения (hardening)Явная конфигурация защитыВерсия конфигурации и кандидаты артефактовНесоответствие объекта обработки целевой версии
Обработка каналовРесурсы канала и информация о соответствииКандидаты артефактов каналаИзменение содержимого после подписания
Финальное подписаниеКонтролируемые ключи и финальное тело пакетаДайджест сертификата и результат проверки подписиИспользование неверного ключа или окружения
Приемочный релизУникальный итоговый файлШлюзы установки, обновления, бизнес-логики и серверной стороныПодмена принятых объектов другими файлами

Как определить, что риск переупаковки находится под контролируемым управлением публикации

Публикуемый вывод не означает, что модифицированные пакеты никогда не смогут установиться. Это означает, что идентичность официального артефакта поддаётся аудиту, аномальные артефакты не могут silently перезаписать официальные версии, сервер способен идентифицировать или ограничивать недоверенных клиентов, у пользователей есть пути получения подлинных версий и восстановления, а команды могут проводить аудит файлов финальной доставки.

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

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

  • Идентичность официального артефакта может быть независимо проверена
  • Аномальные сертификаты не могут silently перезаписать официальные установки
  • Сервер имеет градуированные политики для неизвестных клиентов
  • Пользователи могут вернуться к доверенным каналам релиза
  • Пакеты отката прошли предварительную проверку обновления

Доказательства и границы применимости

В этом разделе разделены документированные факты о платформе, инженерные решения и ограничения, которые нельзя обобщить как непроверенные заявления о продукте.

Решение по статьеФакт или инженерная основаПредел применимости
Возможность установки переподписанного пакета не подтверждает личность официального издателя.Android требует, чтобы APK имели верифицируемые подписи; злоумышленники могут генерировать самосогласованные подписи своими ключами для модифицированного содержимого.На возможность установки также влияют имя пакета, политики устройства, версия ОС и источник установки; конкретные результаты тестирования нельзя выводить исключительно из принципов проектирования.
При обновлении через наложение (overlay) необходимо проверять непрерывность идентичности подписи.Официальная документация Android указывает, что платформа использует ключ подписи приложения для подтверждения того, что обновления поступают от того же владельца ключа.Ротацию сертификатов и правила подписи платформы дистрибуции необходимо проверять в соответствии с конфигурацией проекта.
Сигналы целостности платформы должны валидироваться и обрабатываться на бэкенде.Вердикты Play Integrity включают данные о распознавании приложения, устройстве, учетной записи и окружении; разработчики рекомендуют формировать ответы бэкенда на основе оценки рисков.Сигналы Play не охватывают все страны, каналы, устройства или сценарии работы без подключения к сети.
Финальные файлы доставки должны строго соответствовать тестовым доказательствам по принципу «один к одному».Пересборка, изменение ресурсов или переподпись изменяют идентичность артефакта и потенциальное поведение во время выполнения.Дайджесты файлов устанавливают связь идентичности, но сами по себе не обеспечивают защиту от несанкционированных изменений.
Только факт неудачной установки не доказывает устранение рисков переупаковки.Аномальные пакеты могут оставаться опасными за счет смены имени пакета, циклов удаления и повторной установки, использования других каналов или эксплуатации отсутствия политик версионирования на стороне сервера.Конкретные векторы атак необходимо проверять в рамках авторизованного тестирования на реальных архитектурах дистрибуции и бизнес-логике.

Инженерные вопросы

Почему система не отвергает напрямую все APK, подписанные неофициальными сертификатами?

Установщик Android может проверить самосогласованность подписи текущего пакета, но система не знает, какой сертификат признает каждый бренд. Официальную идентичность должны совместно определять цепочка обновления, платформа дистрибуции и бизнес-сервисы.

Если переподписанный пакет невозможно установить поверх существующего, означает ли это отсутствие рисков?

Нет. Злоумышленники все еще могут инициировать циклы удаления и повторной установки, изменять имена пакетов или использовать отсутствие политик версионирования на стороне сервера для доступа к бизнес-логике. Предотвращение обновления через наложение - лишь один элемент матрицы управления.

Достаточно ли клиенту считывать дайджест собственного сертификата?

Нет. Модифицированный клиент может одновременно изменить локальные проверки или логику отчетности. Данные сертификата могут участвовать в эшелонированной защите, но решения об авторизации высоких рисков должен принимать сервер на основе комбинации верифицируемых сигналов.

Какой дайджест файла следует сохранять после релиза AAB?

Сохраните идентичность загруженного AAB, а также получите и выборочно проверьте фактически доставленные артефакты с платформы дистрибуции. Разные устройства могут получать разделенные APK; сохранения только локально сгенерированного универсального APK недостаточно.

Когда можно сформировать заключение о релизе?

Заключение можно сформировать только для покрытой области после фиксации идентичности финального подписанного артефакта и завершения проверок установки, обновления с рабочих версий, ключевых бизнес-процессов, политик на стороне сервера, целевых диапазонов ОС и валидации отката.

Хотите протестировать это в своем собственном приложении?

Отправьте кандидата на выпуск, целевые системы и критические бизнес-пути для проверки подлинности Yudun и оценки совместимости.

Продолжить с: Как принять APK, DEX и совместно подписать целостность