Retour au blog
mobileiOSAndroiddonnées sensibles

Stockage local mobile : pourquoi votre app fuit des secrets

Publié le 2026-04-077 min de lectureFlorian

Le problème fondamental du stockage mobile

Contrairement à une application web où les données sensibles restent côté serveur, une application mobile stocke souvent des informations localement : tokens d'authentification, préférences utilisateur, données en cache, fichiers téléchargés. Chaque donnée stockée sur le device est potentiellement accessible à un attaquant qui a un accès physique ou qui exploite une autre vulnérabilité.

Android : les pièges du stockage

SharedPreferences en clair

Les SharedPreferences sont le mécanisme de stockage clé-valeur le plus utilisé sur Android. Par défaut, elles sont stockées en XML non chiffré dans /data/data/[package]/shared_prefs/. Sur un appareil rooté, ces fichiers sont lisibles. Nous trouvons régulièrement des tokens JWT, des clés API et même des mots de passe dans ces fichiers.

Solution : utilisez EncryptedSharedPreferences de la bibliothèque Jetpack Security. Le chiffrement est transparent pour le développeur.

Bases SQLite non chiffrées

SQLite est utilisé pour le stockage structuré. Sans bibliothèque de chiffrement comme SQLCipher, les bases sont lisibles en clair. Un adb pull sur un appareil rooté ou un backup non chiffré suffit pour extraire l'intégralité des données.

Logs applicatifs

Log.d("auth", "Token: " + token) en mode debug qui reste en production. Les logs sont accessibles via adb logcat et peuvent contenir des tokens, des données utilisateur ou des URL avec des paramètres sensibles.

Cache WebView

Les WebViews mettent en cache le HTML, les cookies et les données de formulaire. Si une WebView affiche des données sensibles, elles peuvent persister dans le cache même après déconnexion.

iOS : les faux-amis de la sécurité

NSUserDefaults

L'équivalent iOS des SharedPreferences. Stocke en clair dans un plist. Ce n'est pas un emplacement sécurisé malgré ce que beaucoup de développeurs pensent. Les données sont dans le backup iTunes et accessibles avec des outils de forensics.

Keychain mal configuré

Le Keychain iOS est sécurisé par conception mais son niveau de protection dépend de la configuration. L'attribut kSecAttrAccessibleAlways rend les données accessibles même quand le device est verrouillé. L'attribut correct pour la plupart des cas est kSecAttrAccessibleWhenUnlockedThisDeviceOnly.

Clipboard

Le presse-papier iOS est partagé entre toutes les applications. Si l'utilisateur copie un mot de passe ou un code 2FA, toute application en arrière-plan peut le lire. Depuis iOS 16, l'utilisateur est averti mais l'accès reste possible.

Background snapshots

Quand une application passe en arrière-plan, iOS capture une capture d'écran pour l'animation de transition. Si l'écran affiche des données sensibles (solde bancaire, informations médicales), cette image est stockée sur le device.

Les données qu'on trouve en audit

Lors de nos analyses, nous trouvons fréquemment :

  • Tokens OAuth refresh stockés en SharedPreferences/NSUserDefaults
  • Clés API de services tiers (Stripe, Firebase, AWS) en clair dans le code ou le stockage local
  • Données utilisateur complètes en cache SQLite (noms, emails, numéros de téléphone)
  • Historique de navigation et données de formulaire dans le cache WebView
  • Certificats clients et clés privées dans le bundle de l'application
  • Règles de base

  • Ne stockez que le nécessaire : chaque donnée stockée est un risque. Préférez des requêtes API fraîches aux caches locaux pour les données sensibles
  • Utilisez le stockage sécurisé natif : Keychain sur iOS, EncryptedSharedPreferences sur Android
  • Chiffrez les bases SQLite : SQLCipher pour Android, la bibliothèque de chiffrement SQLite pour iOS
  • Nettoyez à la déconnexion : supprimez tous les fichiers locaux, caches, cookies et données de session
  • Masquez l'écran en arrière-plan : affichez un écran de remplacement quand l'application passe en arrière-plan
  • Demandez un revue externe CleanIssue pour auditer le stockage local de votre application mobile.

    Articles liés

    Trois analyses proches pour continuer la lecture sur la meme surface de risque.

    Sources

    Rédigé par Florian
    Revu le 2026-04-07

    Analyse éditoriale fondée sur la documentation officielle des éditeurs, projets et autorités concernées.

    Services associés

    Si ce sujet reflète un risque concret sur votre stack, voici les audits CleanIssue les plus pertinents.

    Besoin d'une revue externe de votre SaaS RH ?

    Expliquez votre produit, votre stack et votre contexte client. Nous revenons vers vous avec le bon niveau de revue.

    Parler de votre audit