Cybreach Consulting Prendre RDV
Retour aux articles
Vulnérabilités

Sécurité mobile : stockage local, signatures APK, ATS et détection de root

Les applications mobiles partagent de nombreuses vulnérabilités avec les applications web mais présentent des surfaces d'attaque supplémentaires. L'attaquant peut télécharger l'APK ou l'IPA, le décompiler pour analyser le code, instrumenter l'exécution, modifier le binaire, et tester sur un appareil rooté ou jailbreaké. Le modèle de menace est différent : l'utilisateur lui-même peut être l'attaquant.

Stockage local non sécurisé

Les applications stockent parfois des données sensibles en clair dans des endroits accessibles sur un appareil rooté. Sur Android : SharedPreferences non chiffré (accessible à root), bases de données SQLite sans chiffrement, fichiers dans le stockage externe (/sdcard/, accessible à toutes les applications avec permission). Sur iOS : fichiers dans le bac à sable non chiffrés (accessibles via iTunes Backup), NSUserDefaults contenant des tokens.

Solution : utiliser le Keystore Android ou le Keychain iOS pour les données sensibles (tokens, clés). Ne pas stocker de mots de passe ou de tokens de session en clair. Chiffrer les bases de données SQLite (SQLCipher).

App Transport Security (iOS)

App Transport Security (ATS) est la politique iOS qui force les connexions HTTPS avec des paramètres TLS stricts. Des exceptions dans Info.plist peuvent affaiblir cette protection. NSAllowsArbitraryLoads: true désactive entièrement ATS pour l'application, permettant des connexions HTTP non chiffrées. Des exceptions par domaine (NSExceptionDomains) peuvent également désactiver la vérification de certificat.

Signature APK et protection binaire

La signature APK garantit l'intégrité et l'authenticité de l'application. Android supporte les schémas v1, v2, v3 et v4. Le schéma v1 seul est insuffisant (vulnérable à l'attaque Janus). L'application doit être signée avec au minimum v2. La protection binaire (obfuscation, anti-décompilation) ralentit l'analyse par un attaquant mais ne remplace pas une architecture sécurisée : les secrets ne doivent pas être dans le binaire.

Détection de root et de jailbreak

Les appareils rootés (Android) ou jailbreakés (iOS) permettent de contourner les protections du sandbox, de lire les fichiers de l'application et d'intercepter les communications. La détection de ces états permet d'alerter l'utilisateur ou de bloquer certaines fonctionnalités sensibles. Les techniques de détection incluent la vérification de la présence de fichiers spécifiques (/bin/su, /Applications/Cydia.app), la vérification des permissions d'écriture hors du sandbox, et la détection de frameworks d'instrumentation (Frida, Xposed).

Récepteurs de diffusion Android exportés

Les composants Android (activités, services, récepteurs de diffusion) déclarés avec exported=true sont accessibles à d'autres applications. Un récepteur de diffusion exporté qui traite des actions sensibles peut être invoqué par une application malveillante installée sur le même appareil. Vérifier que tous les composants exportés sont soit protégés par une permission, soit conçus pour traiter des données non sensibles.

Captures d'écran en arrière-plan

iOS et Android capturent une capture d'écran de l'application quand elle passe en arrière-plan, pour l'afficher dans le gestionnaire de tâches. Si l'écran affiche des données sensibles (solde bancaire, informations médicales, tokens), cette capture peut être accédée sur un appareil rooté. La solution : effacer ou masquer l'écran avant de passer en arrière-plan.

Une question après la lecture ?

Vous souhaitez auditer votre application mobile ? Envoyez un message.

Ou réservez directement un cadrage de 30 minutes

Réserver un appel