1 points par GN⁺ 2023-06-27 | 2 commentaires | Partager sur WhatsApp
  • Dans la fenêtre contextuelle Manage my account d’Android, un écran pouvant accéder à des sites web ordinaires s’ouvre, et il est aussi accessible depuis Settings et la suite d’applications Google
  • Le chemin d’accès passe successivement par l’onglet Security de la gestion du compte Google, Password Manager, l’aide sur le chiffrement sur l’appareil, les règles de confidentialité, puis le menu Search
  • Cet écran permet même de lire des vidéos YouTube, mais il n’a ni historique de navigation ni barre d’adresse, et le bouton retour ramène à l’écran des paramètres plutôt qu’à l’historique web
  • Dans la console JavaScript, on voit un objet mm et les fonctions closeView(), requestSecurityKeyHandshake() et updateSecurityKey(), mais l’usage réel de certaines fonctions n’est pas confirmé
  • Google a d’abord répondu qu’il ne s’agissait pas d’une faille de sécurité et que le contournement du contrôle parental était aussi un comportement prévu, mais a indiqué 3 jours après la publication et les articles de presse qu’il réexaminerait le signalement

Un navigateur caché qui s’ouvre dans les paramètres Android

  • Plusieurs applications Android disposent d’une fenêtre contextuelle Manage my account, accessible aussi depuis des applications majeures comme Settings et la suite d’applications Google
  • Après quelques étapes, l’intérieur de la fenêtre contextuelle se comporte comme un navigateur capable d’accéder à des sites web ordinaires
    • Settings → Google, ou sélectionner “Manage my account” dans une application permettant de choisir un compte
    • Dans l’onglet “Security”, sélectionner “Password Manager”
    • Sélectionner l’icône Settings en haut à droite
    • Sélectionner “Set up on-device encryption” → “Learn more about on-device encryption”
    • Dans le menu hamburger, aller à “Privacy Policy”
    • Appuyer sur le menu à 9 points en haut, attendre environ 5 secondes, puis sélectionner “Search”, ou aller à l’élément Google
    • En se déconnectant du compte Google, il est possible de l’utiliser comme un navigateur permettant d’aller où l’on veut
  • Dans cet état, la lecture de vidéos YouTube est également possible, et l’écran s’ouvre à l’intérieur de l’application Settings ou de l’application depuis laquelle on est arrivé au départ
  • Différences avec un navigateur classique

    • Aucun historique de navigation n’est conservé
    • À la fermeture de la session, le compte Google connecté est automatiquement déconnecté
    • Il n’y a pas de barre d’adresse
    • Appuyer sur la touche retour ne revient pas à la page web précédente, mais du côté des paramètres de Password Manager

L’objet JavaScript mm et la réponse de Google

  • Dans une console JavaScript mobile comme eruda, on peut observer un objet JavaScript nommé mm
  • L’objet mm comporte trois fonctions
    • closeView() : ferme le navigateur et se comporte à peu près comme lorsqu’on appuie sur la touche retour
    • requestSecurityKeyHandshake() : sa fonction n’a pas été confirmée, mais son nom paraît sensible
    • updateSecurityKey() : sa fonction n’a pas été confirmée, mais son nom paraît sensible
  • Comme ce navigateur s’ouvre depuis le parcours de la fonctionnalité on-device encryption, l’éventuel lien entre les deux fonctions non confirmées et la configuration des clés de chiffrement locales reste une supposition
  • Google a répondu au premier signalement qu’il ne s’agissait pas d’une faille de sécurité et que le contournement du contrôle parental relevait d’un “Intended Behavior”
  • Après la publication de l’article, plusieurs médias anglophones, russophones et autres en ont parlé, et 3 jours après la publication Google a indiqué qu’il réexaminerait ce signalement
  • Une discussion connexe est disponible sur Hacker News discussion

2 commentaires

 
wedding 2023-06-28

Quand j’allais dans la gestion des mots de passe, j’avais l’impression que quelque chose réagissait avec un léger temps de retard… Donc ce n’était peut-être pas juste une impression.

 
GN⁺ 2023-06-27
Commentaires sur Hacker News
  • J’ai un peu enquêté, et quand on appuie sur « Manage my account », on ne reste pas dans l’app Paramètres, on bascule vers une Activity intégrée à Google Play Services
    Au final, le navigateur était com.google.android.gms/.auth.folsom.ui.GenericActivity, et il ne semblait pas utiliser Chrome, qui est l’implémentation système WebView par défaut sur mon téléphone
    Android permet de créer une interface entre le code Android et le code JavaScript avec addJavascriptInterface, et GMS semble pas mal l’utiliser, donc ça ressemble à une surface d’attaque intéressante à examiner plus tard
    L’interface suspecte mm se trouve dans MagicArchChallengeView et renvoie à la classe obfusquée bwuz. bwuz elle-même est presque vide, mais renvoie à son tour vers quelques classes obfusquées
    En cherchant dans les chaînes de caractères, on voit que deux classes, "qvc" et "pdn", exposent des fonctions liées ; pdn semble être la pièce maîtresse, et qvc contient des logs d’erreur utiles qui révèlent à quoi correspondent les paramètres
    setVaultSharedKeys attend un tableau d’objets JSON contenant gaiaId, epoch et deux valeurs key, puis le transforme en liste avant de le passer à une classe abstraite qui semble fortement liée à la sécurité des comptes
    addEncryptionRecoveryMethod attend gaiaId, une liste de domaines de sécurité et une clé publique de membre, puis transmet aussi tout cela à la même classe abstraite
    Je me suis arrêté là parce que je devais partir au travail, mais il semble utile de creuser davantage cette interface, ainsi que d’autres interfaces que GMS expose au WebView
    https://developer.android.com/reference/android/webkit/WebVi...

    • Je me demande pourquoi ils n’utilisent pas le WebView système par défaut. Ça veut dire WebKit plutôt que Blink ?
      Même si c’est Blink, il y a de fortes chances que ce ne soit pas aussi à jour que ce que fournit Chrome. D’après le lien vers la doc, ça semble bien être WebKit
    • Alex Russell en a parlé au State of the Browser 2021 : WebView sur Android n’est pas Chrome
      https://2021.stateofthebrowser.com/speakers/alex-russell/
    • gaiaId signifie Google Accounts and ID Administration ID ; celui qui a trouvé ce nom pour ce qui est en gros l’identifiant unique global de Google devait être assez fier de lui, et à juste titre
  • Je ne vois pas en quoi c’est différent des autres WebView intégrés. Presque toutes les apps n’embarquent-elles pas un WebView intégré pour des choses comme « afficher la politique de confidentialité » ?
    Il est souvent bien plus simple d’afficher du HTML que de confier toute la politique de confidentialité au développeur de l’app

    • C’est exactement ça. C’est le Android System WebView, le navigateur intégré qu’on utilise quand l’app n’est pas elle-même un navigateur
    • Peut-on visiter des sites web arbitraires avec ce WebView ? Je n’ai jamais réussi
      Si je me souviens bien, configurer un WebView pour autoriser plusieurs domaines ou URL était déjà assez compliqué. Je ne suis pas développeur Android, et la dernière fois que j’y ai touché remonte à quelques années
    • Ce WebView semble avoir des fonctions JavaScript privilégiées pour la gestion et la récupération de clés du gestionnaire de mots de passe
    • Si on peut contourner le contrôle parental depuis n’importe quelle app ayant un WebView intégré, c’est un bug Android bien plus large
      L’histoire de la gestion des clés reste encore largement spéculative, et l’auteur n’a pas testé ce que cela faisait réellement ; on en est plutôt au niveau de « il y a deux méthodes qui ont l’air effrayantes, mais on ne sait pas exactement ce qu’elles font »
    • Il y a longtemps, on pouvait aussi faire le même genre de chose dans iTunes pour plaisanter. Je ne sais pas si c’est vraiment un si gros problème
  • C’est un peu comme l’époque où on accédait à Internet depuis des fichiers d’aide CHM quand le navigateur était bloqué
    Bon sang, ça trahit mon âge

    • Maintenant on révèle son âge via ses exploits ? Que dirais-tu de : « sur un terminal de bibliothèque universitaire, j’accédais à des sites en gopher pour lancer une session telnet et consulter les e-mails de mon université d’un autre État pendant les vacances d’été » ?
    • Je m’en servais aussi pour réinstaller des jeux que l’administrateur avait supprimés
    • Dans notre lycée, on ouvrait Windows Explorer via la boîte de dialogue d’ouverture de fichier de Notepad pour sortir d’un étrange shell bookshelf. Je crois que c’était un produit IBM
  • C’est exactement comme la manière dont je contournais le contrôle parental de Windows quand j’étais enfant
    Je n’avais droit qu’à une heure d’ordinateur, et une fois le temps écoulé, toutes les apps étaient fermées sauf celles de Microsoft Office, soi-disant pour la productivité
    En cliquant un peu partout, j’avais fini par trouver comment ouvrir un navigateur dans Outlook et jouer à des jeux Flash sur Miniclip

    • Ça me rappelle comment on contournait les Mac verrouillés au lycée. On ne pouvait lancer que certaines apps et il était impossible d’ouvrir System Preferences, mais Safari permettait quand même de changer le navigateur web par défaut
      On remplaçait le navigateur par défaut par Terminal, puis on ouvrait Word pour y créer un lien et cliquer dessus. En temps normal, le Terminal lancé de façon classique était limité, par exemple en empêchant l’ouverture d’autres apps, mais cette instance de Terminal ouverte ainsi avait davantage de droits, ce qui permettait de lancer des jeux sur un disque inséré avec open /path/to/your/app
      Quand le prof de permanence est venu demander si on avait le droit de jouer à Starcraft, j’ai répondu : « comme vous le savez, ces ordinateurs sont assez verrouillés, donc si on arrive à faire tourner ce jeu, c’est sûrement que l’école l’autorise ». Je n’arrive toujours pas à croire que ça ait marché
  • Si un enfant arrive à trouver ce hack et à accéder à des sites bloqués, je pense qu’il l’a bien mérité

    • Il ne l’a peut-être pas trouvé lui-même ; il a aussi pu le lire sur Internet ou l’apprendre d’autres enfants
  • Il y avait une méthode de contournement similaire sur la page des licences de about
    Il suffisait de suivre les liens vers les licences et on obtenait un navigateur. Pratique pour faire apparaître un navigateur sur des systèmes comme des autoradios ou des vélos Peloton

    • Je viens d’ouvrir la page « Third-party licenses » sur mon Pixel 6, et elle affiche une liste de liens sans fin
      On dirait la liste de tous les fichiers du système de fichiers
  • L’expérience de cette personne qui a signalé un bug à Google me rappelle la mienne
    Moi : il y a un bug dans Google Sheets qui expose à des tiers du contenu supprimé
    Google : ce n’est pas un bug. Fonctionnement intentionnel. Ticket fermé
    Moi : vraiment ? J’ai subi un préjudice réel en utilisant cette application
    Google : en fait, c’est bien un bug, mais c’est un problème connu depuis longtemps, donc il n’entre pas dans le programme de bug bounty. Ticket fermé

    • Quand j’ai signalé une vulnérabilité à Google, c’était presque exactement pareil
      Moi : il y a un bug dans Gmail qui permet à un e-mail falsifié de masquer l’échec de DKIM et d’apparaître comme légitime
      Google : "Won't fix (Intended Behavior)"
      Moi : Google considère donc vraiment comme intentionnel que des e-mails falsifiés paraissent légitimes dans l’interface ?
      Google : en fait, c’est un problème connu
    • J’ai eu la même expérience. Je n’ai reçu de Google que des réponses vagues, puis quelques mois plus tard le responsable de TAO a annoncé le correctif de la vulnérabilité que j’avais signalée à l’origine
      En plus, les premiers articles essayaient de relier cette vulnérabilité à des opérations de piratage chinoises/russes. Cette propagande devrait être renvoyée à Google lui-même. Google est une entreprise américaine, et il a laissé une porte dérobée grande ouverte que n’importe qui pouvait exploiter, à l’étranger comme dans le pays. En pratique, les deux l’ont exploitée
      Google a un vrai problème. Je ne sais pas ce qui s’est passé depuis 2019, mais ce n’est pas bon
    • J’ai aussi quelque chose à ajouter à cette histoire
      Moi : il y a un bug dans Google Play Services
      Google : ce n’est pas un bug. Fonctionnement intentionnel. Ticket fermé
      Moi : j’ai publié le bug sur mon blog, et les médias en ont largement parlé
      Google : il semble que nous nous soyons trompés ! C’est bien un bug. Nous vous recontacterons dans quelques semaines
  • J’ai découvert aujourd’hui qu’il existe une console JavaScript mobile
    https://eruda.liriliri.io/

    • Il existe aussi une version distante du même auteur : https://github.com/liriliri/chii
      On peut ouvrir les outils de développement depuis un autre ordinateur, et toutes les informations sont synchronisées via WebSocket. Je l’ai déjà utilisée une fois pour déboguer un problème sur l’équipement d’un client
    • Ce serait bien d’avoir un bookmarklet. Les outils de développement du navigateur actuels ont d’ailleurs commencé de cette façon, avec Firebug
    • C’est vraiment excellent. Ça ne marche pas dans Brave sur iOS, mais comme ça fonctionne dans Safari, ça me suffit
    • Je ne sais pas si je suis le seul, mais chez moi ça ne marche pas du tout. Même en collant un snippet JavaScript dans la barre d’adresse, il ne se passe rien, et dans Nightly il lance une recherche Google avec cette chaîne
    • Il m’arrive parfois de me donner la peine d’utiliser jusqu’à data:text/html,, mais celui-ci est étonnamment riche en fonctionnalités
  • Je faisais la même chose dans le hall pendant que mes parents faisaient leurs opérations bancaires
    À l’époque, les tags best viewed in Netscape Navigator étaient une mine d’or. Le procédé était presque le même : on cliquait jusqu’à tomber sur un tag de ce genre, puis on passait de là à un moteur de recherche

    • Je m’en suis déjà servi dans une Tesla de location pour atteindre, via l’app YouTube, un navigateur qui affichait des vidéos presque en plein écran
      Ensuite je suis allé sur un site de streaming plein d’adwares douteux, et au moment où j’ai changé de vidéo, tout l’ordinateur de la Tesla s’est figé et il a fallu faire un redémarrage forcé de la voiture
  • Ça me rappelle les anciennes versions de Windows. En appuyant sur F1, on pouvait déclencher diverses commandes d’exécution via Windows Help

    • C’est aussi la première chose à laquelle j’ai pensé. Ça ressemble à la méthode de contournement de l’écran de connexion sous Windows 95/98 du genre « F1 → ouvrir le fichier d’aide → Other... → clic droit sur explorer.exe puis choisir Run »