Google risolve il bug di Android da incubo che impediva all’utente di chiamare i servizi di emergenza
La patch di sicurezza Android di gennaio è stata rilasciata e corregge uno dei bug Android più fastidiosi che possono verificarsi da un po’ di tempo: alcune app possono impedirti di contattare il 911 o altri numeri di emergenza in tutto il mondo.
All’inizio di dicembre, una storia straziante è emersa su un subreddit di GooglePixel da un utente che ha avuto il crash del suo Pixel 3 quando ne aveva più bisogno: mentre componeva il numero di emergenza 911 per sua nonna, che “sembrava avesse avuto un ictus”. L’intero sottosistema telefonico si è bloccato. subito dopo aver chiamato i servizi di emergenza, e l’utente KitchenPicture5849 ha dichiarato di non poter ricevere una chiamata per connettersi o di riagganciare per ripetere la chiamata. Fortunatamente, un telefono fisso nelle vicinanze era disponibile dopo che il loro telefono Android è andato in tilt e sono stati contattati i servizi di emergenza.
Al termine della crisi, l’utente ha effettuato un’altra chiamata al numero di emergenza dal proprio smartphone e Android si è nuovamente bloccato, indicando che non si trattava di un errore occasionale. Il controllo della bolletta del telefono ha anche rivelato che KitchenPicture5849 non si è mai effettivamente connesso al servizio 911. Dicono di aver ricevuto anche molti altri messaggi privati da utenti che hanno affermato di aver riscontrato lo stesso errore.
Google ha contattato l’utente e ha risposto pubblicamente al messaggio l’8 dicembre:
Sulla base della nostra ricerca, siamo stati in grado di riprodurre il problema in una serie limitata di circostanze. Riteniamo che il problema sia presente solo su un numero limitato di dispositivi con l’app Microsoft Teams installata quando l’utente non ha effettuato l’accesso e al momento siamo a conoscenza di una sola segnalazione di questo errore. Abbiamo stabilito che il problema è stato causato da un’interazione involontaria tra l’app Microsoft Teams e il sistema operativo Android sottostante. Microsoft sta lavorando a stretto contatto con Google per risolvere questa interazione indesiderata.
Google ha affermato che Microsoft rilascerà un aggiornamento dell’app il prima possibile e che gli utenti dovrebbero controllare il Play Store per gli aggiornamenti. La società ha anche affermato che la patch a livello di sistema operativo verrà rilasciata un mese dopo, all’inizio di gennaio (ovvero oggi). Al momento, Google non ha fornito ulteriori commenti in merito.
Perché le app possono interrompere il servizio 911
Ritardo. Microsoft Teams ha rotto il servizio 911? Le app Android casuali possono interrompere i servizi di emergenza? Come? Perché le app di terze parti dovrebbero essere a migliaia di metri di distanza da una funzionalità così importante? Ci sono altre app che interrompono il servizio 911 o solo Microsoft Teams? Anche se Teams è stato risolto, andava bene lasciare che gli utenti Android restassero con questo bug a livello di sistema operativo per un mese, soprattutto quando non sappiamo se altre app lo stanno facendo? Android è Android, quindi molti telefoni non verranno mai riparati comunque. Come possono gli utenti sapere che i servizi di emergenza saranno attivi? Solo che Google non ha dato alcuna risposta se non quella di aspettare un mese per una correzione.
Per fortuna, alcune persone molto intelligenti nella comunità Android sono state in grado di fornire risposte che Google non ha condiviso. Mishaal Rahman, Senior Technical Editor di Esper, ha scritto un post incredibile su Medium descrivendo in dettaglio come funziona l’errore e perché si verifica. Le app Android con una funzione di chiamata telefonica possono registrare un “PhoneAccount” con il sistema, indicando che hanno la possibilità di effettuare chiamate. Esistono diverse app che possono essere installate con PhoneAccount, inclusa una chiamata “CAPABILITY_PLACE_EMERGENCY_CALLS”. Quando arriva il momento di chiamare il 911, Android ordina l’elenco degli account telefonici registrati e ne seleziona uno. Fin qui tutto bene.
Uno dei numerosi bug identificati nel post di Rahman è che Microsoft Teams registrerà un PhoneAccount aggiuntivo sul sistema ogni volta che si avvia Teams, a condizione che tu non abbia effettuato l’accesso. Tieni presente che non è raro installare Microsoft Teams e quindi non utilizzarlo mai: a lamentela comune sull’app Android Teams è che spesso disconnette automaticamente gli utenti.
Se sei disconnesso, l’esecuzione di Microsoft Teams 10 volte riempirà il tuo telefono con 10 PhoneAccount duplicati da Teams. I team non dovrebbero farlo e l’aggiornamento Microsoft ha impedito ai team di farlo, ma molti PhoneAccount duplicati non dovrebbero essere sufficienti per mettere in ginocchio il sistema telefonico Android.
Bug successivo: quando si sceglie un PhoneAccount per una chiamata di emergenza, Android esegue un complesso processo di ordinamento per determinare quale account utilizzare. Il passaggio finale in questo processo di ordinamento, il risolutore di conflitti, è l’ordinamento hashcode. Il confronto hashcode sottrae semplicemente un hashcode da un altro.
Ma proprio come quello stupido bug di Microsoft Exchange 2000 che si è verificato l’altro giorno, questo potrebbe portare a un overflow o un underflow di interi e ora il sottosistema del telefono andrà in crash. Il codice di Google è difettoso, ma poiché questo è l’ultimo modo per risolvere i problemi di ordinamento dopo aver provato cose più ovvie come il nome del pacchetto, dovrebbe essere chiamato solo su un’istanza molto specifica dell’applicazione che sta generando PhoneAccount duplicati. Quindi grazie Microsoft!
La correzione di Google per questo errore è qui , intitolata “Correggi l’overflow/underflow dei numeri interi causato dall’ordinamento di un account telefonico duplicato durante una chiamata di emergenza. “ Invece di sottrarre un hashcode da un altro e potenzialmente lavorare con un numero molto grande o molto piccolo che manda in crash il sistema, Google ora gestisce i due numeri attraverso la funzione Java “Integer.compare”. Questo restituisce solo -1, 0 o 1, indicando un risultato minore, identico o maggiore del confronto.
Se all’inizio sei come me e ti chiedi perché Android ordina gli account telefonici e non utilizza solo l’account predefinito sulla SIM, farò un’ipotesi folle e dirò che è stato un tentativo di far funzionare il servizio 911 a prescindere. Quale. Nel caso in cui l’account principale non funzioni, Android ha bisogno di un elenco di tutti i possibili account telefonici che può provare e vuole farlo automaticamente per connettersi al 911 con ogni mezzo necessario. Questo sistema di valutazione esiste solo per contattare i servizi di emergenza, quindi le normali telefonate funzionano ancora per gli utenti interessati.
Il terzo bug in questo pasticcio è che Microsoft Teams non si registra nemmeno come gestore delle chiamate di emergenza. I team hanno creato un milione di PhoneAccount e non ha utilizzato il flag CAPABILITY_PLACE_EMERGENCY_CALLS, ma ha comunque violato il 911. Il processo di smistamento di Google inizia chiedendo tutti gli account telefonici, mentre il miglior primo passo sarebbe iniziare con tutti gli account telefonici che supportano l’emergenza chiamate.
Google sta prendendo una decisione ancora più drastica prima di questo ultimo bug e rimuovendo ogni account telefonico “autogestito” dalla procedura del servizio di emergenza 911. Gli account telefonici Android “autogestiti” come Microsoft Teams ottengono un accesso più diretto allo stack di telefonia Android e possono utilizzare le proprie funzioni. Il sistema di chiamata di emergenza Android ora prenderà in considerazione solo i fornitori di telefonia più semplici che si connettono all’app del telefono predefinita, come il tuo account operatore.
Tutte queste altre applicazioni VoIP possono probabilmente essere ancora utilizzate per chiamare autonomamente il 911 (in molti paesi la funzione 911 è richiesta per legge). Ma se apri il dialer predefinito e premi 911, Android sceglierà solo dagli account telefonici standard gestiti dal sistema.
Chi viene riparato e come è possibile verificare la presenza di un errore del servizio 911
Rahman afferma che il bug di Google per questo è CVE-2021-39659, che il bollettino mensile sulla sicurezza classifica come una vulnerabilità denial-of-service di gravità elevata con patch per dispositivi che eseguono Android 10, 11 e 12. Nella base di codice Android, Google è In effetti, questa correzione esegue il backport completo su Android 8.0, che tecnicamente non è più supportato. Questo è per lo più puramente teorico poiché zero fornitori in realtà non inviano aggiornamenti di sicurezza a tali dispositivi meno recenti. Ma il codice è lì se qualcuno ne ha bisogno.
Lo stack di telefonia Android non è (ancora?) un modulo Project Mainline facilmente aggiornabile, quindi l’unico modo per ottenere una correzione è con l’aggiornamento mensile di sicurezza Android di gennaio 2022. Samsung dovrebbe aggiornare tutti i telefoni in questo elenco a partire da questa settimana, mentre Google rilascia correzioni per Pixel 3a, 4, 4a, 5 e 5a. Aggiornamento: è previsto anche un aggiornamento delle chiamate di emergenza per Pixel 3 fuori servizio.
L’aggiornamento non è ancora in arrivo per Pixel 6. L’ultima ammiraglia di Google è attualmente in una crisi di aggiornamento. L’aggiornamento di dicembre 2021 è stato annullato a causa di problemi di connettività non mobile (telefonate non funzionanti). Mentre Google fatica a sistemare le cose, il prossimo aggiornamento di Pixel 6 con questa correzione 911 dovrebbe essere “alla fine di gennaio”. Nel frattempo, va bene essere sulla patch di novembre. Entrambi i grafici di Google: “inizio gennaio” e “fine gennaio” sembrano incredibilmente lenti a causa di un bug che può portare alla morte letterale degli utenti.
Farò un’altra ipotesi folle e dirò che Pixel 6 è un telefono strano perché è un SoC e un modem completamente diversi (entrambi della divisione Exynos di Samsung e tutti gli altri Pixel usano Qualcomm). La creazione di una stagione dello shopping natalizio non ha dato a Google alcuno spazio di manovra in caso di ritardi nel lancio. Ciò non lo rende meno deludente per un telefono con molti vantaggi per la prima volta, ma si spera che sia un problema temporaneo.
Sono sorpreso che questo sia solo un bug “alto” (invece che “critico”) e che occorrano da uno a due mesi per la distribuzione. Ritardare un’ambulanza può essere fatale, quindi sarebbe bello se tutto arrivasse più velocemente, non nel modo in cui Google decide di risolvere questo problema.
Finora, abbiamo solo sentito parlare di Microsoft Teams che ha attivato questo errore di account telefonici duplicati, ma non è noto se altre app stiano commettendo un errore simile. Se vedi un’app in questo elenco che genera molti account duplicati, è probabile che ti impedisca di connetterti ai servizi di emergenza. Consiglio di disinstallare l’app, contattare lo sviluppatore e far sapere agli altri su Twitter o ovunque.
Lascia un commento