Der Android-platform er blevet opdaget en sårbarhed (CVE-2022-20465), der tillader, at skærmlåsningen deaktiveres ved at skifte SIM-kort og indtaste PUK-koden. Muligheden for at deaktivere låsen blev demonstreret på Google Pixel-enheder, men da rettelsen påvirker den primære kodebase for Android, er det sandsynligt, at problemet også vedrører firmware fra andre producenter. Problemet er blevet løst i den november-sikkerhedsopdatering for Android. Forskeren, der påpegede problemet, modtog en belønning på 70.000 dollars fra Google.
Problemet skyldes forkert håndtering af oplåsningen efter indtastning af PUK-koden (Personal Unblocking Key), som bruges til at genoprette funktionaliteten af et SIM-kort, der er blevet låst efter gentagne fejlagtige indtastninger af PIN-koden. For at deaktivere skærmlåsen er det tilstrækkeligt at indsætte sit eget SIM-kort i telefonen, hvor beskyttelsen er baseret på en PIN-kode. Efter skift af SIM-kort, der er beskyttet af en PIN-kode, vises der først en anmodning om at indtaste PIN-koden. Hvis PIN-koden indtastes fejlagtigt tre gange, bliver SIM-kortet låst, hvorefter der bliver mulighed for at indtaste PUK-koden for at låse det op. Det viste sig, at korrekt indtastning af PUK-koden ikke kun låser SIM-kortet op, men også fører direkte til hovedgrænsefladen uden at bekræfte adgang via det primære kodeord eller mønsterlås.

Sårbarheden er forårsaget af en fejl i logikken for kontrol af PUK-koder i KeyguardSimPukViewController-behandleren, som er ansvarlig for visningen af et ekstra autentificeringsskærmbillede. Android bruger flere typer autentificeringsskærme (til PIN, PUK, kodeord, grafisk mønster, biometric autentificering), og disse skærme kaldes sekventielt, når der kræves udførelse af flere kontroller, f.eks. når der kræves både PIN og grafisk mønster.
Ved korrekt indtastning af PIN-koden aktiveres det andet trin i verifikationen, som kræver indtastning af hovedlåsekoden, men når PUK-koden indtastes, springes et sådant trin over, og adgang gives uden anmodning om hovedadgangskoden eller grafisk nøgle. Udeladelse af det næste låsningstrin sker, da der ikke foretages en sammenligning af de forventede og beståede verifikationsmetoder ved opkald af KeyguardSecurityContainerController#dismiss(), dvs. handleren anser, at der ikke er sket nogen ændring i verifikationsmetoden, og en vellykket PUK-kodeverifikation indikerer, at adgangen er blevet bekræftet.
Sårbarheden blev opdaget ved en tilfældighed - en bruger fik sin telefon afladet, og efter opladning og genstart fejlede han flere gange ved indtastning af PIN-koden, hvorefter han låste op med PUK-koden og blev overrasket over, at systemet ikke krævede hovedadgangskoden, der bruges til at dekryptere data, hvorefter det stod stille med meddelelsen „Pixel is starting…“. Brugeren var nysgerrig, besluttede at finde ud af, hvad der var galt, og begyndte at eksperimentere med indtastning af PIN- og PUK-koder på forskellige måder, indtil han tilfældigt glemte at genstarte enheden efter skift af SIM-kort og i stedet for at fryse fik adgang til miljøet.
Især interessant er Googles reaktion på rapporten om sårbarheden. Informationen om problemet blev sendt i juni, men indtil september kunne forskeren ikke få et forståeligt svar. Han mente, at denne adfærd kunne forklares med, at han ikke var den første, der rapporterede om denne fejl. Mistanken om, at noget ikke gik som det skulle, opstod i september, da problemet forblev uafklaret efter installationen af en firmwareopdatering, der blev udgivet 90 dage senere, da den angivne hemmelighedsperiode allerede var udløbet.
Da alle forsøg på at finde ud af status for den indsendte fejlrapport kun førte til automatiserede og skabelonagtige svar, forsøgte forskeren at kontakte Google-ansatte personligt for at afklare situationen omkring reparationen og demonstrerede endda sårbarheden på Googles kontor i London. Først efter dette gik arbejdet med at udbedre sårbarheden fremad igen. Under undersøgelsen viste det sig, at nogen allerede havde rapporteret om problemet tidligere, men Google besluttede at lave et undtagelse og udbetale en belønning for den gentagne fejlrapport, da det kun var takket være forfatterens vedholdenhed, at der blev gjort opmærksom på problemet.
Kilde: opennet.ru
