PSA: Vær forsigtig med at installere noget med SELinux sat til permissive

click fraud protection

En udokumenteret Android-funktion gør det muligt for enhver vilkårlig app at få root-adgang i et tilladeligt SELinux-miljø. Læs videre for at vide mere!

I Android-moddingens verden har folk en tendens til at betragte root-adgang som hjørnestenen i alle ting. Det giver brugerne mulighed for at tage fuldstændig kontrol over deres enheder og tilføje funktioner, der ikke altid er tilgængelige i lagerkonfigurationen. Men som de siger - "med stor magt kommer stort ansvar" - er det ikke klogt at omgå Androids sikkerhedsmodel, medmindre du ved, hvad du går ind til. For veteran Android-entusiaster på vores fora er du sikkert klar over potentialet for, at bagdøre kan eksistere på din enhed, og du er mere tilbøjelig til at køre en betroet root-aktiveret mod oven på den seneste Android-version med den nyeste sikkerhed plastre. Når det er sagt, kender du måske et par mennesker, der er ligeglade med, hvilke root-tweaks de installerer, så længe de tilsyneladende virker for dem. Dette er grunden til, at du stadig kan finde en lastbil af mods, der kun virker, når SELinux er indstillet til permissive, hvilket igen efterlader deres brugere ekstremt modtagelige for sikkerhedstrusler.

Hvad er SELinux

SELinux, eller Sikkerhedsforbedret Linux, er et Linux-kernesikkerhedsmodul specielt designet til adgang og administration af sikkerhedspolitikker. Oprindeligt introduceret i Android 4.3 Jelly Bean og sat til dens håndhævelsestilstand som standard siden Android 4.4 KitKat, SELinux hjælper med at håndhæve adgangskontrolrettigheder og forsøger at forhindre eskalering af privilegier angreb. I en nøddeskal fungerer SELinux som en hindring for uautoriseret kontrol over din enhed, såsom en app eller sårbarhed, der sigter mod at få root-adgang ondsindet. At sætte SELinux til "Enforcing" som standard er en af ​​de vigtigste måder, som normale brugere er beskyttet mod sådanne angreb.

Hvorfor Permissive SELinux ikke anbefales

For at gentage, behøver den typiske måde at opnå root-adgang på en Android-enhed ikke nødvendigvis at ændre SELinux-statussen. At skifte SELinux-tilstand fra "Enforcing" til "Termissive" er med vilje at deaktivere en af ​​de vigtigste sikkerhedsfunktioner på enheden, hvilket er grunden til brugeren skal udtrykkeligt tillade det at ske ved at installere en specialiseret brugerdefineret kerne eller ændre parametrene for det eksisterende opstartsbillede. En dårligt kodet mod, der mangler en ordentlig SELinux-politik, tvinger normalt slutbrugere til at skifte til eftergivende SELinux og udvider i det væsentlige angrebsoverfladen. Det er præcis, hvad udvikleren vvb2060 demonstreret, når de offentliggjort en proof of concept privilegie-eskaleringsmetode hvor det eneste krav for at få kontrol er tilladende SELinux.

Indtast Magica

For en bruger at få fuld root-adgang på deres egen enhed, der kører Android 10 (eller nyere) med SELinux sat til permissive, er det chokerende nemt at gør: Alt du skal gøre er at trykke på installer, og "Magica" vil automatisk få root-adgang i en tjeneste og installere Magisk til opstarten billede. Dette er noget langt bredere i omfang end blot at justere din enhed. Ifølge XDA Senior Recognized Developer og Magisk-vedligeholder topjohnwu, enhver vilkårlig app, inklusive malware, kan permanent roote din enhed uden dit samtykke og tilladelse ved at bruge PoC.

Hvis du spekulerer på på et teknisk niveau, hvad Magica udnytter, forklarede topjohnwu følgende i et Reddit-indlæg:

"Når SELinux er permissiv under opstart, vil zygote vide dette og deaktivere seccomp syscall-filtre. Dette frigør dybest set, hvilke systemopkald der er tilladt i 3. parts processer.

På Android 10+ er der en ny "udokumenteret" funktion kaldet "App Zygote", hvor tredjeparts apps får lov til at skabe sin egen Zygote til "Isolated Services" (også næsten udokumenteret). Både "App Zygote" og "Isolated Services" er specielle funktioner designet til Chrome/Webview*. App Zygote-processer kører med specielle tilladelser, og med seccomp deaktiveret kan den kalde setuid 0 og eskalere sine privilegier og få root-adgang.

Det er stadig på en eller anden måde restriktivt i forhold til, hvad normale rodløsninger giver (f.eks. Magisk), men tonsvis af sikkerhedsforanstaltninger i Android vil blive fuldstændig slået, når UID=0. For eksempel er det nok til at blive brugt til at patche boot-billeder, hvilket betyder, at det kan bruges til at injicere malware såsom modificeret Magisk for at hjælpe det med at få "rigtige" root-tilladelser.

Opdatering: hvad kan UID=0 selv gøre? Inden for Androids rammer har næsten alle tjenester et blindt grønt lys, når anmodningsprocessens UID er 0. Dette betyder, at denne rodproces er i stand til at manipulere tonsvis af ting ved hjælp af Android-specifikke API'er (f.eks. ActivityManager)"

*Ifølge udvikler aviraxp, er disse to funktioner mere generelt designet "til at dele ressourcer og hukommelse mellem flere isolerede processer."

Konklusion

I betragtning af den uoprettelige skade, der kan påføres brugere, der er målrettet af malware i et tilladeligt SELinux-miljø, anbefaler vi kraftigt, at alle fortsætter med at håndhæve det, medmindre det er absolut nødvendigt. Selvom vi bare er heldige at have en proof of concept-udnyttelse, har vi ingen idé om, hvor mange malware-forfattere allerede kender til denne angrebsvej. Når alt kommer til alt, vil et offer fortsat være uvidende om den kompromitterede tilstand af deres enhed, hvis de ikke gjorde det vidne til, at udnyttelsen bliver brugt aktivt, hvilket ikke er svært at opnå for en useriøs app, der har vedvarende rod adgang.