Google brengt update uit voor Android 8.0 en 8.1 om bug die 112 bellen belemmert

Google heeft een update uitgebracht voor Android 8.0 en 8.1 om een bug te fixen waardoor gebruikers niet meer 112 konden bellen als een bepaalde versie van Microsoft Teams geïnstalleerd was. Google updatet Android 8 al jaren niet meer, maar maakt nu een uitzondering.

De bug kwam eind november aan het licht, toen een Pixel 3-gebruiker meldde dat zij op Android 11 het alarmnummer niet kon bellen. In een reactie in december schreef de officiële Pixelaccount op Reddit dat het bewust was van het probleem bij Android 10 en hoger en dat deze veroorzaakt werd door een bepaalde versie van Microsoft Teams. In de meest recente security bulletin schrijft Google dat het de bug, die aangeduid is met CVE-2021-39659, aangepakt heeft. Later bleek dat de bug ook oudere versies raakte.

Als iemand niet ingelogd was met de Microsoft Teams-app, maar deze wel had geïnstalleerd, hield de bug de dienst tegen die het mogelijk maakt om het alarmnummer te bellen. Hierdoor was het in sommige gevallen niet mogelijk om 112, 911 of 999 te bellen. Google spreekt over een denial of service-bug.

Technologieredacteur Mishaal Rahman van The Android Edge-nieuwsbrief en Esper ontdekte dat de update ook naar Androidgebruikers met Android 8.0 en 8.1 komt, omdat de bug ook oudere versies van Android raakt. Google is al een tijdje gestopt met het updaten van Android 8.0 en 8.1, maar maakt voor deze bug een uitzondering, omdat het een kritieke dienst aantast, schrijft Rahman op Twitter. In een blogpost legt hij uit hoe de bug kon ontstaan. Microsoft heeft in december al een update uitgestuurd van de Teams-app die het probleem moet oplossen. Google schrijft dat de bug in versie 1416/1.0.0.2021194504 van de Microsoft Teams-app verholpen is.

Door Stephan Vegelien

Redacteur

05-01-2022 • 12:13

56

Reacties (56)

56
55
32
4
2
19
Wijzig sortering
Werkt Android niet met sandboxing?

Een app zoals Teams mag toch geen invloed hebben op de telefoon app, en dan vooral niet op het bellen van het alarmnummer?
Er is een API om apps te kunnen gebruiken om te bellen. Microsoft Teams registreert zich hierbij, maar zonder de permissie CAPABILITY_PLACE_EMERGENCY_CALLS. De app is daar niet toe in staat.
Echter bleek het OS niet te filteren op deze flag, waardoor Teams wel in het lijstje kwam te staan met apps die het noodnummer kunnen bellen.

Dat is alleen niet het volledige probleem- anders zou iedereen met de app hier last van hebben. Normaliter zou Teams niet uit dit lijstje worden geselecteerd.
Er is alleen een andere bug met het sorteren van de lijst wanneer twee apps dezelfde naam en label hebben. Dan worden ze gesorteerd op een gegenereerde waarde. Deze waarde kon echter zo'n hoog getal zijn dat de computer in de war raakte en de app bovenaan het lijstje zou zetten.

Dit zou in principe niet moeten gebeuren want wie heeft twee apps met dezelfde naam?
Alleen zat er nog een bug in Microsoft Teams - iedere keer als de app gestart werd, terwijl de gebruiker niet is ingelogd werd de app opnieuw geregistreerd. Dus iedere keer als je de app opende nam de kans toe om deze bug te triggeren.
Kijk, dit is nuttige info, die ik graag in het artikel had zien staan. Ik kan je bericht niet modereren, maar anders had ik je +3 gegeven!
Er staat letterlijk een link in het artikel waar dit wordt uitgelegd:
https://medium.com/@mmrah...call-to-fail-6525f9ba5e63
Dat klopt, maar in links verwacht ik verdieping, in de hoofdtekst verwacht ik het noodzakelijke, en Wolfos meldde het noodzakelijke.
Damn, wat een cascade aan bugs en unintended behaviour. Is er nog iemand die test tegenwoordig?
Ik vind vooral de eerste bijzonder wat dat betreft. Dit zou bij een unit test al snel naar voren komen, en zeker iets cruciaals als het noodnummer bellen zou wel echt 100% code coverage moeten hebben.
Oh nee hoor, met de juiste hashcodes krijg je geslaagde unit-test met 100% condition coverage (wat nog meer is dan 100% code coverage) zonder deze bug boven tafel te krijgen.
Daarnaast is 100% code coverage (laat staan condition coverage) een vrijwel onhaalbare kaart op iets complex als een phone OS, wat ongetwijfeld de nodige lastig te triggeren exceptional flows zal hebben (bepaalde hardware failure nodig tijdens precies je test om de 'should never occur' exceptionele situatie die in de code desalniettemin wel afgevangen wordt te triggeren)
De hashcodes zijn inderdaad begrijpelijk, maar een permission die niet geïmplementeerd is is een ander verhaal.

[Reactie gewijzigd door Wolfos op 22 juli 2024 15:32]

Maar die haal je in 99% van de gevallen er niet uit met de unit-test met 100% code coverage.
Tuurlijk wel. Je gooit er een element in zonder CAPABILITY_PLACE_EMERGENCY_CALLS en kijkt of die inderdaad uit het lijstje gefilterd word. Het is zelfs een aparte functie: sortSimPhoneAccountsForEmergency.
Een functienaam zegt daarin helemaal niets. De bij de API horende randvoorwaardes (die ik niet ken) zijn even belangrijk. Als daarin gesteld wordt dat de aan de functie aangeboden lijst alleen emergency-dialling phoneAccounts zijn hoeft de functie ze enkel correct te sorteren op de relevante sorteringscriteria.
En als je dan non-emergency-dialling phoneAccounts voert is het garbage-in-garbage-out principe van toepassing.
En daarnaast ik moet ook de eerste 100% validatie van alle output state van een functie in een unit-test nog tegen komen. (een puur theoretische exercitie, want niet alle state is te controleren en bovendien: wie test er dat die 100% valudatie 100% correct geimplementeerd is).
De typische validatie is dat de nummer 1 correct gepakt is, een betere programmeur checkt ook nog even een paar meer en de nummer laatst om met enige zekerheid in te kunnen schatten dat ook de volgorde wel goed zit.
Als je Teams als vervangede telefoon app (dailer) gebruikt zal hij toch echt die "invloed" moeten hebben.
Uit het artikel:
De bug zorgde ervoor dat wanneer iemand niet ingelogd was met de Microsoft Teams-app, maar deze wel geïnstalleerd had, de app met de dienst die het mogelijk maakt om het alarmnummer te bellen tegenhield.
Je hoeft de app dus niet als dialer te hebben ingesteld.
Er staat alleen dat je niet ingelogt hoeft te zijn, er staat nergens iets over de standaard dialer..
Dat klopt. En als dat er niet staat, dan neem ik aan dat je niet de standaard dialer hebt gewijzigd.
Waarschijnlijk is het bericht een vertaling van een kort berichtje op één of andere nieuwssite. Tweakers had wel iets meer moeite mogen steken in de uitleg hou dit kan. Het melden dat instellen als standaard dialer een randvoorwaarde is, en wie dat doet, de gebruiker of de Teams installer, lijkt me nuttiger dan vermelden dat iemand iets zegt op Twitter...
Punt blijft dat een app die als vervangende dailer gebruikt kan worden op één of andere manier die mogelijkheid moet hebben. Simpel zeggen dat een app als Teams dat niet zou mogen betekent eigenlijk dat je het idee van een vervangende dailer uitsluit, en imo is juist de kracht van Android dat het aanpasbaar is, en je zelf dit soort keuzes kunt maken.
Die potentiële kracht van Android blijkt hier een zwakte...
Goed lezend staat er dat je juist niet-ingelogd moet zijn om de bug te triggeren.
Als ik het goed begrijp heeft dit niet echt met sandboxing te maken, die werkte gewoon.
Ik vermoed eerder dat bij dit probleem MS Teams de standaard "telefoon app" werd gemaakt. Dus als je wou bellen dan gaat dit vanaf dan via MS Teams. Als die app dan niet toelaat om noodnummers te bellen, dan is dat een ernstige tekortkoming in die app denk ik dan. Langs de andere kant kan je wel de vraag stellen waarom noodnummers via Teams überhaupt moeten verlopen en daarvoor alsnog niet Android's telefoon-app te gebruiken. Iemand kan inderdaad makkelijk via een malafide app je zomaar boycotten.
Ik vermoed eerder dat bij dit probleem MS Teams de standaard "telefoon app" werd gemaakt.
Dat staat niet in het artikel, maar dat lijkt wel het probleem te zijn. Wel ernstig dat MS z'n Teams blijkbaar zonder duidelijke melding de standaard bel app kan maken. Ik wil bellen, Teams, WhatsApp en noem ze maar op graag gescheiden houden, vanwege dit soort zaken!
Android maakte, door bugs in het 'bepaal de te gebruiken emergency dialler' algoritme, Teams de standaard emergency dialler, terwijl Teams alleen maar' zo dom was om iedere niet-ingelogde cold start zich nog een keer bij android te melden als 'hey, zet mij onder <nieuwe unieke code> in het lijstje van belxapps waaruit de gebruiker kan selecteren als hij een alternatieve bel app wil instellen (voor niet-emergency calls)'.
De bug zorgde ervoor dat wanneer iemand niet ingelogd was met de Microsoft Teams-app, maar deze wel geïnstalleerd had, de app met de dienst die het mogelijk maakt om het alarmnummer te bellen.
Ik probeer deze zin te snappen maar het lukt niet. Lees ik het gewoon verkeerd of zit er een fout in?
Nee hoor prima zin.

Maar:
- men installeert MS Teams op Android.
- je logt NIET in op de MS Teams app.
- Je stelt de MS Teams app wel in als standaard bel app (dus de dialer).
- Vervolgens kan je dus geen 112 bellen, want je bent niet ingelogd op de MS Teams app.
Zoals jij het nu verwoord klopt het niet. Dit artikel geeft een in dept uitleg over wat er gebeurd is, inclusief code en changesets: https://medium.com/@mmrah...call-to-fail-6525f9ba5e63

Teams registreert zichzelf als mogelijke dialer app, maar nadrukkelijk niet als 112-app.
Omdat Teams als het niet is ingelogd elke keer een nieuwe uuid genereerd komt er een nieuwe registratie als dialer app. Met als mogelijk resultaat heel veel registraties als dialer app.

Waar gaat het nu mis, Android gaat bij het bellen naar een noodnummer de totale lijst met dialer apps af, en zoekt degene met de hoogste prio. hier ontstaat mogelijk een int-underflow door een foutief geïmplementeerde hash comparison, waarna de functie crasht en het bellen niet gebeurd.
Pas hierna gaat Android kijken welke apps überhaupt 112 mogen bellen.

Microsoft heeft in teams er al voor gezorgd dat zij niet meer na elke start een extra registratie maken. Echter Android moet dit nog steeds fixen, omdat niet alleen teams voor dit probleem kan zorgen.

De fix in android:
- hash comparison op de juiste manier, waardoor er geen int under/overflow meer kan plaatsvinden.
- Eerst filteren op 112 apps waardoor in de praktijk altijd de default dialer naar voren komt en de comparison niet eens nodig is.
Ah duidelijk. Bedankt voor de verbetering!
Volgens mij is het niet eens nodig om MS Teams in te stellen als standaard bel app en gaat het als volgt:
- men installeert MS Teams op Android.
- je logt NIET in op de MS Teams app.
- MS Teams maakt bij iedere herstart een nieuwe intern "phoneAccount" aan
- Je belt 112 en intern gaat Android op zoek naar een "phoneAccount" om mee te bellen
- Als er een bepaalde hoeveelheid phoneAccounts zijn dan treed er een interger overflow op in de code
- Android krijgt intern geen "phoneAccount" terug en kan dus niet bellen
Maar waar de bug voor zorgt staat niet in de zin.
Dit was ook hoe ik in eerste instantie dacht dat de bug werkte maar nu ik de blogpost even doorneem lijkt er toch iets anders aan de hand te zijn.

Even kort samengevat registreerde de MS Teams app zichzelf in plaats van een enkele keer heel vaak als "bel app", dit gebeurde alleen als je niet was ingelogd. Op het moment dat je vervolgens 112 probeerde te bellen ontstond er een integer overflow waardoor de juiste app niet gebruikt werd.

De zin die nog hiervoor werd aangehaald snap ik ook niet overigens.
De begrijpend lezen skills zijn goed maar de zin klopt niet. In de laatste zin wordt er gerefereerd naar een "app" en vanaf daar gaat het mis.
De zin klopt niet. Er lijkt een stuk afgevallen. Melding op forum: Google brengt update uit voor Android 8.0 en 8.1 om bug die

[Reactie gewijzigd door BartOtten op 22 juli 2024 15:32]

Er moet waarschijnlijk nog 'conflicteerde' achter.
De bug zorgde ervoor dat wanneer iemand niet ingelogd was met de Microsoft Teams-app, maar deze wel geïnstalleerd had, de app met de dienst die het mogelijk maakt om het alarmnummer te bellen conflicteerde.
Er moet waarschijnlijk nog 'conflicteerde' achter.


[...]
Te complex.
Met een geïnstalleerde, niet ingelogde Teams applicatie is het niet mogelijk om het alarmnummer te bellen.

[Reactie gewijzigd door The Zep Man op 22 juli 2024 15:32]

Met een wel ingelogde ook niet. Teams kan in het geheel niet gebruikt worden voor emergency dialling
Leuk dat Google een patch uitbrengt voor Android 8.0 en 8.1, maar welke OEM gaat die oude devices nog updaten... Ben benieuwd of Google zelf een update uit gaat brengen voor de Nexus 5X en 6P bijvoorbeeld.
Gaat de update via de play services (wat niet bekend is in het artikel), zo ja wordt het meteen doorgepusht.
Google Play system updates zijn pas mogelijk vanaf Android 10:
On devices shipping with Android 10, security patches for selected system components (such as ANGLE, Conscrypt, media frameworks, networking components, and others) may be serviced via Google Play Store, without requiring a complete system update ("Project Mainline").
https://en.wikipedia.org/wiki/Android_10

[Reactie gewijzigd door Tom Paris op 22 juli 2024 15:32]

Dat hele teams komt mij wel beetje de neus uit, ze rollen om de haverklap updates uit en vooral icm bellen met teams is het soort van beta versie die ze gewoon uitproberen op eindgebruikers....
Rolling releases van sotware is het nieuwe normaal en dat zuigt harige ezelsballen.
Met name wanneer je contolpanels die je hooguit 2x per jaar nodig hebt iedere maand verplaatst worden in de menustructuur, features hernoemd worden en default values aangepast worden...
Zo lang je specialist bent in een bepaald pakket en je de hele dag niets anders doet dan je verdiepen in dát pakket, dan werkt het fantastisch. Maar de praktijk is dat je iedere keer wanneer je aanpassingen doet aan de configuratie het pakket dusdanig verschilt van hetgeen je eerder geconfigureerd hebt, dat je compleet overnieuw moet beginnen met ontdekken hoe het werkt.
Bijkomend nadeel is dat je geen versienummers meer hebt om in je zoekopdracht mee te geven en dus bij het Googlen overspoeld wordt met inmiddels verouderde informatie (dat wat je kende en al wist), maar zeer beperkt info vindt over de huidige versie (die je nog niet kent en meer over wilt weten).
Google steekt hier de vinger uit naar Microsoft, maar dan vraag ik me af hoe een out of date app een van de belangrijkste functies van een gsm/smartphone kan boycotten. Dit lijkt me toch eerder een Google issue dan een Microsoft issue.
Dat staat hierboven heel duidelijk uitgelegd door Wolfos.
Google steekt hier de vinger uit naar Microsoft
Waar precies wijzen ze naar MS? Ik ben dat nog niet tegengekomen, maar misschien lees ik er overheen?

Die app zit wel in het verhaal omdat het probleem daaruit ontdekt is, maar nergens zie ik Google er naar wijzen als oorzaak. De oorzaak is een samenloop die toevallig nu tot uiting komt...

[Reactie gewijzigd door watercoolertje op 22 juli 2024 15:32]

Excuses, hiervoor verwijs ik naar de Reddit post.
Leuk dat Google een fix uitbrengt, maar moet de OEM moet wel bereid te zijn om dit alsnog op te pakken. Maar verhelpt die geüpdate Teams app het probleem niet volledig (inclusief Android 8 versies)?

Beetje onduidelijk of je beide updates van Google en Microsoft teams nodig hebt om het probleem te verhelpen.
1 van beide fixes (OS of App) is voldoende het probleem te vookomen.
Beide behoren het echter onmogelijk te maken dat dit probleem optreedt. Beide hebben dan ook een fix gemaakt.
Ik ben niet heel erg thuis in deze materie, maar ik mis in het artikel de rol van Microsoft. Moe(s)ten zij niet Teams aanpassen zodat 112 wel weer kan worden gebeld? Zij zijn toch de bron van het niet-kunnen bellen naar 112? Hoor graag van jullie experts :9 .
Ja en nee, het OS maakt het mogelijk voor apps om 112 te blokkeren (niet perse als functie maar dat is wel de uitwerking in dit geval), dat moet de OS maker dus ten alle tijden mogelijk maken ongeacht wat apps wel/niet doen.

Want nu is het MS maar wat als een kwaadwillende zoiets bewust in z''n app zet?
Helder, bedankt voor de uitleg 👍
Ik moet ook wel zeggen dat dat Teams echt een DRAAK van een app is. Het inloggen lijkt compleet random te gebeuren. Zo kan ik vaak wel nieuwe berichten zien als push melding maar moet ik daarna wel inloggen om de app te openen, lekker veilig.
Dan zal je Teams beheerder aan moeten spreken. Die mag namelijk (samen met zijn mede-beheerders) beslissen hoe lang cached credentials geldig blijven. Daar is ovrigens niets random aan. Dat is een vastgestelde tijd.
Wat dan wel weer extreem schraal is van MS is dat dat één setting is voor alle devices en voor alle Office365 onderdelen. Om ongelukken te voorkomen met devices die van hand tot hand gaan, heeft de beheerder eigenlijk geen andere keuze dan om deze tijd kort te houden.
Maar dat fiasco is toch precies waar deze update om gaat?
Ja maar om dat te weten moet je het artikel (of eigenlijk de eerste zin) lezen :+
Stel je voor, artikels lezen, wie doet dat nu nog anno 2022? :+
Dat is letterlijk waar deze update voor bedoelt is ;) Heb je het artikel uberhaupt gelezen?

[Reactie gewijzigd door lucade2210 op 22 juli 2024 15:32]

Misschien heeft himlims_ het proberen te lezen maar sokte het bij deze gebroken zin :
De bug zorgde ervoor dat wanneer iemand niet ingelogd was met de Microsoft Teams-app, maar deze wel geïnstalleerd had, de app met de dienst die het mogelijk maakt om het alarmnummer te bellen.
Daar mist toch een halve zin?

Op dit item kan niet meer gereageerd worden.