Google korjaa painajaisen Android-virheen, joka esti käyttäjää soittamasta hätäpalveluihin
Tammikuun Android-tietoturvakorjaus on nyt julkaistu, ja se korjaa yhden ärsyttävimmistä Android-virheistä, joita voi ilmetä hetkessä: tietyt sovellukset voivat estää sinua ottamasta yhteyttä hätänumeroon tai muihin hätänumeroihin ympäri maailmaa.
Joulukuun alussa GooglePixelin subredditissä nousi tuskallinen tarina käyttäjältä, jonka Pixel 3 kaatui silloin, kun hän sitä eniten tarvitsi: kun hän soitti hätänumeroon isoäidilleen, joka ”näytti siltä, että hänellä oli aivohalvaus”. Koko puhelinalijärjestelmä kaatui. heti hätäkeskukseen soittamisen jälkeen, ja käyttäjä KitchenPicture5849 sanoi, että hän ei saanut puhelua yhteyden muodostamiseksi tai puhelun katkaisemiseksi toistaakseen puhelua. Onneksi lähistöllä oleva lankapuhelin oli saatavilla, kun heidän Android-puhelimensa meni pieleen ja hätäpalveluihin otettiin yhteyttä.
Kriisin päätyttyä käyttäjä soitti hätänumeroon uudelleen älypuhelimellasi ja Android kaatui uudelleen, mikä osoitti, että kyseessä ei ollut kertaluonteinen virhe. Heidän puhelinlaskunsa tarkistaminen paljasti myös, että KitchenPicture5849 ei koskaan ollut yhteydessä 911-palveluun. He sanovat saaneensa myös useita muita yksityisviestejä käyttäjiltä, jotka kertoivat kokeneensa saman virheen.
Google otti käyttäjään yhteyttä ja vastasi viestiin julkisesti 8. joulukuuta:
Tutkimuksemme perusteella pystyimme toistamaan ongelman rajoitetuissa olosuhteissa. Uskomme, että ongelma esiintyy vain harvoissa laitteissa, joihin on asennettu Microsoft Teams -sovellus, kun käyttäjä ei ole kirjautunut sisään, ja tällä hetkellä olemme tietoisia vain yhdestä käyttäjäraportista tästä virheestä. Totesimme, että ongelma johtui tahattomasta vuorovaikutuksesta Microsoft Teams -sovelluksen ja taustalla olevan Android-käyttöjärjestelmän välillä. Microsoft tekee tiivistä yhteistyötä Googlen kanssa ratkaistakseen tämän tahattoman vuorovaikutuksen.
Google sanoi, että Microsoft julkaisee sovelluksen päivityksen mahdollisimman pian ja että käyttäjien tulee tarkistaa päivitykset Play Kaupasta. Yhtiö mainitsi myös, että käyttöjärjestelmätason korjaustiedosto julkaistaan kuukautta myöhemmin, tammikuun alussa (eli tänään). Google ei tuolloin kommentoinut asiaa enempää.
Miksi sovellukset voivat rikkoa 911-palvelun
Viive. Microsoft Teams rikkoi 911-palvelun? Voivatko satunnaiset Android-sovellukset häiritä hätäpalveluja? Miten? Miksi kolmannen osapuolen sovellukset olisivat tuhansien jalkojen päässä näin tärkeästä ominaisuudesta? Häiritsevätkö muut sovellukset 911-palvelua vai vain Microsoft Teams? Vaikka Teams korjasi, oliko oikein antaa Android-käyttäjien olla tämän käyttöjärjestelmätason virheen kanssa kuukauden ajan, varsinkin kun emme tiedä, tekevätkö muut sovellukset sitä? Android on Android, joten monia puhelimia ei koskaan korjata. Mistä käyttäjät voivat tietää, että hätäpalvelut ovat käynnissä? Paitsi että Google ei antanut muuta vastausta kuin odottaa kuukauden korjausta.
Onneksi jotkut erittäin älykkäät ihmiset Android-yhteisössä pystyivät antamaan vastauksia, joita Google ei jakanut. Mishaal Rahman, Esperin vanhempi tekninen toimittaja, kirjoitti Mediumiin uskomattoman postauksen , jossa kerrottiin kuinka virhe toimii ja miksi se tapahtuu. Android-sovellukset, joissa on puhelutoiminto, voivat rekisteröidä ”PhoneAccount”-tilin järjestelmään, mikä osoittaa, että niillä on mahdollisuus soittaa puheluita. On olemassa useita sovelluksia, jotka voidaan asentaa PhoneAccountilla, mukaan lukien yksi nimeltä ”CAPABILITY_PLACE_EMERGENCY_CALLS”. Kun on aika soittaa hätänumeroon, Android lajittelee rekisteröityjen puhelintilien luettelon ja valitsee niistä yhden. Toistaiseksi hyvin.
Yksi Rahmanin viestissä tunnistetuista virheistä on se, että Microsoft Teams rekisteröi järjestelmään ylimääräisen puhelintilin aina, kun Teams käynnistyy, mikäli et ole kirjautunut sisään. Huomaa, että ei ole harvinaista asentaa Microsoft Teams ja sen jälkeen sitä ei koskaan käytetä . yleinen valitus Android Teams -sovelluksesta on, että se kirjaa käyttäjät usein automaattisesti ulos.
Jos olet kirjautunut ulos, Microsoft Teamsin käyttäminen 10 kertaa peittää puhelimessasi 10 päällekkäistä Teams-puhelintiliä. Teamsin ei pitäisi tehdä tätä, ja Microsoftin päivitys esti Teamsia tekemästä sitä, mutta useiden päällekkäisten puhelintilien ei pitäisi myöskään riittää saattamaan Android-puhelinjärjestelmän polvilleen.
Seuraava virhe: Kun valitset puhelintilin hätäpuhelua varten, Android käy läpi monimutkaisen lajitteluprosessin määrittääkseen käytettävän tilin. Viimeinen vaihe tässä lajitteluprosessissa, konfliktien ratkaisija, on hashcode-lajittelu. Hashcode-vertailu yksinkertaisesti vähentää yhden hash-koodin toisesta.
Mutta aivan kuten tuo tyhmä Microsoft Exchange 2000 -virhe, joka tapahtui toissapäivänä, tämä voi johtaa kokonaislukujen yli- tai alivuotoon, ja nyt puhelimen alijärjestelmä kaatuu. Googlen koodi on buginen, mutta koska tämä on viimeinen tapa ratkaista lajitteluongelmat ilmeisempien asioiden, kuten paketin nimen, kokeilun jälkeen, sitä tulisi kutsua vain tietyssä sovelluksessa, joka luo päällekkäisiä puhelintilejä. Joten kiitos Microsoft!
Googlen korjaus tähän virheeseen on tässä , jonka otsikko on ”Korjaa kokonaislukujen ylivuoto/alivuoto, joka johtuu päällekkäisen puhelintilin lajittelusta hätänumeropuhelun aikana. Sen sijaan, että vähentäisi yhden hashcode-koodin toisesta ja voisi mahdollisesti työskennellä todella suuren tai erittäin pienen numeron kanssa, joka kaataa järjestelmän, Google käsittelee nyt nämä kaksi numeroa Javan ”Integer.compare”-toiminnon kautta. Tämä palauttaa vain arvon -1, 0 tai 1, mikä tarkoittaa pienempää, identtistä tai suurempaa vertailutulosta.
Jos olet aluksi kuten minä ja ihmettelet, miksi Android ylipäätään lajittelee puhelintilejä eikä vain käytä SIM-kortin oletustiliä, teen hullun arvauksen ja sanon, että se oli yritys saada 911-palvelu toimimaan kaikesta huolimatta. Mikä. Siltä varalta, että päätili ei toimi, Android tarvitsee luettelon kaikista mahdollisista puhelintileistä, joita se voi yrittää, ja haluaa tehdä sen automaattisesti voidakseen muodostaa yhteyden hätänumeroon millä tahansa keinolla. Tämä triagejärjestelmä on olemassa vain hätäpalveluihin ottamista varten, joten säännölliset puhelut toimivat edelleen käyttäjille, joita asia koskee.
Kolmas bugi tässä sotkussa on, että Microsoft Teams ei edes rekisteröi itseään hätäpuhelujen käsittelijäksi. Tiimit loivat miljoona puhelintiliä, eikä se käyttänyt CAPABILITY_PLACE_EMERGENCY_CALLS-lippua, mutta se rikkoi silti hätänumeron. Googlen lajitteluprosessi alkaa kysymällä kaikkia puhelintilejä, kun taas paras ensimmäinen askel olisi aloittaa kaikista hätätilanteita tukevista puhelintileistä. puhelut.
Google tekee vieläkin rajumman päätöksen ennen tätä viimeisintä vikaa ja poistaa jokaisen ”itsehallinnoidun” puhelintilin hätänumeroon. ”Itsehallitut” Android-puhelintilit, kuten Microsoft Teams, saavat suoramman pääsyn Android-puhelinpinoon ja voivat käyttää omia toimintojaan. Android-hätäpuhelujärjestelmä ottaa nyt huomioon vain yksinkertaisemmat puhelinpalveluntarjoajat, jotka muodostavat yhteyden oletuspuhelinsovellukseen, kuten operaattoritiliisi.
Kaikilla näillä muilla VoIP-sovelluksilla voidaan todennäköisesti edelleen soittaa itse hätänumeroon (monissa maissa 911- ominaisuus on lain edellyttämä). Mutta jos avaat oletusvalitsimen ja painat 911, Android valitsee vain tavallisista järjestelmän hallinnoimista puhelintileistä.
Kuka korjaa ja kuinka voit tarkistaa 911-palveluvirheen
Rahman sanoo, että Googlen virhe tähän on CVE-2021-39659, joka kuukausittaisessa tietoturvatiedotteessa luokitellaan vakavaksi palvelunestohaavoittuvuudeksi, joka sisältää korjauksia laitteille, joissa on Android 10, 11 ja 12. Android-koodikannassa Google on Itse asiassa tämä korjaus on täysin backporting Android 8.0:lle, jota ei teknisesti enää tueta. Tämä on enimmäkseen puhtaasti teoreettista, koska nolla toimittajaa ei itse asiassa työnnä tietoturvapäivityksiä tällaisiin vanhoihin laitteisiin. Mutta koodi löytyy jos joku sitä tarvitsee.
Android-puhelinpino ei ole (vielä?) helposti päivitettävä Project Mainline -moduuli, joten ainoa tapa saada korjaus on tammikuun 2022 Android Security Monthly Update -päivityksellä. Samsungin pitäisi päivittää kaikki tämän luettelon puhelimet tästä viikosta alkaen, kun taas Google julkaisee korjauksia Pixel 3a:lle, 4:lle, 4a:lle, 5:lle ja 5a:lle. Päivitys: Hätäpuhelupäivitystä odotetaan myös käytöstä poistuneelle Pixel 3:lle.
Päivitystä ei ole vielä tulossa Pixel 6:lle. Googlen uusin lippulaiva on tällä hetkellä päivityskriisissä. Joulukuun 2021 päivitys peruutettiin ei-mobiiliyhteysongelmien vuoksi (puhelut eivät toimi). Kun Google kamppailee korjatakseen asioita, seuraava Pixel 6 -päivitys tällä 911-korjauksella pitäisi olla ”tammikuun lopussa”. Sillä välin on hyvä olla marraskuun korjauspäivityksessä. Molemmat Google-kaaviot: ”tammikuun alku” ja ”tammikuun loppu” vaikuttavat uskomattoman hitailta virheen vuoksi, joka voi johtaa käyttäjien kirjaimelliseen kuolemaan.
Teen toisen hullun arvauksen ja sanon, että Pixel 6 on outo puhelin, koska se on täysin erilainen SoC ja modeemi (molemmat Samsungin Exynos-divisioonasta ja kaikki muut pikselit käyttävät Qualcommia). Joulun ostoskauden luominen ei ole antanut Googlelle liikkumavaraa julkaisun viivästysten varalta. Se ei tee siitä yhtään vähemmän pettymystä puhelimelle, jolla on paljon ensikertaetua, mutta toivottavasti se on väliaikainen ongelma.
Olen yllättynyt, että tämä on vain ”korkea” (”kriittisen”) bugi ja että sen käyttöönotto kestää yhdestä kahteen kuukautta. Ambulanssin viivyttäminen voi olla kohtalokasta, joten olisi mukavaa, jos se kaikki saapuisi nopeammin, ei tapa, jolla Google päättää ratkaista tämän ongelman.
Toistaiseksi olemme kuulleet vain Microsoft Teamsin käynnistäneen tämän päällekkäisten puhelintilien virheen, mutta ei tiedetä, tekevätkö muut sovellukset samanlaisen virheen. Jos näet luettelossa olevan sovelluksen luovan useita päällekkäisiä tilejä, se todennäköisesti estää sinua muodostamasta yhteyttä hätäpalveluihin. Suosittelen poistamaan sovelluksen, ottamaan yhteyttä kehittäjään ja kertomaan asiasta muille Twitterissä tai missä tahansa.
Vastaa