Androidi platvormil avastati haavatavus (CVE-2022-20465), mis võimaldab ekraaniluku välja lülitada SIM-kaardi ümberpaigutamise ja PUK-koodi sisestamise teel. Ekraaniluku väljalülitamise võimalust on demonstreeritud Google Pixel seadmetes, kuid kuna parandamine puudutab Androidi põhikoodibaasi, on tõenäoline, et probleem mõjutab ka teiste tootjate tarkvara. Probleem on lahendatud novembrikuu turvaparanduste komplektis Androidile. Probleemi avastanud teadlane sai Google'ilt 70 000 dollari suuruse preemia.
Probleem tuleneb vale töötlemise tõttu SIM-kaardi vabastamisel PUK-koodi (isiklik vabastamisvõti) sisestamise järel, mida kasutatakse SIM-kaardi taastamiseks, mis on lukustatud pärast korduvalt vale PIN-koodi sisestamist. Ekraani lukustuse väljalülitamiseks on piisav, kui telefonis on oma SIM-kaart, millel on PIN-koodi kaitse. Pärast PIN-koodiga kaitstud SIM-kaardi vahetamist kuvatakse ekraanil alguses PIN-koodi sisestamise nõue. Kui PIN-kood sisestatakse kolm korda valesti, lukustatakse SIM-kaart, mille järel on võimalik sisestada PUK-kood selle vabastamiseks. Selgus, et õige PUK-koodi sisestamine mitte ainult ei vabasta SIM-kaarti, vaid viib otse põhiinterfääri, mööda ekraanilukustajat, ilma juurdepääsu kinnitamise vajaduseta põhivõtme või grafitilise võtme abil.

Haavatavus on põhjustatud veast PUK-koodide kontrollimise loogikas KeyguardSimPukViewControlleris, mis vastutab täiendava autentimise ekraani kuvamise eest. Androidis kasutatakse mitmeid autentimise ekraane (PIN-koodi, PUK-koodi, parooli, graafilise võtme ja biomeetrilise autentimise jaoks), ja neid ekraane kutsutakse välja järjestikku, kui on vajalik mitme kontrolli läbiviimine, näiteks kui on vajalik PIN-kood ja graafiline võti.
Õige PIN-koodi sisestamisel aktiveeritakse teine kontrollietapp, mis nõuab põhivabastuskoodi sisestamist, kuid PUK-koodi sisestamisel jäetakse selline etapp vahele ja juurdepääs antakse ilma põhivõttu või graafilise võtme pärimise küsimiseta. Järgmise vabastamise etapi kõrvaleheitmine toimub seetõttu, et kui kutsuda välja KeyguardSecurityContainerController#dismiss(), ei võrrelda oodatud ja läbitud kontrollimeetodit, st töötleja arvab, et kontrollimise meetod ei ole muutunud ja PUK-koodi kontrollimise lõpetamine tõendab volituste edukat kinnitamist.
Haavatavus avastati juhuslikult — kasutaja telefon aku tühjenes ja pärast laadimist ning sisselülitamist tegi ta mitu korda PIN-koode valesti, pärast mida eemaldas ta lukustuse PUK-koodiga ja oli üllatunud, et süsteem ei palunud põhikoodi, mis on vajalik andmete dekrüpteerimiseks. Seejärel hakkas seade koos sõnumiga "Pixel is starting..." jooksma. Kasutaja oli põhjalik, otsustas asja uurida ja hakkas erinevate meetoditega katsetama PIN- ja PUK-koodide sisestamist, kuni juhuslikult unustas seadme taaskäivitamise pärast SIM-kaardi vahetamist ning sai, mitte enam jooksma jäädes, vaid ligipääsu keskkonnale.
Eriti huvitav on Google'i reaktsioon haavatavuse teatele. Teave probleemist saadeti juunis, kuid septembriks ei suutnud uurija arusaadavat vastust saada. Ta arvas, et selline käitumine on tingitud sellest, et ta ei ole esimene, kes sellest veast teatanud on. Kahtlused, et midagi on valesti, tekkisid septembris, kui probleem jäi lahendamata 90 päeva pärast välja antud tarkvarauuendust, mille järel oli aeg olnud mitteavaldamise periood möödas.
Kuna kõik katsed teada saada saadetud probleemiteate olekust viisid vaid automatiseeritud ja standardsetele vastustele, üritas uurija isiklikult ühendust võtta Google'i töötajatega, et selgitada välja olukord paranduste ettevalmistamisel, ja isegi demonstreeris haavatavust Google'i Londoni kontoris. Alles siis liikusid tööd haavatavuse kõrvaldamise osas edasi. Juurdluse käigus selgus, et probleemist oli keegi varem teatatud, kuid Google otsustas teha erandi ja maksta tasu korduva probleemiteate eest, kuna ainult tänu autorile, kes järjekindlalt teemat tõstatas, pöörati probleemile tähelepanu.
Allikas: opennet.ru
