Na Android platformi otkrivena je ranjivost (CVE-2022-20465) koja omogućava onemogućavanje zaključavanja ekrana zamjenom SIM kartice i unosom PUK koda. Mogućnost onemogućavanja zaključavanja demonstrirana je na uređajima Google Pixel, ali s obzirom na to da popravak utječe na osnovnu kodnu bazu Androida, vjerojatno je da se problem odnosi i na firmware drugih proizvođača. Problem je riješen u studenom skupu ispravki za sigurnost Androida. Istraživač koji je uočio problem primio je nagradu u iznosu od 70 tisuća dolara od kompanije Google.
Problem je uzrokovan nepravilnim rukovanjem deblokadom nakon unosa PUK koda (Personal Unblocking Key), koji se koristi za ponovno omogućavanje rada SIM kartice blokirane nakon višekratnog pogrešnog unosa PIN koda. Da bi se onemogućilo zaključavanje ekrana, dovoljno je u telefon staviti svoju SIM karticu koja je zaštićena PIN kodom. Nakon promjene SIM kartice zaštićene PIN-om, na ekranu se najprije prikazuje zahtjev za PIN kod. Ako se tri puta pogrešno unese PIN kod, doći će do blokade SIM kartice, nakon čega će biti omogućeno unošenje PUK koda za deblokiranje. Ispostavilo se da ispravno unošenje PUK koda ne samo da deblokira SIM karticu, već i omogućava pristup glavnom sučelju zaobilaženjem zaključavanja ekrana, bez potvrde pristupa putem glavne lozinke ili grafičkog ključa.

Ranjivost je uzrokovana greškom u logici provjere PUK kodova u obradi KeyguardSimPukViewController, koji je zadužen za prikaz dodatnog ekrana za autentifikaciju. U Androidu se koristi nekoliko tipova ekrana za autentifikaciju (za PIN, PUK, lozinku, grafički ključ, biometrijsku autentifikaciju) i ti su ekrani pozvani uzastopno kada je potrebno izvršiti nekoliko provjera, na primjer, kada su potrebni PIN i grafički ključ.
Prilikom ispravnog unosa PIN koda aktivira se druga faza provjere, koja zahtijeva unos glavnog koda za otključavanje, no prilikom unosa PUK koda slična faza se preskoči i pristup se odobrava bez zahtjeva za glavnom lozinkom ili grafičkim ključem. Preskakanje sljedeće faze otključavanja događa se jer prilikom poziva KeyguardSecurityContainerController#dismiss() ne dolazi do usporedbe očekivane i izvršene metode provjere, tj. obrada smatra da nije došlo do promjene metode provjere, a završetak provjere PUK koda svjedoči o uspješnom potvrđivanju ovlasti.
Ranljivost je otkrivena slučajno — korisniku se ispraznila baterija telefona i nakon punjenja i uključivanja nekoliko je puta pogriješio prilikom unosa PIN koda, nakon čega je otključao uređaj PUK kodom i bio iznenađen što sustav nije zatražio glavnu lozinku koja se koristi za dešifriranje podataka, nakon čega se uređaj zablokirao s porukom „Pixel is starting…”. Korisnik je bio znatiželjan, odlučio je otkriti o čemu se radi i počeo je eksperimentirati s unosom PIN i PUK kodova na razne načine, sve dok slučajno nije zaboravio ponovo pokrenuti uređaj nakon promjene SIM kartice i umjesto zablokiranja dobio pristup okruženju.
Posebno je zanimljiva reakcija Googlea na izvještaj o ranjivosti. Informacija o problemu poslana je u lipnju, no do rujna istraživač nije mogao dobiti smisleni odgovor. Smatrao je da je takvo ponašanje posljedica činjenice da nije prvi koji je izvijestio o ovoj grešci. Sumnje da nešto nije u redu pojavile su se u rujnu, kada problem nije bio ispravljen čak ni nakon instalacije ažuriranja firmware-a, koje je objavljeno 90 dana kasnije, kada je već istekao navedeni rok za povjerljivost.
Budući da su svi pokušaji da se sazna stanje poslanog izvještaja o problemu rezultirali samo automatiziranim i šablonskim odgovorima, istraživač je pokušao osobno kontaktirati radnike Googlea kako bi razjasnio situaciju s pripremom ispravka i čak je demonstrirao ranjivost u londonskom uredu Googlea. Tek nakon toga, rad na uklanjanju ranjivosti je napredovao. U analizi se pokazalo da je o problemu već netko ranije izvijestio, no Google je odlučio napraviti iznimku i isplatiti nagradu za ponovno izvješće o problemu, jer je samo zahvaljujući ustrajnosti njegovog autora na problem obratila pažnja.
Izvor: opennet.ru
