Nedokumentirana Android značajka omogućuje bilo kojoj proizvoljnoj aplikaciji dobivanje root pristupa u permisivnom SELinux okruženju. Čitajte dalje da biste saznali više!
U svijetu Android modificiranja, ljudi imaju tendenciju smatrati root pristup kamenom temeljcem svih stvari. Omogućuje korisnicima da preuzmu potpunu kontrolu nad svojim uređajima i dodaju značajke koje nisu uvijek dostupne u standardnoj konfiguraciji. Ali kako kažu — "s velikom snagom dolazi i velika odgovornost" — nije pametno zaobići Androidov sigurnosni model osim ako ne znate u što se upuštate. Za iskusne Android entuzijaste na našim forumima, vjerojatno ste svjesni mogućnosti postojanja backdoora na vašem uređaju, i veća je vjerojatnost da ćete pokrenuti pouzdani mod s omogućenim root-om povrh najnovije verzije Androida s najnovijom sigurnošću zakrpe. Rekavši to, možda poznajete nekoliko ljudi koji zapravo ne mare za root podešavanja koja instaliraju sve dok im naizgled rade. Zbog toga još uvijek možete pronaći gomilu modova koji rade samo kada je SELinux postavljen na permisivno, što zauzvrat ostavlja njihove korisnike izuzetno osjetljivima na sigurnosne prijetnje.
Što je SELinux
SELinux, ili Linux s poboljšanom sigurnošću, sigurnosni je modul jezgre Linuxa posebno dizajniran za pristup i upravljanje sigurnosnim politikama. Izvorno predstavljeno u Androidu 4.3 Jelly Bean i postavljeno na svoj Enforcing mod kao zadani od Androida 4.4 KitKat, SELinux pomaže u provedbi prava kontrole pristupa i pokušava spriječiti eskalaciju privilegija napadi. Ukratko, SELinux djeluje kao prepreka za neovlaštenu kontrolu nad vašim uređajem, poput aplikacije ili ranjivosti koja ima za cilj zlonamjerno dobiti root pristup. Postavljanje SELinuxa na "Enforcing" prema zadanim postavkama jedan je od ključnih načina na koji su normalni korisnici zaštićeni od takvih napada.
Zašto se Permisivni SELinux ne preporučuje
Da ponovimo, tipičan način za postizanje root pristupa na Android uređaju ne mora nužno mijenjati SELinux status. Prebacivanje SELinux načina rada s "Enforcing" na "Permissive" namjerno onemogućuje jednu od ključnih sigurnosnih značajki na uređaju, zbog čega korisnik mora izričito dopustiti da se to dogodi instaliranjem specijalizirane prilagođene jezgre ili modificiranjem parametara postojeće slike za pokretanje. Loše kodiran mod koji nema odgovarajuću SELinux politiku obično prisiljava krajnje korisnike da prijeđu na permisivni SELinux i u biti proširuje površinu napada. Upravo takav programer vvb2060 pokazao kada su objavio dokaz metode eskalacije privilegija koncepta gdje je jedini zahtjev za dobivanje kontrole permisivni SELinux.
Ulazi Magica
Za korisnika je šokantno lako dobiti potpuni root pristup na vlastitom uređaju s Androidom 10 (ili novijim) sa SELinuxom postavljenim na permisivno učiniti: Sve što trebate učiniti je pritisnuti instalaciju i "Magica" će automatski dobiti root pristup u servisu i instalirati Magisk na početnu stranicu slika. Ovo je nešto daleko šire od pukog podešavanja vašeg uređaja. Prema XDA Senior Recognised Developer i Magisk održavatelju topjohnwu, bilo koja proizvoljna aplikacija, uključujući zlonamjerni softver, može trajno rootati vaš uređaj bez vašeg pristanka i dopuštenja korištenjem PoC-a.
Ako se pitate na tehničkoj razini što Magica iskorištava, topjohnwu je objasnio sljedeće u objavu na Redditu:
"Kada je SELinux permisivan tijekom pokretanja, zygote će to znati i onemogućiti seccomp filtre syscall-a. Ovo u osnovi ne ograničava koji su sistemski pozivi dopušteni u procesima treće strane.
Na Androidu 10+ postoji nova "nedokumentirana" značajka pod nazivom "App Zygote" gdje je aplikacijama trećih strana dopušteno stvoriti vlastiti Zygote za "Izolirane usluge" (također gotovo nedokumentirane). I "App Zygote" i "Izolirane usluge" posebne su značajke dizajnirane za Chrome/Webview*. App Zygote procesi pokreću se s posebnim dopuštenjima, a s onemogućenim seccomp-om, može pozvati setuid 0 i eskalirati svoje privilegije i dobiti root pristup.
Još uvijek je na neki način restriktivan u usporedbi s onim što pružaju uobičajena root rješenja (npr. Magisk), no mnoštvo sigurnosnih mjera u Androidu bit će potpuno poraženo kada je UID=0. Na primjer, dovoljno je da se koristi za krpanje slika za pokretanje, što znači da se može koristiti za ubacivanje zlonamjernog softvera kao što je modificirani Magisk koji mu pomaže da dobije "prave" root dozvole.
Ažuriranje: što može učiniti sam UID=0? U okviru Androida, gotovo sve usluge imaju slijepo zeleno svjetlo kada je UID procesa koji zahtijeva 0. To znači da je ovaj root proces sposoban manipulirati gomilom stvari pomoću API-ja specifičnih za Android (npr. ActivityManager)"
*Prema programeru aviraxp, ove su dvije značajke općenito dizajnirane "za dijeljenje resursa i memorije između više izoliranih procesa."
Zaključak
Uzimajući u obzir nepopravljivu štetu koja se može nanijeti korisnicima koji su ciljani zlonamjernim softverom u popustljivom okruženju SELinuxa, snažno predlažemo svima da ga nastave provoditi osim ako je to apsolutno neophodno. Iako smo sretni što imamo dokaz iskorištavanja koncepta, nemamo pojma koliko autora zlonamjernog softvera već zna za ovaj način napada. Uostalom, žrtva će i dalje ostati nesvjesna ugroženog stanja svog uređaja ako to nije učinila svjedočite aktivnoj upotrebi exploita, što nije teško postići za lažnu aplikaciju koja ima trajni root pristup.