Accueil / Permissions Android
Permissions Android

Ce qu'une application VPN peut voir et faire sur Android

Une application VPN reçoit un accès privilégié au trafic de l'appareil. Savoir ce que cet accès recouvre, et repérer les permissions qui n'ont rien à y faire, est un test rapide et décisif.

Installer un VPN, c'est accorder à une application le droit d'intercepter l'ensemble du trafic réseau du téléphone. Cet accès est légitime — c'est la fonction même d'un VPN — mais il fait de l'éditeur un intermédiaire qui voit passer beaucoup de choses. Cette page décrit précisément ce que l'API Android expose à une application VPN, quelles permissions supplémentaires doivent alerter, et comment auditer une application en quelques minutes. C'est le pendant technique de la question centrale sur les VPN gratuits pour Android : la politique de confidentialité annonce des intentions, les permissions et les traceurs montrent ce que l'application peut réellement faire.

L'API VpnService : ce que le système accorde

Sur Android, une application VPN utilise la classe VpnService et se déclare avec la permission BIND_VPN_SERVICE. Au premier démarrage du tunnel, le système affiche un dialogue de consentement explicite et place une icône de clé dans la barre d'état, visible tant que le VPN est actif. Une seule application VPN peut être active à la fois : en activer une désactive la précédente.

Techniquement, l'application crée une interface réseau virtuelle (tun) et demande au système d'y router le trafic. À partir de là, l'application reçoit les paquets IP sortants avant leur chiffrement et leur envoi vers le serveur. Elle a donc accès :

  • aux adresses IP de destination de toutes les connexions — donc à la liste des serveurs contactés par chaque application ;
  • aux requêtes DNS, si l'application gère le résolveur du tunnel — c'est-à-dire à l'historique des noms de domaine consultés ;
  • au nom de domaine en clair transmis lors de la négociation TLS (le champ SNI), tant que le chiffrement du ClientHello n'est pas généralisé ;
  • aux volumes, horodatages et tailles de paquets, qui permettent une analyse de trafic même sans accès au contenu.

L'application ne déchiffre pas le contenu HTTPS. Mais l'ensemble des métadonnées ci-dessus suffit à reconstituer une image détaillée de l'activité de l'utilisateur. C'est exactement la visibilité que l'on retire à son fournisseur d'accès en installant un VPN — et qu'on transfère à l'opérateur du VPN.

L'application configure aussi le périmètre du tunnel. Elle peut router tout le trafic, ou n'en router qu'une partie via le tunnel divisé (split tunnel), en incluant ou en excluant des applications précises. Cette capacité est utile — exclure une application bancaire qui refuse les connexions VPN, par exemple — mais elle signifie qu'une application VPN décide unilatéralement de ce qui passe ou non par le tunnel. Une configuration par exclusion mal maîtrisée, ou réinitialisée par une mise à jour, peut laisser sortir en clair le trafic d'applications que l'utilisateur croyait protégées. Il faut donc vérifier périodiquement, dans les réglages du client, quelles applications sont réellement dans le tunnel.

Les permissions annexes à surveiller

Certaines permissions sont normales pour une application VPN. D'autres n'ont aucune justification fonctionnelle et signalent soit de la collecte publicitaire, soit pire.

PermissionStatut pour un VPN
INTERNET, ACCESS_NETWORK_STATENécessaires
FOREGROUND_SERVICENécessaire (maintien du tunnel, notification)
POST_NOTIFICATIONS (Android 13+)Attendue (notification d'état)
RECEIVE_BOOT_COMPLETEDAcceptable (reconnexion au démarrage)
ACCESS_FINE_LOCATIONInjustifiée — un VPN n'a pas besoin de la position GPS
READ_PHONE_STATEInjustifiée — donne l'identité de l'appareil et de l'opérateur
READ_CONTACTS, GET_ACCOUNTSInjustifiée
QUERY_ALL_PACKAGESSuspecte — liste toutes les applications installées
REQUEST_INSTALL_PACKAGESSuspecte hors mise à jour hors magasin
READ_EXTERNAL_STORAGE / accès média largeInjustifiée pour la fonction VPN

Le raisonnement est simple : une permission dangereuse qui ne sert pas la fonction VPN sert donc autre chose. Dans le meilleur cas, du ciblage publicitaire ; dans le pire, de la collecte revendue. La localisation précise et l'état du téléphone sont les deux drapeaux rouges les plus courants.

Les kits tiers embarqués dans l'application

Au-delà des permissions déclarées, une application peut embarquer des kits de développement tiers — régies publicitaires, analyse d'audience, attribution marketing, suivi de plantages. Chacun de ces kits communique avec un serveur qui n'appartient pas à l'éditeur du VPN, et lui transmet a minima l'identifiant publicitaire, le modèle de l'appareil, la version d'Android et des événements d'usage.

Ces kits ne demandent pas de permission visible, mais ils sont détectables : un analyseur d'APK décompose le paquet et liste les traceurs connus qu'il contient, ainsi que les permissions réellement présentes dans le manifeste (parfois différentes de ce que le magasin affiche). Le résultat est un nombre — zéro, un, cinq, douze — directement comparable entre services. Un client VPN dont la raison d'être est la confidentialité et qui embarque une dizaine de traceurs se contredit lui-même.

Repère

Un client Android open source publie son code : la revue externe devient possible, et les builds reproductibles permettent de vérifier que l'APK distribué correspond au code publié. C'est le meilleur gage sur ce que l'application fait réellement — bien supérieur à une déclaration dans une politique de confidentialité.

Ce qu'ont changé les versions récentes d'Android

Le modèle de permissions s'est resserré au fil des versions. Android 11 a introduit les permissions à usage unique et l'auto-révocation des permissions des applications non utilisées pendant plusieurs mois, ainsi que le cloisonnement du stockage. Android 12 a ajouté les indicateurs d'accès au micro et à la caméra, la possibilité de n'accorder qu'une localisation approximative, et un tableau de bord de confidentialité qui recense les accès récents. Android 13 a rendu la notification une permission à accorder et introduit le sélecteur de photos qui évite d'accorder l'accès à toute la photothèque. Android 14 a restreint les catégories de services de premier plan et durci les règles d'installation d'applications ciblant d'anciennes versions.

Ces évolutions aident, mais elles ne remplacent pas une vérification manuelle : une application peut toujours demander une localisation approximative ou l'état du réseau, et un utilisateur pressé accorde souvent sans lire.

Auditer une application VPN en cinq minutes

  • Avant l'installation : sur la fiche du magasin, ouvrir la section sur la sécurité des données et la liste des autorisations. Noter toute permission de localisation, de téléphonie, de contacts ou de stockage large.
  • Passer l'APK sur un analyseur de traceurs : relever le nombre de kits tiers et les permissions réellement déclarées dans le manifeste.
  • Après l'installation : Paramètres → Applications → [application] → Autorisations. Révoquer tout ce qui n'est pas indispensable ; en pratique une application VPN ne devrait rien avoir d'autre que l'accès réseau et la notification.
  • Android 12 et plus : Paramètres → Confidentialité → Tableau de bord des autorisations, pour voir si l'application a accédé à la localisation, au micro ou aux contacts.
  • Activer « Supprimer les autorisations si l'application est inutilisée » et « Mettre l'application en pause si elle est inutilisée ».

Cet audit se recoupe avec les autres critères de la grille d'évaluation et avec ce que révèle le modèle économique du service. Une application sobre en permissions, sans traceur, au code ouvert, cohérente avec une politique de confidentialité claire, part avec une note élevée avant même les tests réseau. Une application qui réclame la localisation et embarque des régies publicitaires est écartée sans qu'il soit nécessaire d'aller plus loin.

Le réglage du VPN permanent

Un point de configuration mérite d'être connu dès cette étape : Paramètres → Réseau et Internet → VPN → (roue crantée de l'application) → « VPN permanent » et « Bloquer les connexions sans VPN ». Le premier relance automatiquement le tunnel ; le second fait bloquer par le système tout trafic hors tunnel. Toutes les applications ne déclarent pas prendre en charge le mode permanent — celles qui ne le font pas grisent l'option. Le comportement de ce blocage face aux fuites et aux coupures est détaillé dans la page sur le kill switch et les fuites sur Android.