O2 VoLTE : un simple appel permettait de suivre la position de tous les clients
(mastdatabase.co.uk)- L’implémentation de 4G Calling/WiFi Calling d’O2 UK présentait un problème : l’appelant recevait des en-têtes IMS/SIP pouvant servir à estimer la position du destinataire. Cette exposition a touché tous les clients O2 pendant plusieurs mois.
- Les messages de signalisation IMS contenaient des informations sur le serveur IMS/SIP d’O2, Mavenir UAG, sa version, des informations de débogage, des messages d’erreur, ainsi que les IMSI et IMEI de l’appelant et du destinataire, et le
Cellular-Network-Infodu destinataire. - En découpant la valeur
utran-cell-id-3gppdeCellular-Network-Infoen PLMN, Location Area Code et Cell ID, puis en la comparant avec des données publiques de stations de base comme Cellmapper, il est possible de trouver la position approximative du destinataire. - En ville, les small cells installées notamment sur des lampadaires couvrent des zones réduites, ce qui augmente fortement la précision de l’estimation de position ; un client O2 en itinérance à l’étranger a aussi pu être localisé dans le centre de Copenhague.
- Désactiver à la fois 4G Calling et WiFi Calling permet d’empêcher l’exposition de la position, mais l’exposition des IMEI et IMSI subsiste indépendamment de l’état d’enregistrement IMS ; O2 doit donc retirer les en-têtes concernés des messages IMS/SIP.
Indices de localisation ayant fuité depuis les appels IMS
- Voice over LTE (VoLTE) utilise le standard IP Multimedia Subsystem (IMS) pour traiter les appels vocaux sur les réseaux mobiles via des protocoles basés sur Internet.
- Les implémentations IMS sont complexes et très dépendantes des appareils ; par le passé, certains appareils nécessitaient même un firmware spécifique pour utiliser VoLTE et WiFi Calling.
- Les réseaux mobiles choisissent comment implémenter les services IMS et quels réglages utiliser, et les téléphones communiquent directement avec ces serveurs.
- Dans cette architecture, il revient à l’opérateur mobile de maintenir les serveurs à jour et de gérer la configuration afin qu’elle n’entraîne pas d’exposition inutile de données.
Vérification de 4G Calling chez O2 UK
- O2 UK a lancé son premier service IMS, 4G Calling, le 27 mars 2017.
- Le service visait à améliorer la qualité des appels et l’expérience data, en évitant de basculer en 3G pendant un appel.
- Après être passé chez O2, l’enquêteur a voulu vérifier quels codecs vocaux étaient pris en charge par 4G/WiFi Calling.
- Sur un Google Pixel 8 rooté, il a utilisé Network Signal Guru (NSG) pour appeler un autre client O2 disposant d’un appareil compatible 4G VoLTE.
- En raison d’un bug de NSG avec le modem Samsung des Google Pixel récents, le codec d’appel en cours ne s’affichait pas automatiquement dans la section VoLTE ; il a donc consulté à la place les messages bruts de signalisation IMS entre l’appareil et le réseau.
En-têtes sensibles inclus dans les messages IMS/SIP
- La réponse du réseau était, contrairement à ce qui avait été observé sur d’autres réseaux, très détaillée et longue.
- Le message contenait Mavenir UAG, le serveur IMS/SIP utilisé par O2, ainsi qu’un numéro de version.
- Des messages d’erreur issus d’un service C++ traitant les informations d’appel, ainsi que d’autres informations de débogage, étaient également exposés.
- En particulier, les types d’en-têtes suivants apparaissaient près de la fin du message :
P-Mav-Extension-IMSI: 2 IMSIP-Mav-Extension-IMEI: 2 IMEICellular-Network-Info: informations de cellule du destinataire
- En comparant les IMSI et IMEI avec les informations de l’appareil de l’enquêteur, il est apparu qu’ils incluaient non seulement ceux de l’appelant, mais aussi ceux du destinataire de l’appel.
Comment calculer la position avec Cellular-Network-Info
- Le début de la valeur
Cellular-Network-Info,3GPP-E-UTRAN-FDD, indique que les données de cellule correspondent à de la 4G, officiellement appelée E-UTRAN FDD. - La valeur
utran-cell-id-3gppqui suit se découpe en trois parties :- les 5 à 6 premiers caractères correspondent au PLMN du réseau du destinataire ;
- les 4 caractères suivants correspondent au Location Area Code (LAC) du destinataire, en hexadécimal ;
- les 7 derniers caractères correspondent au Cell ID du destinataire, en hexadécimal.
- La dernière section indique l’âge des données en secondes.
- Elle est présente lorsque l’appareil n’est pas actuellement connecté au réseau, n’a pas de signal ou dépend de WiFi Calling.
- Dans l’exemple de message, il était possible de déduire que le destinataire était connecté au réseau O2
234-10, avec le LAC0x1003et le Cell ID0x7a60773, et qu’il utilisait un Google Pixel 9 avec une SIM O2.
Estimation de position combinée à des données publiques de stations de base
- Le Cell ID peut être saisi dans le calculateur de cell ID de Cellmapper afin de calculer l’ID du site correspondant.
- Il est ensuite possible de trouver ce site sur la carte Cellmapper et d’identifier la macrocellule utilisée au moment de l’appel.
- Les macrocellules ont une couverture relativement large, mais les zones urbaines denses utilisent beaucoup de petites cellules.
- Les small cells peuvent être installées directement sur des lampadaires.
- Chaque site peut couvrir une zone aussi réduite que 100 m².
- La même attaque a été testée sur un autre client O2 en itinérance à l’étranger, et a permis de le localiser dans le centre de Copenhague, au Danemark.
- L’appareil de l’enquêteur n’effectuait aucune action particulière sur le réseau ; il permettait simplement de voir les informations qui lui étaient envoyées.
- Un appareil O2 qui passe un appel via IMS, c’est-à-dire via 4G Calling ou WiFi Calling, peut recevoir des informations utilisables pour estimer la position géographique du destinataire de l’appel.
En-têtes qu’O2 doit supprimer et mesures d’atténuation possibles pour les utilisateurs
- Pour protéger la vie privée et la sécurité de ses clients, O2 doit retirer les en-têtes mis en évidence de tous les messages IMS/SIP.
- Il serait également logique de désactiver les en-têtes de débogage.
- Aucun appareil extérieur au cœur de réseau n’a de raison de voir ces en-têtes.
- Les en-têtes de débogage peuvent divulguer involontairement des informations supplémentaires.
- Le concurrent EE propose un canal BT responsible disclosure, mais O2 ne dispose pas d’un parcours d’escalade clair pour signaler ce type de vecteur d’attaque potentiel.
- Les 26 et 27 mars 2025, des e-mails décrivant ce comportement et les risques pour la vie privée ont été envoyés au CEO d’O2, Lutz Schüler, ainsi qu’à
securityincidents@virginmediao2.co.uk, mais il n’y a eu ni réponse ni changement de comportement. - Désactiver à la fois 4G Calling et WiFi Calling permet de bloquer efficacement la partie liée à l’exposition de la position.
- L’en-tête
Cellular-Network-Infon’est envoyé que lorsque l’appareil du destinataire répond. - L’exposition des IMEI et IMSI continue toutefois de se produire indépendamment de l’état d’enregistrement IMS.
- L’en-tête
- Dans une mise à jour du 27 mai 2025, l’affirmation initiale selon laquelle il n’existait aucun moyen d’atténuer l’exposition de la position a été corrigée : après vérification plus poussée de la signalisation IMS et de la manière dont l’appareil transmet les en-têtes, il a été établi que désactiver à la fois 4G Calling et WiFi Calling atténue bien la partie liée à l’exposition de la position.
1 commentaires
Avis de Hacker News
C’est vraiment lamentable d’avoir informé le CEO d’O2 et l’adresse e-mail dédiée aux incidents de sécurité de ce comportement et du risque pour la vie privée les 26 et 27 mars 2025, sans obtenir ni réponse ni changement
Je me demande aussi pourquoi une adresse Virgin Media serait ce qui se rapproche le plus d’un bon contact, et https://www.o2.co.uk/.well-known/security.txt devrait renvoyer 200, pas 404
Dans ce contexte, je ne vois pas de problème à rendre cela public, mais il me semble que le NCSC pourrait traiter ce type de sujet sous certaines conditions et communiquer plus efficacement avec l’organisation
L’adresse contactée n’était pas @virginmedia.co.uk mais @virginmediao2.co.uk, et il y avait une coquille dans l’article
Nous allons corriger et mettre à jour
Par exemple, quelqu’un lit peut-être DPO@o2.com
https://www.o2.co.uk/termsandconditions/privacy-policy
O2 avait autrefois une adresse pour la divulgation responsable, mais l’a supprimée il y a quelques années
Quand j’y travaillais il y a longtemps, l’équipe sécurité était excellente, mais quand je leur ai écrit l’an dernier pour un problème, toutes ces personnes avaient disparu
Ce qui est vraiment intéressant dans cette affaire, c’est que, dans la plupart des juridictions, cela ne serait probablement même pas qualifié de piratage
Les données sont volontairement transmises sur le réseau lors d’un usage normal
Aucun système n’a été trompé pour révéler des données personnelles, et ce type d’action est souvent illégal même lorsque le piratage est trivial
Ajouter quelque chose comme
&reveal_privat_data=trueà une URL pourrait déjà être considéré comme illégal, car cela montre une intention claire d’accéder à des données auxquelles on n’est pas autorisé, mais ici il n’y a même pas celaCe qui fait peur, c’est que ce n’est pas un bug théorique
Comme l’article le dit, c’est une paresse d’implémentation que d’autres opérateurs britanniques ont déjà corrigée, et les fuites d’ECI sont signalées depuis l’arrivée de la LTE
Il existe aussi des articles comme https://arxiv.org/abs/2106.05007—and, et avec une base publique de stations de base, la cartographie automatique des positions devient triviale
Je suis aussi très curieux de savoir comment l’appelant pouvait voir les messages de contrôle d’appel, c’est-à-dire SIP
Ces messages ne sont-ils pas censés se trouver dans un tunnel GRE chiffré entre le terminal, la station de base et le MME ? Si l’on peut déchiffrer le tunnel GRE, ce serait une faille énorme, mais peut-être que l’auteur de l’article a pu le faire parce qu’il analysait depuis son propre appareil
Le fait de voir la charge utile avant chiffrement reste tout de même surprenant
De nombreux appareils Android équipés de puces Qualcomm peuvent exposer un port de diagnostic modem via USB, donc même un appareil rooté n’est pas nécessaire
Cela dit, il est bien plus simple d’utiliser NSG sur un appareil rooté que de se balader avec un ordinateur portable
Une fois le port de diagnostic modem activé, il suffit d’utiliser Scat (https://github.com/fgsect/scat) pour voir tout le trafic de signalisation échangé avec le réseau
Au moins dans sa version gratuite, l’application ne semble pas « déchiffrer » quoi que ce soit, mais comme elle a les droits root et l’accès au modem, elle peut lire ces journaux
Elle permet aussi de désactiver des bandes ou de tenter de se verrouiller sur une station de base précise, ce qui est utile si l’on utilise les données mobiles comme connexion Internet principale, comme avec un routeur 4G/5G dédié
Les tunnels GTP se trouvent entre l’eNodeB et le réseau cœur, et ne sont protégés que lorsqu’ils fonctionnent dans IPsec
O2 affirme maintenant que le problème est résolu : https://www.ispreview.co.uk/index.php/2025/05/o2-uk-fixes-vo...
Il indique : « O2 nous a contactés par e-mail pour confirmer que ce problème a été résolu. Nous l’avons vérifié nous-mêmes, et la vulnérabilité semble corrigée »
Imaginez une base de données contenant des données aussi sensibles laissée volontairement sans protection pendant toute cette période, apparemment sans en informer qui que ce soit
Il sera intéressant de voir comment l’ICO traitera cela
Cela semble être un problème assez grave
Il n’est pas difficile de rooter un téléphone, d’installer NSG, puis de voir ces informations
O2 est aussi le plus grand réseau mobile du Royaume-Uni et a des contrats avec le gouvernement
Le fait qu’ils n’aient pas répondu est décevant, mais pas surprenant
O2 semble être un désordre en interne, et tout ce qui ne peut pas être corrigé directement par quelqu’un en boutique prend longtemps à être résolu
Par exemple des erreurs de portabilité de numéro
Le système a l’air vieillissant, une partie des utilisateurs n’a toujours pas accès à la VoLTE, et le nouveau 5G SA ne prend pas en charge la voix et semble trop dépendre du n28, ce qui le rend lent dans bien des cas
Le CTO a écrit sur son blog qu’il fallait « sortir des vanity metrics », alors même que c’est généralement le pire réseau en performances data
[0] https://news.virginmediao2.co.uk/leaving-the-vanity-metrics-...
Je ne comprends toujours pas comment O2 continue d’exploiter son activité
C’est de très loin le pire réseau, et même Three, avec son backhaul catastrophique, fait mieux
La seule raison pour laquelle j’ai une SIM O2 en plus de ma SIM EE, ce sont les billets Priority et le signal à l’intérieur des salles O2
Il faut toutefois une nouvelle SIM et un téléphone compatible, et la différence ressentie est complètement différente
giffgaff, qui utilise le réseau O2, affirme ne pas être affecté parce qu’il utilise sa propre implémentation de service au-dessus du réseau physique d’O2
C’est peut-être vrai, mais comme je sais qu’ils appartiennent désormais à la même société, l’intégration me paraît probable, donc je suis un peu sceptique
Si quelqu’un parvient à reproduire ça avec une SIM giffgaff, j’aimerais connaître le résultat
Si je me souviens bien, Telefónica a racheté O2 en 2006 et a lancé Giffgaff comme nouvelle marque en 2009
Je ne sais pas comment ils sont arrivés à une conclusion différente
Désactiver VoLTE permettrait-il d’atténuer le problème ? J’ai vu en ligne de la documentation expliquant comment la désactiver sur un iPhone 11, mais cette option n’existe pas sur mon iPhone 15
Donc j’imagine que cela n’aurait pas d’effet