PSA: Buďte opatrní pri inštalácii čohokoľvek, čo má SELinux nastavený na povolený

click fraud protection

Nedokumentovaná funkcia systému Android umožňuje ľubovoľnej aplikácii získať prístup root v tolerantnom prostredí SELinux. Čítajte ďalej a dozviete sa viac!

Vo svete moddingu systému Android majú ľudia tendenciu považovať prístup root za základný kameň všetkých vecí. Umožňuje používateľom prevziať úplnú kontrolu nad svojimi zariadeniami a pridať funkcie, ktoré nie sú vždy dostupné v skladovej konfigurácii. Ale ako sa hovorí – „s veľkou silou prichádza veľká zodpovednosť“ – nie je rozumné obchádzať bezpečnostný model Androidu, pokiaľ neviete, do čoho idete. Pre skúsených nadšencov Androidu na našich fórach ste si pravdepodobne vedomí potenciálu existencie zadných vrátok na vašom zariadení a je pravdepodobnejšie, že na najnovšej verzii Androidu s najnovším zabezpečením používate dôveryhodný mod s povoleným rootom náplasti. Napriek tomu možno poznáte niekoľko ľudí, ktorí sa naozaj nestarajú o to, aké vylepšenia root nainštalujú, pokiaľ pre nich zdanlivo fungujú. To je dôvod, prečo stále môžete nájsť hromadu modov, ktoré fungujú iba vtedy, keď je SELinux nastavený na permisívny, čo zase spôsobuje, že ich používatelia sú extrémne náchylní na bezpečnostné hrozby.

Čo je SELinux

SELinux, príp Linux so zvýšenou bezpečnosťou, je bezpečnostný modul jadra Linuxu špeciálne navrhnutý pre prístup a správu bezpečnostných politík. Pôvodne predstavený v systéme Android 4.3 Jelly Bean a nastavený na režim vynútenia ako predvolený od systému Android 4.4 KitKat, SELinux pomáha presadzovať práva na riadenie prístupu a pokúša sa zabrániť eskalácii privilégií útokov. Stručne povedané, SELinux funguje ako prekážka neoprávnenej kontroly nad vaším zariadením, ako je napríklad aplikácia alebo zraniteľnosť, ktorej cieľom je získať root prístup so zlým úmyslom. Nastavenie SELinuxu na "Enforcing" v predvolenom nastavení je jedným z kľúčových spôsobov, ako sú normálni používatelia chránení pred takýmito útokmi.

Prečo sa permisívny SELinux neodporúča

Zopakujem, typický spôsob dosiahnutia prístupu root na zariadení so systémom Android nemusí nevyhnutne meniť stav SELinux. Posun režimu SELinux z „Vynútiť“ na „Povolený“ úmyselne vypína jednu z kľúčových bezpečnostných funkcií na zariadení, a preto používateľ to musí výslovne povoliť inštaláciou špecializovaného vlastného jadra alebo úpravou parametrov existujúceho zavádzacieho obrazu. Zle kódovaný mod, ktorému chýba správna politika SELinux, zvyčajne núti koncových používateľov prejsť na permisívny SELinux a v podstate rozširuje plochu útoku. To je presne to, čo vývojár vvb2060 demonštrovali, keď oni zverejnil metódu eskalácie privilégií proof of concept kde jedinou požiadavkou na získanie kontroly je permisívny SELinux.

Zadajte Magica

Pre používateľa je prekvapivo ľahké získať úplný prístup root na svojom vlastnom zariadení so systémom Android 10 (alebo vyšším) s povoleným SELinuxom. urobiť: Všetko, čo musíte urobiť, je stlačiť install a "Magica" automaticky získa root prístup v službe a nainštaluje Magisk do bootovacieho systému obrázok. Ide o niečo oveľa širšie, než len o ladenie vášho zariadenia. Podľa XDA senior uznávaného vývojára a správcu Magisk topjohnwu, ľubovoľná ľubovoľná aplikácia vrátane škodlivého softvéru, môže natrvalo rootovať vaše zariadenie bez vášho súhlasu a povolenia pomocou PoC.

Ak vás na technickej úrovni zaujíma, čo Magica využíva, topjohnwu vysvetlil nasledovné príspevok na Reddit:

"Keď je SELinux počas zavádzania povolený, zygote to bude vedieť a vypne filtre syscall seccomp. Toto v podstate neobmedzuje, aké systémové volania sú povolené v procesoch tretích strán.

V systéme Android 10+ existuje nová „nedokumentovaná“ funkcia s názvom „App Zygote“, v rámci ktorej môžu aplikácie tretích strán vytvárať vlastné Zygote pre „Isolated Services“ (tiež takmer nezdokumentované). „App Zygote“ aj „Isolated Services“ sú špeciálne funkcie navrhnuté pre prehliadač Chrome/Webview*. Procesy aplikácie Zygote bežia so špeciálnymi povoleniami a so zakázaným seccomp môže volať setuid 0 a eskalovať svoje privilégiá a získať prístup root.

Stále je to nejakým spôsobom obmedzujúce v porovnaní s tým, čo poskytujú bežné koreňové riešenia (napr. Magisk), avšak veľa bezpečnostných opatrení v systéme Android bude úplne porazených, keď UID=0. Stačí ho napríklad použiť na opravu zavádzacích obrazov, čo znamená, že ho možno použiť na vloženie škodlivého softvéru, ako je upravený Magisk, aby mu pomohol získať „skutočné“ oprávnenia root.

Aktualizácia: čo dokáže samotné UID=0? V rámci systému Android majú takmer všetky služby slepé zelené svetlo, keď je UID žiadajúceho procesu 0. To znamená, že tento koreňový proces je schopný manipulovať s množstvom vecí pomocou rozhraní API špecifických pre Android (napr. ActivityManager)“

*Podľa vývojára aviraxp, tieto dve funkcie sú všeobecnejšie navrhnuté „na zdieľanie zdrojov a pamäte medzi viacerými izolovanými procesmi“.

Záver

Vzhľadom na nenapraviteľnú ujmu, ktorá môže byť spôsobená používateľom, na ktorých sa malvér zameriava v tolerantnom prostredí SELinux, dôrazne odporúčame, aby ho všetci naďalej presadzovali, pokiaľ to nie je absolútne nevyhnutné. Aj keď máme len šťastie, že máme dôkaz o zneužití konceptu, netušíme, koľko autorov malvéru už vie o tejto ceste útoku. Koniec koncov, obeť bude aj naďalej ignorovať ohrozený stav svojho zariadenia, ak tak neurobí byť svedkom aktívneho využívania exploitu, čo nie je ťažké dosiahnuť pre nečestnú aplikáciu, ktorá má trvalý root prístup.