Google retter en mareridt Android-fejl, der forhindrede brugeren i at ringe til nødtjenester

Google retter en mareridt Android-fejl, der forhindrede brugeren i at ringe til nødtjenester

Januar Android Security Patch er nu blevet frigivet, og den løser en af ​​de mest irriterende Android-fejl, der kan opstå på et stykke tid: visse apps kan forhindre dig i at kontakte 911 eller andre nødopkaldsnumre rundt om i verden.

I begyndelsen af ​​december dukkede en rystende historie op på en GooglePixel-subreddit fra en bruger, der fik sin Pixel 3 nedbrudt, da han havde mest brug for det: mens han ringede til 911 til sin bedstemor, der “så ud som om hun havde et slagtilfælde.” Hele telefonundersystemet styrtede ned umiddelbart efter at have ringet til nødtjenesterne, og brugeren KitchenPicture5849 sagde, at han ikke kunne få et opkald til at forbinde eller lægge på for at gentage opkaldet. Heldigvis var en nærliggende fastnettelefon tilgængelig, efter at deres Android-telefon gik galt, og nødtjenester blev kontaktet.

Efter krisen sluttede, ringede brugeren igen til alarmnummeret fra deres smartphone, og Android gik ned igen, hvilket indikerer, at dette ikke var en engangsfejl. Ved at tjekke deres telefonregning afslørede det også, at KitchenPicture5849 faktisk aldrig havde forbindelse til 911-tjenesten. De siger, at de også modtog flere andre private beskeder fra brugere, der sagde, at de oplevede den samme fejl.

Google kontaktede brugeren og svarede offentligt på beskeden den 8. december:

Baseret på vores forskning var vi i stand til at reproducere problemet under et begrænset sæt omstændigheder. Vi mener, at problemet kun er til stede på et lille antal enheder med Microsoft Teams-appen installeret, når brugeren ikke er logget ind, og vi er i øjeblikket opmærksomme på kun én brugerrapport om denne fejl. Vi fandt ud af, at problemet var forårsaget af en utilsigtet interaktion mellem Microsoft Teams-appen og det underliggende Android-operativsystem. Microsoft arbejder tæt sammen med Google for at løse denne utilsigtede interaktion.

Google sagde, at Microsoft vil frigive en opdatering til appen så hurtigt som muligt, og at brugere bør tjekke Play Butik for opdateringer. Virksomheden nævnte også, at patchen på OS-niveau vil blive frigivet en måned senere, i begyndelsen af ​​januar (det er i dag). På det tidspunkt gav Google ingen yderligere kommentarer til sagen.

Hvorfor apps kan bryde 911-tjenesten

Forsinke. Microsoft Teams brød 911-tjenesten? Kan tilfældige Android-apps forstyrre nødtjenester? Hvordan? Hvorfor skulle tredjepartsapps være tusindvis af fod væk fra en så vigtig funktion? Er der andre apps, der forstyrrer 911-tjenesten, eller bare Microsoft Teams? Mens Teams blev rettet, var det okay at lade Android-brugere hænge rundt med denne fejl på OS-niveau i en måned, især når vi ikke ved, om andre apps gør det? Android er Android, så mange telefoner bliver aldrig rettet alligevel. Hvordan kan brugerne vide, at nødtjenester vil være i gang? Bortset fra at Google ikke gav andre svar end at vente en måned på en rettelse.

Heldigvis var nogle meget kloge mennesker i Android-fællesskabet i stand til at give svar, som Google ikke delte. Mishaal Rahman, Senior Technical Editor hos Esper, skrev et utroligt indlæg på Medium, der beskriver, hvordan fejlen virker, og hvorfor den opstår. Android-apps med en telefonopkaldsfunktion kan registrere en “telefonkonto” med systemet, hvilket indikerer, at de har mulighed for at foretage opkald. Der er flere apps, der kan installeres med PhoneAccount, inklusive en kaldet “CAPABILITY_PLACE_EMERGENCY_CALLS”. Når det er tid til at ringe 911, sorterer Android gennem listen over registrerede telefonkonti og vælger en. Så langt så godt.

En af de mange fejl, der er identificeret i Rahmans indlæg, er, at Microsoft Teams vil registrere en ekstra telefonkonto på systemet, hver gang Teams starter, forudsat at du ikke er logget ind. Bemærk, at det ikke er ualmindeligt at installere Microsoft Teams og derefter aldrig bruge det – en almindelig klage over Android Teams-appen er, at den ofte automatisk logger brugere ud.

Hvis du er logget ud, vil kørsel af Microsoft Teams 10 gange fylde din telefon med 10 duplikerede telefonkonti fra Teams. Teams burde ikke gøre dette, og Microsoft-opdateringen forhindrede Teams i at gøre det, men masser af duplikerede telefonkonti burde heller ikke være nok til at bringe Android-telefonsystemet i knæ.

Næste fejl: Når du vælger en telefonkonto til et nødopkald, gennemgår Android en kompleks sorteringsproces for at bestemme, hvilken konto der skal bruges. Det sidste trin i denne sorteringsproces, konfliktløseren, er hashkodesortering. Hashcode-sammenligning trækker simpelthen en hashkode fra en anden.

Men ligesom den dumme Microsoft Exchange 2000-fejl, der skete forleden, kan dette føre til et heltalsoverløb eller -underløb, og nu vil telefonundersystemet gå ned. Googles kode er buggy, men da dette er den sidste måde at løse sorteringsproblemer på efter at have prøvet mere indlysende ting som pakkenavnet, bør den kun kaldes på en meget specifik forekomst af applikationen, der genererer duplikerede telefonkonti. Så tak Microsoft!

Googles rettelse af denne fejl er her , med titlen “Ret heltalsoverløb/underløb forårsaget af sortering af en dublet telefonkonto under et nødopkald. I stedet for at trække én hashkode fra en anden og potentielt arbejde med et virkelig stort eller meget lille tal, der bryder systemet ned, håndterer Google nu de to tal gennem Java-funktionen “Integer.compare”. Dette returnerer kun -1, 0 eller 1, hvilket indikerer et mindre, identisk eller større resultat af sammenligningen.

Hvis du er ligesom mig i starten og undrer dig over, hvorfor Android overhovedet sorterer telefonkonti og ikke kun bruger standardkontoen på SIM-kortet, vil jeg lave et vanvittigt gæt og sige, at det var et forsøg på at få 911-tjenesten til at fungere uanset. Hvilken. Bare hvis hovedkontoen ikke virker, har Android brug for en liste over alle de mulige telefonkonti, den kan prøve og vil gøre det automatisk for at oprette forbindelse til 911 på alle nødvendige måder. Dette triage-system eksisterer kun for at kontakte nødtjenester, så almindelige telefonopkald fungerer stadig for berørte brugere.

Den tredje fejl i dette rod er, at Microsoft Teams ikke engang registrerer sig selv som en nødopkaldsbehandler. Holdene oprettede en million telefonkonti, og det brugte ikke flaget CAPABILITY_PLACE_EMERGENCY_CALLS, men det brød alligevel 911. Googles sorteringsproces starter med at bede om alle telefonkonti, hvorimod det bedste første skridt ville være at starte med alle telefonkonti, der understøtter nødsituationer opkald.

Google tager en endnu mere drastisk beslutning forud for denne seneste fejl og fjerner alle “selv-administrerede” telefonkonti fra 911-nødtjenesteproceduren. “Selvadministrerede” Android-telefonkonti som Microsoft Teams får mere direkte adgang til Android-telefoni-stakken og kan bruge deres egne funktioner. Android-nødopkaldssystemet vil nu kun overveje enklere telefoniudbydere, der opretter forbindelse til standardtelefonappen, såsom din mobilkonto.

Alle disse andre VoIP-applikationer kan sandsynligvis stadig bruges til selv at ringe til 911 (i mange lande er 911- funktionen påkrævet ved lov). Men hvis du åbner standardopkaldsknappen og trykker på 911, vil Android kun vælge mellem standard, systemadministrerede telefonkonti.

Hvem bliver rettet, og hvordan du kan tjekke for en 911-servicefejl

Rahman siger, at Googles fejl til dette er CVE-2021-39659, som den månedlige sikkerhedsbulletin klassificerer som en meget alvorlig lammelsesangrebssårbarhed med patches til enheder, der kører Android 10, 11 og 12. I Android-kodebasen er Google Faktisk er denne rettelse fuldt tilbageporteret til Android 8.0, som teknisk set ikke længere understøttes. Dette er for det meste rent teoretisk, da nul leverandører faktisk ikke pusher sikkerhedsopdateringer til sådanne ældre enheder. Men koden er der, hvis nogen har brug for den.

Android-telefonistakken er (endnu?) ikke et Project Mainline-modul, der nemt kan opgraderes, så den eneste måde at få en løsning på er med den månedlige Android-sikkerhedsopdatering fra januar 2022. Samsung bør opdatere alle telefoner på denne liste fra denne uge, mens Google frigiver rettelser til Pixel 3a, 4, 4a, 5 og 5a. Opdatering: En nødopkaldsopdatering forventes også for den ude af drift Pixel 3.

Opdateringen kommer ikke til Pixel 6 endnu. Googles nyeste flagskib er i øjeblikket i en opdateringskrise. December 2021-opdateringen blev annulleret på grund af problemer med ikke-mobilforbindelse (telefonopkald virker ikke). Da Google kæmper for at rette op på tingene, skulle den næste Pixel 6-opdatering med denne 911 rettelse være “i slutningen af ​​januar.” I mellemtiden er det okay at være på november-patchen. Begge Google-diagrammer: “begyndelsen af ​​januar” og “slutningen af ​​januar” virker utrolig langsomme på grund af en fejl, der kan føre til brugernes bogstavelige død.

Jeg vil lave endnu et skørt gæt og sige, at Pixel 6 er en underlig telefon, fordi det er et helt andet SoC og modem (begge fra Samsungs Exynos-afdeling, og alle andre Pixels bruger Qualcomm). Oprettelse af en juleindkøbssæson har ikke givet Google plads til at manøvrere i tilfælde af lanceringsforsinkelser. Det gør det ikke mindre skuffende for en telefon med mange førstegangsfordele, men forhåbentlig er det et midlertidigt problem.

Jeg er overrasket over, at dette bare er en “høj” (i stedet for “kritisk”) fejl, og at det tager en til to måneder at implementere. At forsinke en ambulance kan være fatalt, så det ville være rart, hvis det hele ankom hurtigere, ikke den måde, Google beslutter at løse dette problem på.

Indtil videre har vi kun hørt om Microsoft Teams, der udløser denne duplikatfejl med telefonkonti, men det vides ikke, om andre apps laver en lignende fejl. Hvis du ser en app på denne liste, der genererer mange duplikerede konti, er chancerne for, at den forhindrer dig i at oprette forbindelse til nødtjenester. Jeg anbefaler at afinstallere appen, kontakte udvikleren og lade andre vide det på Twitter eller hvor som helst.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *