Aller au contenu

La liste de contrôle de sécurité des applications mobiles 2025 pour iOS et Android

Sécuriser le code source

  • Contrôle d'accès au code avec le principe du moindre privilège ; branches protégées et révisions obligatoires.
  • Analyse statique et recherche de secrets intégrées dans la CI/CD ; bloquer les fusions en cas de résultats de gravité élevée.
  • Hygiène des postes de travail des développeurs et prévention de la perte de données (DLP) pour les dépôts et les artefacts de compilation.
  • Hygiène des dépendances et de la chaîne logicielle (verrouiller les versions, surveiller).
  • Utiliser des outils de gestion de secrets dédiés (par ex., HashiCorp Vault, AWS Secrets Manager ou GitHub Secrets) au lieu de stocker les secrets dans des fichiers .env ou de configuration.
  • Sécuriser les artefacts de compilation dans les référentiels d'artefacts, contrôler qui peut y accéder et promouvoir les builds en production.
  • Aucun secret codé en dur, aucune valeur par défaut de cryptographie non sécurisée, couverture de révision de code cohérente.

Authentification (MFA) et sécurité des sessions

  • Authentification multifacteur (MFA), avec une préférence pour les facteurs basés sur une application ou push par rapport aux SMS lorsque cela est possible.
  • Verrouillage de compte et authentification renforcée (step-up) pour les actions sensibles.
  • Hygiène de la session : jetons de courte durée, stockage sécurisé pour les jetons d'actualisation (refresh tokens) et flux de déconnexion/rotation robustes.
  • Protections contre la réutilisation des mots de passe à usage unique (OTP), seuils de verrouillage cohérents, et résistance aux attaques par force brute et par rejeu.

Chiffrer les communications de bout en bout (TLS + épinglage de certificat)

  • Appliquer un TLS moderne ; interdire les points de terminaison en texte clair et les rétrogradations (downgrades) de protocole.
  • Mettre en œuvre l'épinglage de certificat SSL/TLS pour réduire le risque de MITM sur les réseaux non fiables.
  • Valider tous les certificats et échouer par défaut (fail closed) en cas d'erreurs de vérification.
  • Pas de contenu mixte ni de recours (fallback) à des transports non sécurisés ; rotation planifiée des épingles et un chemin d'annulation d'épinglage d'urgence.

Tests d'intrusion (Pentesting) et tests de sécurité continus

  • Combiner l'analyse automatisée avec des tests manuels menés par des experts pour les failles de logique métier.
  • Inclure des vecteurs d'attaque spécifiques au mobile : attaques par canal auxiliaire (side-channel), vidages de mémoire (memory dumps), élévation de privilèges locaux et exploits de communication inter-processus (IPC).
  • Inclure des tests pour les fonctionnalités spécifiques à l'application comme les liens profonds (deep linking), les schémas d'URL personnalisés et les gestionnaires d'intention (intent handlers sur Android) afin d'identifier les contournements d'autorisation ou les fuites de données.
  • Inclure le forçage brut, le fuzzing et les tests d'injection qui reflètent le comportement réel des attaquants.
  • Traiter les résultats comme des éléments du backlog avec des SLA de correction ; retester et capturer les preuves de clôture.
  • Couverture des tests sur l'authentification, la gestion des sessions, le stockage, les appels d'API et les protections côté client.

Gouvernance de la sécurité des API

  • Maintenir un inventaire de toutes les API consommées par le mobile avec la documentation et les propriétaires.
  • Appliquer une authentification et une autorisation fortes ; appliquer le principe du moindre privilège (PoLP).
  • Ajouter une médiation (politiques de passerelle), une limitation de débit (rate limiting), une validation des entrées et une journalisation/surveillance cohérente.
  • Prévention des autorisations de niveau objet défaillantes (IDOR), des failles d'injection et des mauvaises configurations.

Protection à l'exécution (RASP) et résistance à l'altération

  • Détecter le jailbreak/root, les frameworks de hooking, les attaches de débogueur et l'utilisation d'émulateurs. (Notez que les vérifications à l'exécution pour le jailbreak/root sont imparfaites ; des attaquants sophistiqués peuvent contourner les vérifications statiques.)
  • Répondre de manière adaptative : bloquer, dégrader les fonctionnalités ou demander une ré-authentification ; toujours enregistrer les signaux.
  • Les vérifications à l'exécution ne peuvent pas être contournées trivialement ; les réponses ne nuisent pas à l'UX dans des conditions bénignes.

Stockage sécurisé des données (Keychain/Keystore)

  • Ne jamais stocker de secrets en texte clair ; utiliser les magasins de clés (keystores) de la plateforme pour les informations d'identification et les clés.
  • Hacher et saler les mots de passe côté serveur avec des algorithmes modernes ; chiffrer les enregistrements sensibles au repos.
  • Protéger les sauvegardes et le stockage transitoire ; mettre en œuvre une suppression sécurisée pour les données sensibles.
  • Aucune donnée sensible n'apparaît dans les journaux, les captures d'écran, les caches ou les sauvegardes non chiffrées.

Journalisation, surveillance et préparation aux incidents

  • Créer des pistes d'audit pour les actions sensibles et les changements d'état ; centraliser la télémétrie.
  • Alerter sur les comportements anormaux et les échecs des contrôles de sécurité ; enquêter et ajuster régulièrement.
  • Maintenir des manuels (runbooks) et pratiquer des exercices d'incident pour réduire le temps de détection/réponse.
  • Les journaux évitent l'exposition de données sensibles tout en conservant suffisamment de contexte pour enquêter.

Mises à jour, dépendances et politique de système d'exploitation minimum

  • Intégrer les outils d'Analyse de Composition Logicielle (SCA) dans la CI/CD pour détecter les dépendances vulnérables au moment de la validation. Utiliser des fichiers de verrouillage (Podfile.lock, package-lock.json, gradle.lock) pour garantir des builds reproductibles et éviter les surprises de dépendances transitives.
  • Publier des mises à jour fréquentes ; corriger rapidement les SDK et les dépendances tierces vulnérables.
  • Définir et réviser une politique de version minimale du système d'exploitation ; abandonner les versions de système d'exploitation non sécurisées avec des messages clairs pour les utilisateurs.
  • Fournir des incitations dans l'application pour les mises à jour de sécurité importantes.
  • Aucune utilisation d'API dépréciées qui affaiblissent la sécurité ; le risque lié aux dépendances est surveillé et traité.

Protections contre la rétro-ingénierie

  • Appliquer l'obfuscation du code, la suppression des symboles et les contrôles anti-altération.
  • Détecter les tentatives d'instrumentation dynamique courantes et répondre de manière appropriée.
  • Chiffrer les actifs locaux sensibles ; valider l'intégrité de l'application au démarrage et pendant l'exécution.
  • Les protections sont superposées pour ralentir les attaquants et augmenter l'effort sans nuire aux performances.

Conformité et préparation à l'audit

  • Mettre en correspondance votre liste de contrôle avec les exigences de sécurité mobile reconnues et les besoins du secteur.
  • Conserver les preuves : politiques, rapports de test, confirmations de re-test et journaux des modifications.
  • Prendre en compte les obligations de l'industrie le cas échéant (confidentialité et directives du secteur financier).
  • Vous pouvez démontrer la couverture des contrôles et la clôture des conclusions lors des audits ou des évaluations.

Feuille de route de renforcement de la sécurité sur 90 jours

graph TD H1["<b>Semaines 1-2 : Référence et Politique</b>"] A1["Inventorier les applications, les SDK, les API<br/>Documenter les flux de données et les chemins des menaces"] A2["Publier les politiques de code, de secrets et de cryptographie<br/>Activer le SAST et la recherche de secrets"] H2["<b>Semaines 3-6 : Renforcement Principal</b>"] B1["Appliquer le TLS et l'épinglage de certificat<br/>Documenter la rotation et l'annulation d'épinglage d'urgence"] B2["Renforcer l'authentification et la gestion des sessions<br/>Verrouillages et gestion des OTP"] B3["Centraliser les journaux et activer les vérifications à l'exécution<br/>Détection Root/jailbreak/hooking"] H3["<b>Semaines 7-10 : Profondeur et Couverture</b>"] C1["Test des API : autorisation, injection, IDOR"] C2["Renforcer le stockage : Keystore/Keychain<br/>Enregistrements chiffrés et suppression sécurisée"] C3["Fuzzing et tests négatifs<br/>Démarrer la cadence trimestrielle de pentesting"] H4["<b>Semaines 11-13 : Assurance et Mise à l'échelle</b>"] D1["Obfuscation et vérifications anti-altération"] D2["Re-tester les découvertes et conserver les preuves<br/>Réviser la politique d'OS minimum"] D3["Publier le journal des modifications et le marqueur de dernière mise à jour"] H1 --> A1 --> A2 --> H2 --> B1 --> B2 --> B3 --> H3 --> C1 --> C2 --> C3 --> H4 --> D1 --> D2 --> D3 classDef phase fill:#D5E4F2,stroke:#333,stroke-width:2px,color:#000,font-weight:bold classDef task fill:#E8F4F8,stroke:#666,stroke-width:1px,color:#000 class H1,H2,H3,H4 phase class A1,A2,B1,B2,B3,C1,C2,C3,D1,D2,D3 task

Pièges courants à éviter

  • Stocker des jetons ou des PII en texte clair (journaux, caches, sauvegardes)
  • Ne faire confiance qu'à la validation côté client ; aucune autorisation côté serveur
  • Négliger les audits des SDK tiers
  • L'épinglage sans rotation sécurisée ou sans annulation d'épinglage d'urgence
  • Autorisation faible → IDOR / élévation des privilèges
  • Confiance excessive en un seul contrôle d'exécution par rapport à des défenses superposées
  • Considérer un pentest comme terminé sans re-tests ni preuves

Tableau de vérification rapide

Domaine Exigences
Code & CI Analyse statique + recherche de secrets ; branches protégées et révisions obligatoires
Auth & Session MFA au-delà des SMS lorsque possible ; verrouillages ; jetons de courte durée et stockage sécurisé
Transport TLS moderne imposé ; épinglage de certificat avec rotation planifiée et secours sécurisé
API Inventaire ; PoLP ; limitation de débit ; middleware d'autorisation ; journalisation cohérente
Tests Analyses automatisées + pentests par des experts ; fuzzing ; re-tests avec preuves
Exécution Détection Root/jailbreak/hooking/débogueur ; réponses adaptatives
Stockage Utilisation Keystore/Keychain ; enregistrements chiffrés ; suppression sécurisée ; protections de sauvegarde
Observabilité Journaux centralisés ; alertes ; runbooks ; exercices réguliers
Mises à jour Hygiène des dépendances et SDK ; politique d'OS minimum claire
Rétro-ingénierie Obfuscation ; anti-altération ; contrôles d'intégrité ; actifs chiffrés
Conformité Contrôles cartographiés, référentiel de preuves, journal des modifications, et badge "dernière mise à jour"