Google fixar mardrömsbug för Android som hindrade användare från att ringa räddningstjänst

Google fixar mardrömsbug för Android som hindrade användare från att ringa räddningstjänst

Januari Android Security Patch har nu släppts, och den fixar en av de mest irriterande Android-buggarna som kan uppstå på ett tag: vissa appar kan hindra dig från att kontakta 911 eller andra nödnummer runt om i världen.

I början av december dök en upprörande historia upp på en GooglePixel-subreddit från en användare som fick sin Pixel 3 krasch när han behövde den som mest: när han ringde nödnumret 911 för sin mormor, som ”såg ut som om hon hade en stroke.” Hela telefonundersystemet kraschade direkt efter att ha ringt räddningstjänsten, och användaren KitchenPicture5849 sa att han inte kunde få ett samtal för att ansluta eller lägga på för att upprepa samtalet. Lyckligtvis var en närliggande fast telefon tillgänglig efter att deras Android-telefon gick i stå och räddningstjänst kontaktades.

Efter att krisen upphörde ringde användaren ytterligare ett samtal till nödnumret från sin smartphone och Android kraschade igen, vilket tydde på att detta inte var ett engångsfel. Att kontrollera deras telefonräkning avslöjade också att KitchenPicture5849 faktiskt aldrig anslutit till 911-tjänsten. De säger att de också fått flera andra privata meddelanden från användare som sa att de upplevde samma fel.

Google kontaktade användaren och svarade offentligt på meddelandet den 8 december:

Baserat på vår forskning kunde vi reproducera problemet under en begränsad uppsättning omständigheter. Vi tror att problemet endast finns på ett litet antal enheter med Microsoft Teams-appen installerad när användaren inte är inloggad, och vi är för närvarande medvetna om att endast en användarrapport har inträffat om detta fel. Vi fastställde att problemet orsakades av en oavsiktlig interaktion mellan Microsoft Teams-appen och det underliggande Android-operativsystemet. Microsoft arbetar nära med Google för att lösa denna oavsiktliga interaktion.

Google sa att Microsoft kommer att släppa en uppdatering till appen så snart som möjligt, och att användare bör kolla Play Butik för uppdateringar. Företaget nämnde också att patchen på OS-nivå kommer att släppas en månad senare, i början av januari (det är idag). Vid den tidpunkten lämnade Google inga ytterligare kommentarer i ärendet.

Varför appar kan bryta 911-tjänsten

Dröjsmål. Microsoft Teams bröt 911-tjänsten? Kan slumpmässiga Android-appar störa räddningstjänsten? Hur? Varför skulle tredjepartsappar vara tusentals meter bort från en så viktig funktion? Är det några andra appar som stör 911-tjänsten, eller bara Microsoft Teams? Medan Teams fixades, var det okej att låta Android-användare hänga med denna OS-nivå bugg i en månad, särskilt när vi inte vet om andra appar gör det? Android är Android, så många telefoner kommer aldrig att fixas ändå. Hur kan användare veta att räddningstjänst kommer att vara igång? Förutom att Google inte gav några svar annat än att vänta en månad på en fix.

Tack och lov kunde några mycket smarta människor i Android-gemenskapen ge svar som Google inte delade. Mishaal Rahman, Senior Technical Editor på Esper, skrev ett otroligt inlägg på Medium som beskriver hur felet fungerar och varför det uppstår. Android-appar med en telefonsamtalsfunktion kan registrera ett ”telefonkonto” med systemet, vilket indikerar att de har möjlighet att ringa. Det finns flera appar som kan installeras med PhoneAccount, inklusive en som heter ”CAPABILITY_PLACE_EMERGENCY_CALLS”. När det är dags att ringa 911, sorterar Android igenom listan över registrerade telefonkonton och väljer ett. Än så länge är allt bra.

En av flera buggar som identifieras i Rahmans inlägg är att Microsoft Teams kommer att registrera ytterligare ett telefonkonto på systemet varje gång Teams startar, förutsatt att du inte är inloggad. Observera att det inte är ovanligt att installera Microsoft Teams och sedan aldrig använda det – en Vanligt klagomål om Android Teams-appen är att den ofta automatiskt loggar ut användare.

Om du är utloggad kommer att köra Microsoft Teams 10 gånger att fylla din telefon med 10 dubbletter av telefonkonton från Teams. Teams borde inte göra det här, och Microsoft-uppdateringen stoppade Teams från att göra det, men massor av dubbletter av telefonkonton borde inte heller räcka för att få Android-telefonsystemet på knä.

Nästa bugg: När du väljer ett telefonkonto för ett nödsamtal går Android igenom en komplex sorteringsprocess för att avgöra vilket konto som ska användas. Det sista steget i denna sorteringsprocess, konfliktlösaren, är hashkodssortering. Hashcode-jämförelse subtraherar helt enkelt en hashkod från en annan.

Men precis som det där dumma Microsoft Exchange 2000-felet som hände häromdagen, kan detta leda till ett heltalsspill eller underflöde, och nu kommer telefonundersystemet att krascha. Googles kod är buggig, men eftersom detta är det sista sättet att lösa sorteringsproblem efter att ha provat mer uppenbara saker som paketnamnet, bör den bara anropas på en mycket specifik instans av applikationen som genererar dubbletter av telefonkonton. Så tack Microsoft!

Googles korrigering för det här felet är här , med titeln ”Åtgärda heltalsspill/underflöde som orsakas av sortering av ett dubblett telefonkonto under ett nödnummersamtal. Istället för att subtrahera en hashkod från en annan och potentiellt arbeta med ett riktigt stort eller mycket litet tal som kraschar systemet, hanterar Google nu de två siffrorna genom Java-funktionen ”Integer.compare”. Detta returnerar endast -1, 0 eller 1, vilket indikerar ett mindre, identiskt eller större resultat av jämförelsen.

Om du är som jag till en början och undrar varför Android sorterar telefonkonton överhuvudtaget och inte bara använder standardkontot på SIM-kortet, ska jag göra en galen gissning och säga att det var ett försök att få 911-tjänsten att fungera oavsett. Som. Bara om huvudkontot inte fungerar behöver Android en lista över alla möjliga telefonkonton som den kan prova och vill göra det automatiskt för att kunna ansluta till 911 på alla sätt som behövs. Detta triagesystem finns bara för att kontakta räddningstjänst, så vanliga telefonsamtal fungerar fortfarande för berörda användare.

Den tredje buggen i den här röran är att Microsoft Teams inte ens registrerar sig som en nödsamtalshanterare. Teamen skapade en miljon telefonkonton och den använde inte flaggan CAPABILITY_PLACE_EMERGENCY_CALLS, men den slog ändå 911. Googles sorteringsprocess börjar med att fråga efter alla telefonkonton, medan det bästa första steget skulle vara att börja med alla telefonkonton som stöder nödsituationer samtal.

Google tar ett ännu mer drastiskt beslut inför det här senaste felet och tar bort alla ”självhanterade” telefonkonton från 911-nödtjänstproceduren. ”Självhanterade” Android-telefonkonton som Microsoft Teams får mer direkt tillgång till Android-telefonistacken och kan använda sina egna funktioner. Android-nödsamtalssystemet kommer nu bara att överväga enklare telefonileverantörer som ansluter till standardtelefonappen, till exempel ditt operatörskonto.

Alla dessa andra VoIP-applikationer kan förmodligen fortfarande användas för att självringa 911 (i många länder krävs 911 -funktionen enligt lag). Men om du öppnar standarduppringaren och trycker på 911, kommer Android bara att välja från standard, systemhanterade telefonkonton.

Vem blir fixad och hur du kan kontrollera om det finns ett 911-tjänstfel

Rahman säger att Googles bugg för detta är CVE-2021-39659, som den månatliga säkerhetsbulletinen klassificerar som en allvarlig överbelastningssårbarhet med patchar för enheter som kör Android 10, 11 och 12. I Android-kodbasen är Google Faktum är att den här korrigeringen är helt tillbakaportad till Android 8.0, som tekniskt sett inte längre stöds. Detta är mestadels rent teoretiskt eftersom noll leverantörer faktiskt inte pushar säkerhetsuppdateringar till sådana äldre enheter. Men koden finns där om någon behöver den.

Android-telefonistacken är (ännu?) inte en lätt uppgraderbar Project Mainline-modul, så det enda sättet att fixa är med den månatliga Android-säkerhetsuppdateringen från januari 2022. Samsung bör uppdatera alla telefoner på den här listan från och med den här veckan, medan Google släpper korrigeringar för Pixel 3a, 4, 4a, 5 och 5a. Uppdatering: En uppdatering av nödsamtal förväntas också för den uttjänta Pixel 3.

Uppdateringen kommer inte för Pixel 6 än. Googles senaste flaggskepp befinner sig för närvarande i en uppdateringskris. Uppdateringen från december 2021 avbröts på grund av problem med anslutning till icke-mobila enheter (telefonsamtal fungerar inte). Eftersom Google kämpar för att fixa saker bör nästa Pixel 6-uppdatering med denna 911-fix vara ”i slutet av januari.” Under tiden är det okej att vara med i november-patchen. Båda Google-diagrammen: ”början av januari” och ”slutet av januari” verkar otroligt långsamma på grund av en bugg som kan leda till att användare bokstavligen dör.

Jag ska göra en galen gissning till och säga att Pixel 6 är en konstig telefon eftersom det är en helt annan SoC och modem (båda från Samsungs Exynos-avdelning, och alla andra Pixels använder Qualcomm). Att skapa en julhandelssäsong har inte gett Google något utrymme att manövrera i händelse av förseningar i lanseringen. Det gör det inte mindre nedslående för en telefon med många förstagångsfördelar, men förhoppningsvis är det ett tillfälligt problem.

Jag är förvånad över att detta bara är en ”hög” (istället för ”kritisk”) bugg och att det tar en till två månader att distribuera. Att försena en ambulans kan vara ödesdigert, så det skulle vara trevligt om allt kom fram snabbare, inte så som Google bestämmer sig för att lösa det här problemet.

Hittills har vi bara hört talas om Microsoft Teams som utlöser detta dubbletter av telefonkontofel, men det är inte känt om några andra appar gör ett liknande fel. Om du ser en app på den här listan som genererar många dubbletter av konton, är chansen stor att den hindrar dig från att ansluta till nödtjänster. Jag rekommenderar att du avinstallerar appen, kontaktar utvecklaren och låter andra veta det på Twitter eller var som helst.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *