Conclusions et conditions de décision

  • La réussite de l'installation, la vérification de signature et l'identité de l'éditeur officiel sont trois jugements distincts ; les deux premiers ne peuvent se substituer au troisième.
  • Les paquets re-signés ne peuvent généralement pas superposer une version officielle installée sous une identité de signature différente ; la chaîne de mise à jour constitue une porte critique pour identifier les artefacts anormaux.
  • L'APK final doit figer le nom du paquet, la version, le condensat du certificat, le condensat du fichier, l'origine de la construction et l'ordre de traitement du canal.
  • Le serveur doit maintenir une liste blanche des versions et identités d'applications autorisées, traitant les signaux d'intégrité de la plateforme comme des entrées de risque plutôt que de faire confiance aux données autodéclarées par le client.

Distinguer la validation d'installation, l'identité de signature et l'autorisation métier

Android exige que les APK soient signés. Le système vérifie si la structure du paquet de l'installateur et les données de signature prouvent que le contenu actuel a été signé par la clé privée correspondante. Si un attaquant modifie les fichiers DEX, les ressources ou le Manifeste, puis re-signe entièrement le résultat avec sa propre clé, le nouveau paquet peut être cryptographiquement auto-cohérent et satisfaire aux conditions d'une nouvelle installation.

Ce résultat répond uniquement à la question de savoir si le paquet actuel possède une signature vérifiable ; il ne répond pas à la question de savoir si le signataire est l'éditeur officiel. L'autorisation de marque, les canaux légitimes, les permissions de connexion au compte et l'accès aux interfaces à haut risque sont des préoccupations métier que l'application et le serveur doivent évaluer séparément.

Par conséquent, les rapports de test ne doivent pas assimiler « installable après re-signature » à un « échec de la protection de signature », ni « échec de l'installation » à la fermeture de tous les risques de reconditionnement. Les questions correctes sont : le paquet modifié peut-il atteindre les appareils des utilisateurs ? Peut-il usurper la version officielle lors d'une mise à jour ? Peut-il se connecter aux services réels ? Et comment le serveur identifie-t-il et gère-t-il ces cas ?

Quatre jugements souvent confondus
JugementQuestion résoluePreuve requiseConclusion qui ne peut être extrapolée
Paquet analysableL'installateur peut-il lire la structure du fichier ?Résultat de l'installateur, Manifeste et structure des ressourcesNe prouve pas la légitimité de la signature ni la sécurité du code
Signature actuelle auto-cohérenteLe contenu actuel est-il signé par la clé privée correspondant au certificat actuel ?Vérification du schéma de signature et condensat du certificatNe prouve pas que le certificat appartient à l'entité officielle
Continuité de l'identité de mise à jourPeut-il superposer une application officielle déjà installée ?Exécution d'une mise à jour depuis une version réelle en directNe prouve pas que toutes les interfaces métier rejetteront les clients anormaux
Autorisation métier accordéeLe serveur autorise-t-il le compte et la version à accéder aux ressources ?Politiques côté serveur concernant la version, le compte, l'intégrité et le comportementNe garantit pas que le code client est immunisé contre l'analyse ou la modification

Pourquoi les paquets re-signés permettent souvent uniquement une nouvelle installation

Android utilise l'identité de signature de l'application pour assurer la continuité des mises à jour. Lorsqu'une application installée accepte une mise à jour par superposition, la plateforme doit confirmer que la nouvelle version respecte les règles d'identité de signature par rapport à la version existante. Un paquet modifié signé avec un certificat non lié ne peut généralement pas remplacer directement la version officielle ; il nécessite d'abord la désinstallation de l'application officielle, le changement du nom du paquet, ou l'incitation de l'utilisateur à l'installer dans un environnement séparé.

C'est pourquoi les tests de reconditionnement doivent exécuter à la fois une installation fraîche et des mises à jour par superposition. Tester uniquement l'installation fraîche omet les vérifications de continuité de signature, tandis que tester uniquement les mises à jour par superposition ignore les voies par lesquelles des paquets usurpés entrent sur l'appareil via différents noms de paquets ou des cycles de désinstallation-réinstallation. Les résultats pour ces deux scénarios doivent être enregistrés séparément.

La rotation des signatures et Play App Signing ajoutent de la complexité à la chaîne de publication. Les équipes doivent préserver les identités de certificats actuelles et historiquement autorisées, les règles de rotation, ainsi que les responsabilités distinctes des clés de téléversement et des clés de signature d'application. Les politiques côté serveur doivent utiliser des données correspondant à la méthode de distribution. Les certificats de développement, de téléversement et de distribution finale ne doivent jamais être confondus dans un seul champ.

  • Exécuter une mise à jour par superposition depuis la version active actuelle
  • Effectuer une installation fraîche après désinstallation
  • Vérifier les changements de nom de paquet et les impacts sur le répertoire de données
  • Vérifier la rotation des certificats conformément aux règles de la plateforme de distribution

La gouvernance du reconditionnement doit commencer par l'identité de l'artefact final

Les équipes enregistrent souvent uniquement le numéro de build, négligeant de consigner le condensat du fichier APK final et celui du certificat de signature. L'injection de ressources par canal, le réalignement, la re-signature ou l'optimisation du paquet peuvent altérer le fichier final. Si l'analyse de sécurité porte sur des artefacts pré-canaux, les fichiers reçus par les utilisateurs actifs ne sont pas couverts par les mêmes preuves.

Nous recommandons de générer des registres d'artefacts sans ambiguïté pour chaque candidat à la publication : nom du paquet, versionCode, versionName, SHA-256 du fichier, SHA-256 du certificat, résultat de la vérification du schéma de signature, origine du build, canal, ordre de traitement et horodatage de génération. Les contrôles statiques, les mises à jour d'installation, les tests de régression fonctionnelle et les règles d'autorisation côté serveur doivent tous se référer à ce registre.

Les condensats de fichiers ne sont pas des mesures de protection en soi ; leur valeur réside dans la prévention de la modification silencieuse de l'objet testé durant le flux de travail. Toute modification du condensat, de la signature ou de la séquence de canaux indique un nouveau candidat à la publication, nécessitant la réexécution des portes concernées.

Exemple public d'enregistrement d'identité d'un APK candidat à la publication
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

Les serveurs doivent traiter les clients anormaux comme un problème de politique

Les clients peuvent signaler des noms de paquets, des versions, des certificats ou des matériaux d'intégrité, mais les clients modifiés peuvent également falsifier ces champs de signalement standard. Les serveurs doivent privilégier les signaux vérifiables, en combinant le statut du compte, la version, le comportement des requêtes, le risque appareil et l'environnement de distribution dans une politique, plutôt que de faire confiance à un booléen unique rapporté par le client.

Play Integrity peut renvoyer des verdicts sur la reconnaissance de l'application, l'intégrité de l'appareil, la licence du compte et le risque environnemental. La documentation officielle note que certains signaux peuvent être indisponibles en raison de la version du système d'exploitation, du facteur de forme de l'appareil, de la source de distribution, du statut des services Play ou de la configuration. L'approche correcte consiste à modéliser séparément les états « indisponible », « échec » et « risque élevé », en préparant des stratégies de dégradation, de vérification secondaire, de restriction de privilèges ou de refus.

Les scénarios de distribution hors Google Play ne peuvent pas simplement copier les signaux exclusifs à Play. La distribution en entreprise, les canaux nationaux et la livraison privée nécessitent l'établissement de leurs propres listes d'autorisation de versions, de mappages de certificats, de mécanismes de mise à niveau et de procédures de gestion des anomalies. Les signaux de la plateforme font partie des preuves, et non d'une réponse universelle valable pour tous les canaux.

Traitement côté serveur en couches de l'identité du client
EntréeMéthode de vérificationÉtats possiblesAction recommandée
Version et nom du paquetComparer avec le registre des versions et les règles de canalAutorisé, expiré, inconnuAutoriser, demander la mise à jour, restreindre les fonctionnalités à haut risque
Signal de reconnaissance de l'applicationValider la signature renvoyée par la plateforme et les résultats d'identité de l'applicationIdentifié, non identifié, indisponibleNormal, défi ou restriction, dégradation selon le canal
Compte et licencesPermissions de compte côté serveur et licences de distributionValide, expiré, anormalAutoriser ou refuser selon la portée des ressources
Comportement des requêtesDébit, rejouabilité, changements d'appareil et contexte métierNormal, suspect, à haut risqueJournalisation, vérification secondaire, limitation de débit ou blocage
Appareil et environnementVerdicts de la plateforme et règles de risque propriétairesSatisfait, signal faible, inconnuClassement des risques plutôt que jugement absolu ponctuel

Une séquence de publication incorrecte invalide les contrôles antérieurs

La modification du DEX, des ressources ou du Manifest après la signature finale rompt l'intégrité du contenu couvert par la signature ; reconstruire ou resigner après analyse découple les conclusions de l'analyse du fichier final. Si les outils de traitement de canal doivent modifier le corps du paquet, ils doivent le faire avant la signature finale, et la séquence doit être figée dans le registre des artefacts.

La distribution AAB distingue davantage les artefacts téléversés des APK fractionnés reçus par les appareils utilisateurs. Les équipes doivent télécharger ou obtenir depuis la plateforme de distribution les artefacts réellement livrés pour des vérifications ponctuelles, en confirmant que les noms de paquets, versions, identités de signature et ressources clés correspondent aux enregistrements de publication. Les APK génériques générés localement ne peuvent pas représenter automatiquement toutes les configurations d'appareil.

Les paquets de retour arrière doivent également subir la même validation de signature et de mise à niveau. En cas d'incident, resigner temporairement un ancien fichier peut échouer lors d'une installation par recouvrement en raison d'incompatibilités de numéros de version, de signatures ou d'exigences de migration de données.

Séquence recommandée du pipeline de publication
ÉtapeEntréePreuve de sortieConditions principales d'échec
Construction de la versionCode source et dépendances figésEnregistrement de construction et artefacts de baseDépendances ou configuration non reproductibles
Traitement de durcissement de l'applicationConfiguration de protection expliciteVersion de configuration et artefacts candidatsObjet de traitement incompatible avec la version cible
Traitement de canalRessources de canal et informations de conformitéArtefacts candidats de canalContenu modifié après la signature
Signature finaleClés contrôlées et corps final du paquetEmpreinte du certificat et résultat de vérification de la signatureUtilisation d'une clé ou d'un environnement incorrect
Publication d'acceptationFichier final uniquePortes d'installation, de mise à niveau, métier et côté serveurSubstitution des objets acceptés par d'autres fichiers

Comment déterminer si le risque de repackaging est sous contrôle publiable

Une conclusion publiable ne signifie pas que les paquets modifiés ne pourront jamais s'installer. Cela signifie que l'identité de l'artefact officiel est traçable, que les artefacts anormaux ne peuvent pas silencieusement recouvrir les versions officielles, que le serveur peut identifier ou restreindre les clients non fiables, que les utilisateurs disposent de voies pour obtenir des versions authentiques et récupérer leur état, et que les équipes peuvent auditer les fichiers de livraison finaux.

Les tests doivent conserver des preuves pour les chemins de succès et d'échec. Les chemins de succès incluent l'installation et la mise à niveau normales des versions officielles, les connexions et les flux métier clés. Les chemins d'anomalie incluent les mises à niveau par recouvrement avec des certificats non liés, les versions inconnues accédant à des interfaces à haut risque, les versions expirées, les signaux d'intégrité indisponibles et la récupération des faux positifs. Vérifier uniquement le rejet sans processus de récupération piège les utilisateurs réels dans des états irrésolubles.

Cet article n'affirme pas qu'une technologie de durcissement seule peut empêcher toutes les installations resignées. La gouvernance du repackaging est un effort d'ingénierie système réalisé conjointement par la gestion des signatures, les contrôles de mise à niveau, la gestion des artefacts, la résilience du client, les signaux de la plateforme et les politiques côté serveur.

  • L'identité de l'artefact officiel peut être auditée indépendamment
  • Les certificats anormaux ne peuvent pas silencieusement recouvrir les installations officielles
  • Le serveur dispose de politiques graduées pour les clients inconnus
  • Les utilisateurs peuvent revenir vers des canaux de publication de confiance
  • Les packages de retour arrière ont terminé la validation de mise à niveau en amont.

Limites des preuves et de l’applicabilité

Cette section sépare les faits documentés sur la plate-forme, le jugement technique et les limites qui ne peuvent pas être généralisées à des allégations de produit non vérifiées.

Article jugementBase factuelle ou techniqueLimite d'applicabilité
La possibilité d'installer un package re-signé n'équivaut pas à une identité d'éditeur officielle.Android exige que les APK possèdent des signatures vérifiables ; les attaquants peuvent générer des signatures auto-cohérentes avec leurs propres clés sur du contenu modifié.L'installabilité dépend également du nom du package, des politiques de l'appareil, de la version du système d'exploitation et de la source d'installation ; des résultats spécifiques sur des échantillons ne peuvent être déduits uniquement à partir de principes de conception.
Les mises à jour par superposition doivent vérifier la continuité de l'identité de signature.La documentation officielle d'Android indique que la plateforme utilise la clé de signature de l'application pour confirmer que les mises à jour proviennent du même détenteur de clé.La rotation des certificats et les règles de signature de la plateforme de distribution doivent être vérifiées selon la configuration du projet.
Les signaux d'intégrité de la plateforme doivent être validés et traités côté serveur.Les verdicts Play Integrity incluent la reconnaissance de l'application, l'appareil, le compte et des informations environnementales ; les équipes officielles recommandent des réponses backend basées sur le risque.Les signaux Play ne couvrent pas tous les pays, canaux, appareils ou scénarios hors ligne.
Les fichiers de livraison finale doivent correspondre un à un aux preuves de test.Reconstruire, modifier des ressources ou re-signer change l'identité de l'artefact et son comportement potentiel à l'exécution.Les empreintes numériques de fichiers établissent une association d'identité mais n'offrent pas elles-mêmes de capacités anti-altération.
Un échec d'installation seul ne prouve pas que les risques de repackaging sont éliminés.Des packages anormaux peuvent toujours poser des risques en changeant les noms de package, en exploitant des cycles de désinstallation-réinstallation, en utilisant d'autres canaux ou en tirant parti de l'absence de politiques de version côté serveur.Des vecteurs d'attaque spécifiques doivent être vérifiés dans des périmètres de test autorisés contre des architectures de distribution et métier réelles.

Questions d'ingénierie

Pourquoi le système ne rejette-t-il pas directement tous les APK signés avec des certificats non officiels ?

Le programme d'installation Android peut vérifier si la signature d'un package actuel est auto-cohérente, mais le système ignore quel certificat chaque marque reconnaît. L'identité officielle doit être déterminée conjointement par la chaîne de mise à niveau, la plateforme de distribution et les services métier.

Si un package re-signé ne peut pas effectuer de mise à jour par superposition, le risque est-il nul ?

Non. Les attaquants peuvent toujours induire des cycles de désinstallation-réinstallation, modifier les noms de package ou exploiter l'absence de politiques de version côté serveur pour accéder à la logique métier. La prévention des mises à jour par superposition n'est qu'un élément de la matrice de gouvernance.

Suffit-il que le client lise sa propre empreinte de certificat ?

Non. Un client modifié peut altérer simultanément les vérifications locales ou la logique de rapport. Les informations de certificat peuvent participer à une défense en profondeur, mais les décisions d'autorisation à haut risque doivent être prises par le serveur en combinant des signaux vérifiables.

Après la publication d'un AAB, quelle empreinte de fichier faut-il sauvegarder ?

Sauvegardez l'identité de l'AAB téléchargé et obtenez également des artefacts livrés réels depuis la plateforme de distribution pour des contrôles ponctuels. Différents appareils peuvent recevoir des APK fractionnés ; sauvegarder uniquement un APK générique généré localement est insuffisant.

Quand peut-on formuler une conclusion de publication ?

Une conclusion ne peut être formulée pour le périmètre couvert qu'une fois l'identité de l'artefact signé final figée, et que l'installation, la mise à jour depuis des versions en production, les flux métier clés, les politiques côté serveur, les plages de systèmes d'exploitation cibles et la validation de retour arrière sont tous terminés.

Vous voulez tester cela sur votre propre application ?

Soumettez la version candidate, les systèmes cibles et les chemins commerciaux critiques pour une évaluation Yudun PoC et de compatibilité.

Continuez avec: Comment accepter APK, DEX et signer ensemble l'intégrité