2 points par GN⁺ 2025-05-18 | 1 commentaires | Partager sur WhatsApp
  • 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-Info du destinataire.
  • En découpant la valeur utran-cell-id-3gpp de Cellular-Network-Info en 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 IMSI
    • P-Mav-Extension-IMEI : 2 IMEI
    • Cellular-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-3gpp qui 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 LAC 0x1003 et le Cell ID 0x7a60773, 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-Info n’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.
  • 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

 
GN⁺ 2025-05-18
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

    • C’est en fait une erreur de notre côté
      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
    • La politique de confidentialité liste plusieurs adresses e-mail en raison des exigences du RGPD
      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

    • Je sais que l’équipe concernée chez O2 a bien été informée, mais au final il semble qu’il n’y ait pas eu d’action, ou pas assez
  • 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 cela

    • Cela reste une fuite de données, et si la réglementation applicable est celle du Royaume-Uni, il faut la notifier immédiatement à l’autorité de contrôle, faute de quoi des amendes et autres sanctions peuvent s’appliquer
    • Je pense que tu ne mesures pas à quel point le Computer Misuse Act britannique est appliqué largement
  • Ce 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

    • Il est possible qu’ils soient en panique, à attendre qu’un service de renseignement qui utilisait déjà cela leur dise quoi faire
  • 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

    • Je suis l’éditeur de l’article
      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
    • J’utilise un téléphone Android rooté et une application appelée Network Signal Guru : https://play.google.com/store/apps/details?id=com.qtrun.Quic...
      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é
    • De nombreux opérateurs configurent la signalisation SIP pour VoLTE afin qu’elle utilise un transport IPsec terminé au niveau du P-CSCF, mais la plupart, voire tous, configurent IPsec uniquement pour la protection de l’intégrité
    • Je pense que tu voulais parler de tunnel GTP, pas de GRE
      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
    • Correction : c’est bien GTP
  • O2 affirme maintenant que le problème est résolu : https://www.ispreview.co.uk/index.php/2025/05/o2-uk-fixes-vo...

    • L’article soumis a été mis à jour ce matin
      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 »
    • Dans son communiqué, l’entreprise a déclaré que « les équipes d’ingénierie travaillaient et testaient un correctif depuis plusieurs semaines »
      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 commence à me demander si la vraie raison pour laquelle ils ne facturent pas l’itinérance dans l’UE n’est pas qu’ils n’ont tout simplement pas le système pour le faire
  • 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

    • L’accès au réseau 5G Standalone a nettement amélioré les choses
      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

    • Telefónica en est propriétaire depuis longtemps
      Si je me souviens bien, Telefónica a racheté O2 en 2006 et a lancé Giffgaff comme nouvelle marque en 2009
    • J’ai testé sur le réseau giffgaff, et il est effectivement affecté
      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

    • Il est indiqué que « désactiver 4G Calling n’empêche pas l’exposition de cet en-tête ; lorsque l’appareil devient injoignable, l’en-tête interne continue de révéler la dernière cellule à laquelle il était connecté et depuis combien de temps »
      Donc j’imagine que cela n’aurait pas d’effet
    • L’un des aspects agaçants d’O2 UK est qu’ils ne prennent pas en charge la VoLTE pour les anciens clients prépayés, seulement pour les clients avec abonnement mensuel, mais à présent cela paraît presque être une bonne chose