Magisk, iespējams, vairs nevarēs paslēpt sāknēšanas ielādes atbloķēšanu no lietotnēm

Magisk izstrādātājs ir atklājis, ka Google, iespējams, ir sācis izmantot aparatūras pārbaudes, lai noteiktu, vai ierīcei ir atbloķēts sāknēšanas ielādētājs.

XDA atzītais izstrādātājs topjohnwuProjekts "Magisk" būtībā ir kļuvis par sinonīmu vārdam "sakne" Android kopienā. Viens no galvenajiem iemesliem, kāpēc tas ir tik populārs, ir tas, ka tas var slēpt faktu, ka lietotājs ir mainījis savu ierīci. Tomēr Google, iespējams, ierobežo Magisk spēju slēpt sāknēšanas ielādētāja atbloķēšanas statusu no lietojumprogrammām.

Lai sakņotu tālruni, parasti ir jāatbloķē sāknēšanas ielādētājs, kas ļauj mirgot modificētos sāknēšanas attēlus. Tas ir nepieciešams, jo Magisk modificē sāknēšanas attēlu, lai maldinātu sāknēšanas ielādētāja statusu un/vai pārbaudītu sāknēšanas statusa pārbaudes. Google SafetyNet apstiprinājuma API, kas ir daļa no Google Play pakalpojumiem, tiek izmantota, lai informētu lietotni, ja tā darbojas ierīcē, kurā ir veiktas manipulācijas; ja SafetyNet API konstatē, ka sāknēšanas ielādētājs ir atbloķēts, tas atgriezīs kļūmes statusu pārbaudei "Pamata integritāte". Ierīces, kurām šī pārbaude neizdodas, var tikt bloķētas no programmām, kas izmanto SafetyNet API, lai noteiktu ierīces integritāti; šādas lietotnes parasti ietver banku lietotnes, maksājumu programmas (piemēram, Google Pay) un daudzas tiešsaistes spēles (piemēram, Pokémon Go). Tomēr, tā kā SafetyNet API līdz šim ir izmantojusi tikai programmatūras pārbaudes, lai noteiktu, vai ierīcē nav veiktas manipulācijas, Magisk var vienkārši viltot sāknēšanas ielādētājs un/vai Verified Boot statuss, jo tas ir instalēts zemākā līmenī un ar augstākām privilēģijām nekā Google Play pakalpojumi un cita lietotāja vieta lietojumprogrammas. Kā skaidro topjohnwu, MagiskHide "[izveido] izolētu "drošu vidi" noteikšanas procesam, un tas iet caur Google API, lai izveidotu

legit SafetyNet rezultāts, kas neatspoguļo ierīces reālo statusu."

Tomēr nesen lietotāji ir pamanījuši, ka viņu ierīcēm, kurām ir atbloķēts sāknēšanas ielādētājs, nedarbojas SafetyNet pamata integritātes pārbaude, lai gan sāknēšanas attēla ielāpēšanai viņi izmantoja Magisk. Saskaņā ar topjohnwu teikto, tas ir tāpēc, ka Google, iespējams, ir ieviesis aparatūras līmeņa atslēgas apliecinājumu, lai pārbaudītu, vai sāknēšanas attēls nav bojāts. Konkrēti, tas nozīmē, ka Google Play pakalpojumi "[nosūta] nemodificētu atslēgu krātuves sertifikātu SafetyNet serveriem, pārbauda tā leģitimitāti un pārbauda sertifikāta paplašinājuma datus, lai uzzinātu, vai jūsu ierīce [ir] apstiprinājusi sāknēšanas iespējotu (sāknēšanas ielādētāja statuss)." Tas nozīmē, ka tas vairs nav iespējams slēpt faktu, ka sāknēšanas ielādētājs ir atbloķēts, kā rezultātā tādas lietojumprogrammas kā Google Pay un Pokémon Go nedarbosies normāli.

Kā atzīmēja topjohnwu, šīs izmaiņas veidā, kā SafetyNet pārbauda sāknēšanas ielādēja atbloķēšanas statusu, tiek veiktas, izmantojot servera puses atjauninājumu SafetyNet API, kas atrodas Google Play pakalpojumos. Tomēr ne katrs lietotājs neiztur šīs atjauninātās SafetyNet pārbaudes, tāpēc jaunais aparatūras līmeņa atslēgas apliecinājums, iespējams, vēl nav plaši ieviests.

Mēs esam redzējuši, kā topjohnwu atkal un atkal pārvar tehniskos šķēršļus. Google bieži ievieš jaunas pārbaudes pakalpojumā SafetyNet, kuras topjohnwu pēc tam atklāj un apiet pakalpojumā Magisk. Katra jaunā Android versija ievieš izmaiņas nodalījuma struktūrā vai sāknēšanas attēlā, liekot topjohnwu izpētīt izmaiņas un pēc tam ieviest jaunu ielāpu metodi. Tomēr pat topjohnwu šoreiz var būt grūti atrast apvedceļu.

Tas ir tāpēc, ka šoreiz risinājums būtu saistīts ar ierīču uzticamās izpildes vides (TEE) programmaparatūras uzlaušanu, lai izgūtu privāto atslēgu. Tomēr tas ir neticami grūti izdarāms, jo ir jāatrod programmaparatūras ievainojamība, kas ir izstrādāta tā, lai tā būtu neticami droša. Faktiski daudzi uzņēmumi piedāvā maksājumus simtiem tūkstošu dolāru, ja tiktu atklāta šāda ievainojamība. Piemēram, Google maksā 250 000 $ par attālās koda izpildes ievainojamību Pixel uzticamās izpildes vidē un līdz 1 000 000 USD par ievainojamību Titāns M drošības mikroshēma. Pat ja privātā atslēga kaut kādā veidā tiktu nopludināta, maz ticams, ka tai būtu liela nozīme, jo Google var attālināti atsaukt atslēgu tāpēc to nevar izmantot, lai pārbaudītu ierīču integritāti.

Kad aparatūras līmeņa atslēgas atestācija ir plaši ieviesta pakalpojumam SafetyNet, lielākā daļa ierīču ar atbloķētiem sāknēšanas ielādētājiem, kurās darbojas operētājsistēma Android 8.0 Oreo vai jaunāka versija, neizturēs SafetyNet pamata integritātes pārbaudi. Tas ir tāpēc, ka visām ierīcēm, kas palaistas ar operētājsistēmu Android 8.0 Oreo vai jaunāku versiju, TEE ir jāievieš aparatūras atslēgu krātuve. Dažām ierīcēm mūsdienās pat ir īpaši aparatūras drošības moduļi (HSM), kas padara ekspluatāciju vēl grūtāku, pārvietojot TEE prom no galvenā procesora; Titan M tālrunī Pixel 4 un Samsung jaunā drošības mikroshēma Galaxy S20 ir piemēri tam.

Topjohnwu arī skaidro ka citi iespējamie risinājumi ir neiespējami vai ļoti sarežģīti. Xposed Framework izmantošana, lai modificētu SafetyNet apstiprinājuma API Google Play pakalpojumos, visticamāk, nedarbosies, jo "pareizas SafetyNet pārbaudes pārbaudīs rezultātus attālajā serverī, nevis [.] ierīce, ar kuru var manipulēt ar koda ievadīšanas ietvariem." Turklāt Google Play pakalpojumi ir ļoti neskaidri, tādēļ šāda Xposed moduļa izveide pirmajā reizē ir neticami sarežģīta. vieta. Arī SafetyNet testa rezultātu viltošana nebūs iespējama, jo SafetyNet atbildes "nāk no Google serveriem un ir parakstītas ar Google privāto atslēgu".

Google jau vairākus gadus ir spējusi nostiprināt SafetyNet pārbaudes, izmantojot aparatūras nodrošināto atslēgas apliecinājumu. Fakts, ka viņi to nedarīja 3 gadus, ir ļāvis lietotājiem izbaudīt root un Magisk moduļus, nezaudējot iespēju izmantot banku lietotnes. Tomēr šķiet, ka Magisk spēja efektīvi slēpt bootloader atbloķēšanas statusu drīz tuvojas beigām. Tās ir izmaiņas, ko esam gaidījuši gadiem ilgi, taču esam skumji, ka tās beidzot stāsies spēkā. Mēs ceram, ka Google atjauninās SafetyNet apstiprinājuma API, lai noskaidrotu, vai statusa pārbaude tika izmantota, pamatojoties uz aparatūru apliecinājumu, jo tas ļautu lietotņu izstrādātājiem izlemt, vai viņi vēlas bloķēt visus lietotājus, kuri ir atbloķējuši sāknēšanas ielādētājs.


Paldies Danielam Micay (@Daniels Mikijs) par viņa ieguldījumu šajā jautājumā!