PSA: esiet piesardzīgs, instalējot jebko, ja SELinux ir iestatīts uz atļaujošu

click fraud protection

Nedokumentēta Android funkcija ļauj jebkurai patvaļīgai lietotnei iegūt root piekļuvi atļautā SELinux vidē. Lasiet tālāk, lai uzzinātu vairāk!

Android modifikācijas pasaulē cilvēki mēdz uzskatīt root piekļuvi par visu lietu stūrakmeni. Tas ļauj lietotājiem pilnībā kontrolēt savas ierīces un pievienot funkcijas, kas ne vienmēr ir pieejamas krājuma konfigurācijā. Bet, kā saka — "ar lielu jaudu nāk liela atbildība" — nav prātīgi apiet Android drošības modeli, ja vien nezināt, ar ko nokļūstat. Android entuziastiem veterāniem mūsu forumos jūs droši vien zināt, ka jūsu ierīcē var pastāvēt aizmugures durvis, un jūs, visticamāk, izmantosit uzticamu root iespējotu modi papildus jaunākajai Android versijai ar jaunāko drošību ielāpus. To sakot, jūs, iespējams, pazīstat dažus cilvēkus, kuriem nav īsti svarīgi, kādus saknes uzlabojumus viņi instalē, ja vien tie šķietami darbojas viņu labā. Tāpēc joprojām varat atrast kravas automašīnu modifikācijas, kas darbojas tikai tad, ja SELinux ir iestatīts uz atļaujošu, kas savukārt padara to lietotājus ļoti jutīgus pret drošības apdraudējumiem.

Kas ir SELinux

SELinux vai Linux ar uzlabotu drošību, ir Linux kodola drošības modulis, kas īpaši paredzēts piekļuvei drošības politikām un to pārvaldībai. Sākotnēji tika ieviests operētājsistēmā Android 4.3 Jelly Bean un kopš Android iestatīts uz tā izpildes režīmu kā noklusējuma režīmu 4.4 KitKat, SELinux palīdz īstenot piekļuves kontroles tiesības un mēģina novērst privilēģiju eskalāciju uzbrukumiem. Īsumā, SELinux darbojas kā šķērslis nesankcionētai ierīces kontrolei, piemēram, lietotnei vai ievainojamībai, kuras mērķis ir ļaunprātīgi iegūt root piekļuvi. SELinux iestatīšana uz "Enforcing" pēc noklusējuma ir viens no galvenajiem veidiem, kā parastie lietotāji tiek aizsargāti pret šādiem uzbrukumiem.

Kāpēc Permissive SELinux nav ieteicams

Atkārtoti jāatzīmē, ka parastajam saknes piekļuves iegūšanas veidam Android ierīcē nav obligāti jāmaina SELinux statuss. Pārslēdzot SELinux režīmu no “Enforcing” uz “Permissive”, tiek apzināti atspējota viena no galvenajām ierīces drošības funkcijām, tāpēc lietotājam ir skaidri jāļauj tam notikt, instalējot specializētu pielāgotu kodolu vai modificējot esošā sāknēšanas attēla parametrus. Slikti kodēts mod, kam nav atbilstošas ​​SELinux politikas, parasti liek galalietotājiem pāriet uz atļaujošu SELinux un būtībā paplašina uzbrukuma virsmu. Tas ir tieši tas, ko izstrādātājs vvb2060 demonstrēja, kad viņi publicēja koncepcijas privilēģiju eskalācijas metodes pierādījumu kur vienīgā prasība, lai iegūtu kontroli, ir atļaujošs SELinux.

Ievadiet Magica

Lietotājam ir pārsteidzoši viegli iegūt pilnu root piekļuvi savā ierīcē, kurā darbojas operētājsistēma Android 10 (vai jaunāka versija) un SELinux ir iestatīts uz atļauju. darīt: viss, kas jums jādara, ir jānospiež instalēšana, un "Magica" automātiski iegūs root piekļuvi pakalpojumam un instalē Magisk sāknēšanas ierīcē. attēlu. Tas ir kaut kas daudz plašāks nekā tikai ierīces pielāgošana. Saskaņā ar XDA vecākais atzītais izstrādātājs un Magisk uzturētājs topjohnwu, jebkura patvaļīga lietotne, tostarp ļaunprātīga programmatūra, var pastāvīgi sakņot ierīci bez jūsu piekrišanas un atļaujas izmantojot PoC.

Ja jums tehniskā līmenī rodas jautājums, ko Magica izmanto, topjohnwu paskaidroja sekojošo Reddit ziņa:

"Kad SELinux sāknēšanas laikā ir pieļaujams, zigota to zinās un atspējos seccomp syscall filtrus. Tas būtībā neierobežo to, kādi sistēmas izsaukumi ir atļauti trešo pušu procesos.

Operētājsistēmā Android 10+ ir jauna “nedokumentēta” funkcija “App Zygote”, kurā trešo pušu lietotnēm ir atļauts izveidot savu Zygote “izolētajiem pakalpojumiem” (arī gandrīz nedokumentētiem). Gan “App Zygote”, gan “Isolated Services” ir īpašas funkcijas, kas paredzētas pārlūkam Chrome/Webview*. App Zygote procesi darbojas ar īpašām atļaujām, un, ja seccomp ir atspējota, tā var izsaukt setuid 0 un palielināt savas privilēģijas un iegūt root piekļuvi.

Tas joprojām ir zināmā mērā ierobežojošs salīdzinājumā ar to, ko nodrošina parastie saknes risinājumi (piemēram, Magisk), tomēr daudzi drošības pasākumi operētājsistēmā Android tiks pilnībā izjaukti, ja UID = 0. Piemēram, pietiek ar to, lai to izmantotu sāknēšanas attēlu ielāpēšanai, kas nozīmē, ka to var izmantot ļaunprātīgas programmatūras, piemēram, modificētas Magisk, ievadīšanai, lai palīdzētu tai iegūt "īstas" saknes atļaujas.

Atjauninājums: ko pats UID=0 var darīt? Android sistēmā gandrīz visiem pakalpojumiem ir akli zaļā gaisma, ja pieprasījuma procesa UID ir 0. Tas nozīmē, ka šis saknes process spēj manipulēt ar daudzām lietām, izmantojot Android specifiskas API (piemēram, ActivityManager)

*Pēc izstrādātāja domām aviraxp, šīs divas funkcijas vispārīgāk ir paredzētas "resursu un atmiņas koplietošanai starp vairākiem izolētiem procesiem".

Secinājums

Ņemot vērā neatgriezenisko kaitējumu, kas var tikt nodarīts lietotājiem, kuru mērķauditorija ir ļaunprātīga programmatūra pieļaujamā SELinux vidē, mēs stingri iesakām ikvienam turpināt to ieviest, ja vien tas nav absolūti nepieciešams. Lai gan mums vienkārši ir paveicies ar koncepcijas izmantošanas pierādījumu, mums nav ne jausmas, cik daudz ļaunprātīgas programmatūras autoru jau zina par šo uzbrukuma ceļu. Galu galā upuris turpinās ignorēt savas ierīces apdraudēto stāvokli, ja viņš to nedarīja liecinieks, ka ekspluatācija tiek aktīvi izmantota, ko nav grūti panākt negodīgai lietotnei, kurai ir pastāvīga sakne piekļuvi.