Magisk ei pruugi enam varjata alglaaduri avamist rakenduste eest

click fraud protection

Magiski arendaja on avastanud, et Google võis hakata kasutama riistvarakontrolle, et teha kindlaks, kas seadme alglaadur on lukustamata.

XDA tunnustatud arendaja topjohnwuProjekti "Magisk" on Androidi kogukonnas sisuliselt saanud "root" sünonüümiks. Üks peamisi põhjuseid, miks see nii populaarne on, on see, et see võib varjata tõsiasja, et kasutaja on oma seadet muutnud. Google võib aga piirata Magiski võimet varjata alglaaduri avamise olekut rakenduste eest.

Telefoni juurutamiseks peate tavaliselt avama alglaaduri, mis võimaldab teil muudetud alglaadimispilte vilkuda. Seda on vaja, kuna Magisk muudab alglaadimispilti alglaaduri oleku ja/või kontrollitud alglaadimise oleku kontrollimiseks. Google'i SafetyNet Atestation API-t, mis on osa Google Play teenustest, kasutatakse rakendusele teatamiseks, kui see töötab rikutud seadmes; kui SafetyNet API tuvastab, et alglaadur on lukust lahti, tagastab see põhiterviklikkuse kontrolli tõrkeoleku. Seadmed, mis seda kontrolli ei suuda, saab seejärel lukustada rakendustest, mis kasutavad seadme terviklikkuse määramiseks SafetyNet API-t. sellised rakendused hõlmavad tavaliselt pangarakendusi, makserakendusi (nt Google Pay) ja paljusid võrgumänge (nt Pokémon Go). Kuna SafetyNet API on siiani kasutanud ainult tarkvara kontrolle, et teha kindlaks, kas seadet on rikutud, saab Magisk seda lihtsalt petta. alglaadur ja/või Verified Boot olek, kuna see on installitud madalamale tasemele ja kõrgemate õigustega kui Google Play teenused ja muu kasutajaruum rakendusi. Nagu topjohnwu selgitab, MagiskHide "[loob] tuvastamisprotsessi jaoks eraldatud "turvalise keskkonna" ja läbib Google'i API, et luua

legitiimne SafetyNeti tulemus, mis ei kajasta seadme tegelikku olekut."

Hiljuti on kasutajad aga märganud, et nende alglaaduriga lukustamata seadmed ei läbi SafetyNeti põhilise terviklikkuse kontrolli, kuigi nad kasutasid alglaadimispildi parandamiseks Magiskit. Topjohnwu sõnul on põhjuseks see, et Google võib olla rakendanud riistvaratasemel võtmetõendit, et kontrollida, kas alglaadimispilti pole rikutud. Täpsemalt tähendab see, et Google Play teenused "[saadab] SafetyNeti serveritele muutmata võtmesalve sertifikaadi, kontrollib selle legitiimsust ja kontrollib sertifikaadi laienduse andmed, et teada saada, kas teie seade [on] kinnitanud alglaadimise lubamise (bootloaderi olek)." See tähendab, et see ei pruugi enam olla võimalik varjata tõsiasja, et alglaadur on lukustamata, mille tulemusel sellised rakendused nagu Google Pay ja Pokémon Go ei tööta tavaliselt.

Nagu topjohnwu märkis, tuleneb see muudatus sellest, kuidas SafetyNet alglaaduri avamise olekut kontrollib, Google Play teenustes sisalduva SafetyNet API serveripoolse värskenduse kaudu. Kuid mitte kõik kasutajad ei läbi neid uuendatud SafetyNeti kontrolle, nii et uut riistvarataseme võtmetõendit ei pruugita veel laialdaselt jõustada.

Oleme näinud, kuidas topjohnwu on ikka ja jälle tehnilisi tõkkeid ületanud. Google avaldab SafetyNetis sageli uusi kontrolle, mille topjohnwu seejärel Magiskis avastab ja neist mööda läheb. Iga Androidi uus versioon toob kaasa muudatusi partitsioonistruktuuris või alglaadimispildis, mis nõuab, et topjohnwu uuriks muudatusi ja rakendaks seejärel uut lappimismeetodit. Kuid isegi topjohnwu võib seekord raskusi möödasõidu leidmisega.

Selle põhjuseks on asjaolu, et seekordne lahendus hõlmaks privaatvõtme toomiseks seadmete usaldusväärse täitmiskeskkonna (TEE) püsivara häkkimist. Seda on aga uskumatult raske teha, kuna see nõuab püsivara haavatavuse leidmist, mis on loodud uskumatult turvaliseks. Tegelikult pakuvad paljud ettevõtted makseid sadades tuhandetes dollarites, kui selline haavatavus peaks leidma. Näiteks Google maksab 250 000 dollarit koodi kaugkäitamise haavatavuste eest Pixeli usaldusväärse täitmiskeskkonnas ja kuni 1 000 000 dollarit haavatavuste jaoks Titan M turvakiip. Isegi kui privaatvõti peaks kuidagi lekkima, on ebatõenäoline, et sellest oleks palju kasu, kuna Google saab võtme eemalt tühistada seega ei saa seda kasutada seadmete terviklikkuse kontrollimiseks.

Kui SafetyNeti riistvarataseme võtmetunnistus on laialdaselt jõustatud, ei läbi enamik seadmeid, millel on lukustamata alglaadurid, milles töötab Android 8.0 Oreo või uuem versioon. Selle põhjuseks on asjaolu, et kõik seadmed, mis käivitati operatsioonisüsteemiga Android 8.0 Oreo või uuema versiooniga, peavad olema TEE-sse rakendatud riistvara võtmehoidla. Teatud seadmetel on tänapäeval isegi spetsiaalsed riistvaraturbemoodulid (HSM), mis muudavad TEE põhiprotsessorist eemale nihutamise veelgi keerulisemaks; Titan M Pixel 4-s ja Samsungi uus turvakiip Galaxy S20-s on selle näited.

Topjohnwu selgitab ka et muud võimalikud lahendused on kas võimatud või väga keerulised. Xposed Frameworki kasutamine SafetyNet Atestation API muutmiseks Google Play teenustes tõenäoliselt ei tööta, kuna "nõuetekohane SafetyNeti kontroll kontrollib tulemusi kaugserveris, mitte [a]. seade, mida saab koodi sisestamise raamistike abil manipuleerida." Lisaks on Google Play teenused väga segased, muutes sellise Xposedi mooduli loomise alguses uskumatult keeruliseks koht. SafetyNeti testitulemuste võltsimine pole samuti võimalik, kuna SafetyNeti vastused "tulevad Google'i serveritest ja on allkirjastatud Google'i privaatvõtmega".

Google'il on juba mitu aastat olnud võimalus tugevdada SafetyNeti kontrolle, kasutades riistvaraga tagatud võtmetunnistust. Asjaolu, et nad hoidusid seda tegemast kolm aastat, on võimaldanud kasutajatel nautida juur- ja Magiski mooduleid ilma pangarakenduste kasutamise võimalust ohverdamata. Siiski tundub, et Magiski võime alglaaduri avamise olekut tõhusalt varjata hakkab peagi lõppema. See on muudatus, mida oleme aastaid oodanud, kuid on kurb, et see lõpuks jõustub. Loodame, et Google värskendab SafetyNet Atestation API-t, et saada teada, kas olekukontroll kasutas riistvarapõhist kinnitus, kuna see võimaldaks rakenduste arendajatel otsustada, kas nad soovivad blokeerida kõik kasutajad, kes on selle avanud alglaadur.


Tänu Daniel Micayle (@DanielMicay) tema panuse eest selles küsimuses!