Google corrige un bogue Android cauchemardesque qui empêchait l’utilisateur d’appeler les services d’urgence

Google corrige un bogue Android cauchemardesque qui empêchait l’utilisateur d’appeler les services d’urgence

Le correctif de sécurité Android de janvier est maintenant disponible et corrige l’un des bogues Android les plus ennuyeux qui peuvent survenir depuis un certain temps : certaines applications peuvent vous empêcher de contacter le 911 ou d’autres numéros d’urgence dans le monde.

Début décembre, une histoire déchirante a fait surface sur un subreddit GooglePixel d’un utilisateur qui a eu son Pixel 3 planté quand il en avait le plus besoin : alors qu’il composait le 911 d’urgence pour sa grand-mère, qui « avait l’air d’avoir eu un accident vasculaire cérébral ». immédiatement après avoir appelé les services d’urgence, et l’utilisateur KitchenPicture5849 a déclaré qu’il ne pouvait pas recevoir d’appel pour se connecter ou raccrocher pour répéter l’appel. Heureusement, une ligne fixe à proximité était disponible après que leur téléphone Android se soit détraqué et que les services d’urgence aient été contactés.

Après la fin de la crise, l’utilisateur a de nouveau appelé le numéro d’urgence depuis son smartphone et Android a de nouveau planté, indiquant qu’il ne s’agissait pas d’une erreur ponctuelle. La vérification de leur facture de téléphone a également révélé que KitchenPicture5849 ne s’est jamais réellement connecté au service 911. Ils disent avoir également reçu plusieurs autres messages privés d’utilisateurs qui ont déclaré rencontrer la même erreur.

Google a contacté l’utilisateur et a publiquement répondu au message le 8 décembre :

Sur la base de nos recherches, nous avons pu reproduire le problème dans un ensemble limité de circonstances. Nous pensons que le problème n’est présent que sur un petit nombre d’appareils sur lesquels l’application Microsoft Teams est installée lorsque l’utilisateur n’est pas connecté, et nous n’avons actuellement connaissance que d’un seul rapport d’utilisateur concernant cette erreur. Nous avons déterminé que le problème était dû à une interaction involontaire entre l’application Microsoft Teams et le système d’exploitation Android sous-jacent. Microsoft travaille en étroite collaboration avec Google pour résoudre cette interaction involontaire.

Google a déclaré que Microsoft publiera une mise à jour de l’application dès que possible et que les utilisateurs devraient consulter le Play Store pour les mises à jour. La société a également mentionné que le correctif au niveau du système d’exploitation sera publié un mois plus tard, début janvier (c’est-à-dire aujourd’hui). À l’époque, Google n’avait fourni aucun autre commentaire à ce sujet.

Pourquoi les applications peuvent interrompre le service 911

Retard. Microsoft Teams a cassé le service 911 ? Les applications Android aléatoires peuvent-elles perturber les services d’urgence ? Comment? Pourquoi des applications tierces seraient-elles à des milliers de mètres d’une fonctionnalité aussi importante ? D’autres applications perturbent-elles le service 911, ou seulement Microsoft Teams ? Bien que Teams ait été corrigé, était-il acceptable de laisser les utilisateurs d’Android traîner avec ce bogue au niveau du système d’exploitation pendant un mois, surtout lorsque nous ne savons pas si d’autres applications le font ? Android est Android, donc de nombreux téléphones ne seront jamais réparés de toute façon. Comment les utilisateurs peuvent-ils savoir que les services d’urgence fonctionneront ? Sauf que Google n’a donné aucune réponse autre que d’attendre un mois pour un correctif.

Heureusement, certaines personnes très intelligentes de la communauté Android ont pu fournir des réponses que Google n’a pas partagées. Mishaal Rahman, rédacteur technique principal chez Esper, a écrit un article incroyable sur Medium détaillant comment l’erreur fonctionne et pourquoi elle se produit. Les applications Android avec une fonction d’appel téléphonique peuvent enregistrer un « PhoneAccount » avec le système, indiquant qu’elles ont la capacité de passer des appels. Plusieurs applications peuvent être installées avec PhoneAccount, dont une appelée « CAPABILITY_PLACE_EMERGENCY_CALLS ». Lorsque vient le temps d’appeler le 911, Android trie la liste des comptes téléphoniques enregistrés et en sélectionne un. Jusqu’ici, tout va bien.

L’un des nombreux bogues identifiés dans le message de Rahman est que Microsoft Teams enregistrera un PhoneAccount supplémentaire sur le système à chaque démarrage de Teams, à condition que vous ne soyez pas connecté. Notez qu’il n’est pas rare d’installer Microsoft Teams et de ne jamais l’utiliser – un La plainte courante à propos de l’application Android Teams est qu’elle déconnecte souvent automatiquement les utilisateurs.

Si vous êtes déconnecté, exécuter Microsoft Teams 10 fois encombrera votre téléphone avec 10 PhoneAccounts en double de Teams. Les équipes ne devraient pas le faire, et la mise à jour de Microsoft a empêché les équipes de le faire, mais de nombreux comptes téléphoniques en double ne devraient pas non plus suffire à mettre le système téléphonique Android à genoux.

Bug suivant : lors du choix d’un PhoneAccount pour un appel d’urgence, Android passe par un processus de tri complexe pour déterminer quel compte utiliser. La dernière étape de ce processus de tri, le résolveur de conflits, est le tri par hashcode. La comparaison de hashcode soustrait simplement un hashcode d’un autre.

Mais tout comme ce bogue stupide de Microsoft Exchange 2000 qui s’est produit l’autre jour, cela pourrait entraîner un débordement ou un sous-dépassement d’entier, et maintenant le sous-système du téléphone va planter. Le code de Google est bogué, mais comme c’est le dernier moyen de résoudre les problèmes de tri après avoir essayé des choses plus évidentes comme le nom du package, il ne doit être appelé que sur une instance très spécifique de l’application qui génère des PhoneAccounts en double. Alors merci Microsoft !

Le correctif de Google pour cette erreur est ici , intitulé « Corriger le dépassement/sous-dépassement d’entier causé par le tri d’un compte téléphonique en double lors d’un appel au numéro d’urgence. «  Au lieu de soustraire un hashcode d’un autre et de travailler potentiellement avec un nombre très grand ou très petit qui plante le système, Google gère désormais les deux nombres via la fonction Java « Integer.compare ». Cela renvoie uniquement -1, 0 ou 1, indiquant un résultat inférieur, identique ou supérieur de la comparaison.

Si vous êtes comme moi au début et que vous vous demandez pourquoi Android trie les comptes téléphoniques et pas seulement utilise le compte par défaut sur la carte SIM, je vais faire une supposition folle et dire que c’était une tentative de faire fonctionner le service 911 malgré tout. Qui. Juste au cas où le compte principal ne fonctionnerait pas, Android a besoin d’une liste de tous les comptes téléphoniques possibles qu’il peut essayer et veut le faire automatiquement afin de se connecter au 911 par tous les moyens nécessaires. Ce système de triage n’existe que pour contacter les services d’urgence, de sorte que les appels téléphoniques réguliers fonctionnent toujours pour les utilisateurs concernés.

Le troisième bogue dans ce gâchis est que Microsoft Teams ne s’enregistre même pas en tant que gestionnaire d’appels d’urgence. Les équipes ont créé un million de comptes téléphoniques, et il n’a pas utilisé l’indicateur CAPABILITY_PLACE_EMERGENCY_CALLS, mais il a tout de même cassé le 911. Le processus de tri de Google commence par demander tous les comptes téléphoniques, alors que la meilleure première étape serait de commencer par tous les comptes téléphoniques prenant en charge les appels d’urgence. appels.

Google prend une décision encore plus radicale avant ce dernier bogue et supprime tous les comptes téléphoniques « autogérés » de la procédure de service d’urgence 911. Les comptes téléphoniques Android « autogérés » comme Microsoft Teams bénéficient d’un accès plus direct à la pile de téléphonie Android et peuvent utiliser leurs propres fonctions. Le système d’appel d’urgence Android ne prendra désormais en compte que les fournisseurs de téléphonie plus simples qui se connectent à l’application téléphonique par défaut, comme votre compte opérateur.

Toutes ces autres applications VoIP peuvent probablement encore être utilisées pour appeler le 911 (dans de nombreux pays, la fonction 911 est requise par la loi). Mais si vous ouvrez le numéroteur par défaut et appuyez sur le 911, Android ne choisira que parmi les comptes téléphoniques standard gérés par le système.

Qui est réparé et comment vous pouvez vérifier une erreur de service 911

Rahman dit que le bogue de Google pour cela est CVE-2021-39659, que le bulletin de sécurité mensuel classe comme une vulnérabilité de déni de service de haute gravité avec des correctifs pour les appareils exécutant Android 10, 11 et 12. Dans la base de code Android, Google est En fait, ce correctif est entièrement rétroporté vers Android 8.0, qui n’est techniquement plus pris en charge. Ceci est principalement purement théorique puisque les fournisseurs zéro ne poussent pas réellement les mises à jour de sécurité sur ces appareils plus anciens. Mais le code est là si quelqu’un en a besoin.

La pile de téléphonie Android n’est (encore ?) pas un module Project Mainline facilement évolutif, donc le seul moyen d’obtenir un correctif est avec la mise à jour mensuelle de sécurité Android de janvier 2022. Samsung devrait mettre à jour tous les téléphones de cette liste à partir de cette semaine, tandis que Google publie des correctifs pour les Pixel 3a, 4, 4a, 5 et 5a. Mise à jour : Une mise à jour des appels d’urgence est également attendue pour le Pixel 3 hors service.

La mise à jour n’est pas encore disponible pour le Pixel 6. Le nouveau produit phare de Google est actuellement dans une crise de mise à jour. La mise à jour de décembre 2021 a été annulée en raison de problèmes de connectivité non mobile (les appels téléphoniques ne fonctionnent pas). Alors que Google s’efforce de résoudre les problèmes, la prochaine mise à jour de Pixel 6 avec ce correctif 911 devrait être « fin janvier ». En attendant, il est normal d’être sur le patch de novembre. Les deux graphiques Google : « début janvier » et « fin janvier » semblent incroyablement lents en raison d’un bug qui peut entraîner la mort littérale des utilisateurs.

Je vais faire une autre supposition folle et dire que le Pixel 6 est un téléphone étrange car il s’agit d’un SoC et d’un modem complètement différents (tous deux de la division Exynos de Samsung, et tous les autres Pixel utilisent Qualcomm). La création d’une saison de magasinage des Fêtes n’a donné à Google aucune marge de manœuvre en cas de retard de lancement. Cela ne le rend pas moins décevant pour un téléphone avec beaucoup d’avantages pour la première fois, mais j’espère que c’est un problème temporaire.

Je suis surpris que ce soit juste un bogue « élevé » (au lieu de « critique ») et qu’il faille un à deux mois pour le déployer. Retarder une ambulance peut être fatal, donc ce serait bien si tout arrivait plus vite, pas la façon dont Google décide de résoudre ce problème.

Jusqu’à présent, nous n’avons entendu parler que de Microsoft Teams déclenchant cette erreur de comptes téléphoniques en double, mais on ne sait pas si d’autres applications font une erreur similaire. Si vous voyez une application sur cette liste générant beaucoup de comptes en double, il y a de fortes chances qu’elle vous empêche de vous connecter aux services d’urgence. Je recommande de désinstaller l’application, de contacter le développeur et d’en informer les autres sur Twitter ou ailleurs.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *