Er is een kwetsbaarheid ontdekt in het Android-platform (CVE-2022-20465) die het mogelijk maakt om de schermbeveiliging uit te schakelen door de SIM-kaart te verwisselen en de PUK-code in te voeren. De mogelijkheid om de beveiliging uit te schakelen is aangetoond op Google Pixel-apparaten, maar aangezien de oplossing de kerncodebase van Android beĆÆnvloedt, is het waarschijnlijk dat het probleem ook andere fabrikanten raakt. Het probleem is opgelost in de beveiligingspatch van november voor Android. De onderzoeker die het probleem opmerkte, ontving een beloning van 70.000 dollar van Google.
Het probleem wordt veroorzaakt door onjuiste verwerking van de ontgrendeling na het invoeren van de PUK-code (Personal Unblocking Key), die wordt gebruikt om de werking van een SIM-kaart te herstellen die is geblokkeerd na meerdere verkeerde invoeren van de PIN-code. Het enige wat nodig is om de schermbeveiliging uit te schakelen, is om je eigen SIM-kaart in de telefoon te plaatsen, waarop de bescherming op basis van PIN-code is ingesteld. Na de wisseling van de PIN-beschermde SIM-kaart verschijnt er aanvankelijk een verzoek om de PIN-code in te voeren. Als de PIN-code drie keer onjuist wordt ingevoerd, wordt de SIM-kaart geblokkeerd, waarna de mogelijkheid om de PUK-code in te voeren voor de ontgrendeling wordt geboden. Blijkt dat het correcte invoeren van de PUK-code niet alleen de SIM-kaart ontgrendelt, maar ook de toegang verschaft tot de hoofdinterface, omzeilt het de schermbeveiliging zonder bevestiging van toegang via het hoofdwachtwoord of de grafische sleutel.

De kwetsbaarheid wordt veroorzaakt door een fout in de logica voor het controleren van PUK-codes in de KeyguardSimPukViewController, die verantwoordelijk is voor het weergeven van het aanvullende authenticatiescherm. Android maakt gebruik van verschillende soorten authenticatieschermen (voor PIN, PUK, wachtwoord, grafische sleutel, biometrische authenticatie) en deze schermen worden sequentieel aangeroepen wanneer er meerdere controles moeten worden uitgevoerd, bijvoorbeeld wanneer zowel een PIN als een grafische sleutel vereist zijn.
Bij het juiste invoeren van de PIN-code gaat de tweede verificatiefase in, die vraagt om de hoofdontgrendelcode, maar bij het invoeren van de PUK-code wordt deze fase overgeslagen en wordt toegang verleend zonder om het hoofdwachtwoord of grafische sleutel te vragen. Het overslaan van de volgende ontgrendelingsfase vindt plaats omdat bij het aanroepen van KeyguardSecurityContainerController#dismiss() er geen vergelijking plaatsvindt tussen de verwachte en doorlopen verificatiemethode, hetgeen betekent dat de handler ervan uitgaat dat er geen wijziging in de verificatiemethode heeft plaatsgevonden en dat de afronding van de PUK-code bevestigt dat de autorisaties succesvol zijn bevestigd.
De kwetsbaarheid werd per ongeluk ontdekt ā de telefoon van de gebruiker was leeggelopen en na opladen en inschakelen maakte hij verschillende fouten bij het invoeren van de PIN-code, waarna hij de blokkering met de PUK-code opheft en verrast was dat het systeem niet om het hoofdwachtwoord vroeg dat gebruikt wordt voor de decryptie van gegevens, waarna het vastliep met de boodschap āPixel is startingā¦ā. De gebruiker bleek onderzoeksgericht, besloot het probleem te onderzoeken en begon op verschillende manieren te experimenteren met het invoeren van de PIN- en PUK-codes, totdat hij per ongeluk vergat het apparaat te herstarten na het wisselen van de SIM-kaart en in plaats van vastlopen toegang kreeg tot de omgeving.
De reactie van Google op het meldingsbericht over de kwetsbaarheid is bijzonder interessant. Informatie over het probleem werd in juni verzonden, maar tot september kon de onderzoeker geen zinnige reactie verkrijgen. Hij dacht dat dit gedrag te verklaren viel doordat hij niet de eerste was die deze fout meldde. Verdachten dat er iets niet in orde was, ontstonden in september, toen het probleem onopgelost bleef na de installatie van een firmware-update, die 90 dagen later werd uitgebracht, toen de aangegeven geheimhoudingsperiode al was verstreken.
Omdat alle pogingen om de status van het verzonden probleemrapport te achterhalen enkel resulteerden in geautomatiseerde en standaard antwoorden, deed de onderzoeker een poging om persoonlijk contact op te nemen met werknemers van Google om de situatie met de voorbereidingen voor een oplossing te verduidelijken. Hij demonstreerde zelfs de kwetsbaarheid op het Londense kantoor van Google. Pas daarna kwam er beweging in het werk om de kwetsbaarheid te verhelpen. Bij de beoordeling bleek dat iemand eerder al over het probleem had gerapporteerd, maar Google besloot een uitzondering te maken en een beloning uit te keren voor het opnieuw rapporteren van het probleem, omdat alleen door de vasthoudendheid van de auteur de aandacht op het probleem werd gevestigd.
Bron: opennet.ru
