Je me suis plongé pendant mes vacances dans la programmation d’application Android, histoire de voir par moi même quelles sont les possibilités données aux applications pour voler les données personnelles de leur utilisateurs. Je vais vous conter mes découvertes ci-après. Si vous êtes un développeur Android plus expérimenté, vous êtes le bienvenu pour partager vos connaissances dans les commentaires.
Android et versions
Les possibilités données aux développeurs d’application changent en fonction de la version d’Android que vous utilisez sur votre smartphone. De ce que j’ai vu dans la documentation API, plus vous utilisez une version récente d’Android et plus les moyens disponibles aux développeurs de vous espionner se restreignent.
Par exemple, la version 6 demande à l’utilisateur de valider chaque permission importante à l’exécution et lui permet de la refuser. Je vous invite donc à faire vos mise à jour.
Je me suis concentré ici sur la version Android 8.1 que j’utilise grâce à LineageOS.
Tâche en arrière plan
Android fait une distinction entre la partie visible de l’application appelée « Activity » et la partie de code tournant en arrière plan appelée « Service »
Il est important de savoir qu’une application peut démarrer un service en arrière plan quand elle veut, même si la partie « activity » n’est pas lancée, et ce sans que vous ne soyez notifié.
Avec le JobScheduler et AlarmManager vous pouvez démarrer le service dès que le téléphone a démarré, ou à 3h du matin, ou quand vous le rechargez, ou quand vous êtes connecté en 4G seulement…
Aussi, forcer l’arrêt d’une application ne vous garantit nullement qu’elle ne pourra pas redémarrer plus tard pour vous espionner.
Espace de stockage public
Historiquement, Android fournit un espace de stockage partagé qui correspond aux fichiers que vous pouvez accéder quand vous branchez votre smartphone en USB sur votre ordinateur.
Dans cet espace, il y a vos photos (dossier DCIM) et sûrement d’autres fichiers personnels (dossier Downloads, etc…). Pour accéder à ces dossiers, il suffit que l’application ait la permission « Stockage » sur Android 8 (READ_EXTERNAL_STORAGE dans l’API)
Vous trouverez la liste des applications qui ont accès à ce stockage sur votre smartphone dans Paramètres > Applications et notifications > Autorisations des applis > Stockage
Sachez maintenant que toutes les applications ont un accès Internet et vous voyez qui peut techniquement exfiltrer vos photos en arrière plan sans que vous en rendiez compte.
Je peux voir l’état de votre téléphone?
La permission « Voir l’état dur téléphone (READ_PHONE_STATE dans l’API) qui peut sembler anodine permet en fait à une application de collecter l’ensemble des numéros de téléphone appelés et reçus.
Sous Android 8, les applications qui ont accès à ces données sont dans Paramètres > Applications et notifications > Autorisations des applis > Téléphone. Je vous invite à y faire un tour et vérifier à quelle application vous avez donné cette permission.
Enregistrement audio et vidéo en arrière plan
Et oui, c’est possible. Il n’y a aucune contre indication dans la documentation, l’application Magnétophone de LineageOS est un exemple et vous en trouverez beaucoup d’autres sur le Play Store.
Et une fois qu’on a accès au microphone, il n’y a plus qu’à le passer à la moulinette de la reconnaissance vocale pour en extraire le texte parlé.
Sans rentrer dans la théorie du complot, il faut constater que l’utilisateur n’a pas de moyen aujourd’hui de vérifier qu’une application ne l’espionne pas en arrière plan sauf à retirer les permissions Microphone et Appareil Photo. C’est problématique dans le cas des applications dont le but est de faire des enregistrements audio ou vidéo mais dont le modèle économique est l’exploitation de vos données personnelles.
D’ailleurs, Google est conscient que cela nuit à la confiance et a décidé de restreindre dans Android 9 l’accès au micro, caméra et capteurs lorsque l’application est en tache de fond.
J’ai commencé à coder un démonstrateur où je peux enregistrer le micro alors qu’aucun élément de l’application n’est visible pour l’utilisateur (pas d’interface graphique active ni en arrière plan, pas de service visible, pas d’icone dans la barre de notification). Je publierai cela d’ici peu sur ce blog.
Parmi les autres choses rigolotes que j’ai trouvé :
- on peut récupérer le nombre de fois que vous avez contacté chaque personne dans votre carnet d’adresse.
- on peut toujours récupérer un identifiant matériel non ré-initialisable par l’utilisateur (et ce n’est pas nouveau)
- on peut savoir et déclencher une action quand vous marchez, vous arrêtez ou prenez une voiture (nécessite les GoogleApps)
- on peut aussi savoir et déclencher une action quand vous rentrez dans une zone géographique spécifique petite ou grande (nécessite les GoogleApps)
Très bon tour des possibilités méconnues qu’on les apps installées sur un Android. Milles merci d’être clair !
« Tâche en arrière plan »
OK – c’est donc ça – j’ai noté il y a qq temps que Tutanota, même après lui avoir forcé l’arrêt – se permettait de me notifier de nouveaux emails…