PSA: Wees op je hoede als je iets installeert terwijl SELinux op permissief staat

Een ongedocumenteerde Android-functie maakt het mogelijk dat elke willekeurige app root-toegang krijgt op een tolerante SELinux-omgeving. Lees verder om meer te weten!

In de wereld van Android-modding beschouwen mensen root-toegang vaak als de hoeksteen van alles. Hiermee kunnen gebruikers de volledige controle over hun apparaten overnemen en functies toevoegen die niet altijd beschikbaar zijn in de standaardconfiguratie. Maar zoals ze zeggen: "met grote macht komt grote verantwoordelijkheid" - is het niet verstandig om het beveiligingsmodel van Android te omzeilen, tenzij je weet waar je aan begint. Voor ervaren Android-enthousiastelingen op onze forums: u bent zich waarschijnlijk bewust van de mogelijkheid dat er backdoors op uw apparaat bestaan, en De kans is groter dat je een vertrouwde, root-enabled mod gebruikt bovenop de nieuwste Android-versie met de nieuwste beveiliging pleisters. Dat gezegd hebbende, ken je misschien een paar mensen die het niet echt schelen welke root-tweaks ze installeren, zolang ze maar schijnbaar voor hen werken. Dit is de reden waarom je nog steeds een vrachtwagen vol mods kunt vinden die alleen werken als SELinux op permissief is ingesteld, wat op zijn beurt hun gebruikers extreem vatbaar maakt voor veiligheidsbedreigingen.

Wat is SELinux

SELinux, of Beveiligingsverbeterde Linux, is een Linux-kernelbeveiligingsmodule die speciaal is ontworpen voor toegang tot en beheer van beveiligingsbeleid. Oorspronkelijk geïntroduceerd in Android 4.3 Jelly Bean en sinds Android standaard ingesteld op de handhavingsmodus 4.4 KitKat, SELinux helpt bij het afdwingen van toegangscontrolerechten en probeert escalatie van privileges te voorkomen aanvallen. In een notendop fungeert SELinux als een hindernis voor ongeoorloofde controle over uw apparaat, zoals een app of kwetsbaarheid die erop gericht is om kwaadwillig root-toegang te verkrijgen. SELinux standaard op "Enforcing" instellen is een van de belangrijkste manieren waarop normale gebruikers tegen dergelijke aanvallen worden beschermd.

Waarom Permissive SELinux niet wordt aanbevolen

Om nogmaals te benadrukken: de typische manier om root-toegang op een Android-apparaat te verkrijgen hoeft niet noodzakelijkerwijs de SELinux-status te veranderen. Het verschuiven van de SELinux-modus van "Enforcing" naar "Permissive" schakelt opzettelijk een van de belangrijkste beveiligingsfuncties op het apparaat uit, en dat is de reden waarom de gebruiker moet dit expliciet toestaan ​​door een gespecialiseerde aangepaste kernel te installeren of de parameters van de bestaande opstartimage te wijzigen. Een slecht gecodeerde mod die geen goed SELinux-beleid heeft, dwingt eindgebruikers meestal om over te schakelen naar tolerante SELinux en vergroot in essentie het aanvalsoppervlak. Dat is precies wat ontwikkelaar vvb2060 gedemonstreerd toen ze publiceerde een proof of concept-escalatiemethode voor privileges waarbij de enige vereiste om controle te krijgen tolerante SELinux is.

Magica binnenkomen

Het is schrikbarend eenvoudig voor een gebruiker om volledige root-toegang te krijgen op zijn eigen apparaat met Android 10 (of hoger) en SELinux ingesteld op permissief. do: Het enige wat u hoeft te doen is op Install drukken, en "Magica" krijgt automatisch root-toegang in een service en installeert Magisk op de boot afbeelding. Dit is iets dat veel breder is dan alleen het aanpassen van uw apparaat. Volgens XDA Senior Recognised Developer en Magisk-onderhouder topjohnwu, elke willekeurige app, inclusief malware, kan uw apparaat permanent rooten zonder uw toestemming en toestemming door gebruik te maken van de PoC.

Als je je op technisch niveau afvraagt ​​wat Magica exploiteert, legde topjohnwu het volgende uit een Reddit-bericht:

"Als SELinux permissief is tijdens het opstarten, zal zygote dit weten en de seccomp syscall-filters uitschakelen. Dit beperkt feitelijk de beperkingen welke systeemaanroepen zijn toegestaan ​​in processen van derden.

Op Android 10+ is er een nieuwe "ongedocumenteerde" functie genaamd "App Zygote", waarbij apps van derden hun eigen Zygote mogen spawnen voor "geïsoleerde services" (ook bijna ongedocumenteerd). Zowel "App Zygote" als "Geïsoleerde Services" zijn speciale functies ontworpen voor Chrome/Webview*. App Zygote-processen worden uitgevoerd met speciale machtigingen, en als seccomp is uitgeschakeld, kan het setuid 0 aanroepen en zijn privileges escaleren en root-toegang krijgen.

Het is op de een of andere manier nog steeds beperkend vergeleken met wat normale root-oplossingen bieden (bijvoorbeeld Magisk), maar talloze beveiligingsmaatregelen in Android zullen volledig teniet worden gedaan wanneer UID = 0. Het is bijvoorbeeld voldoende om te worden gebruikt om opstartimages te patchen, wat betekent dat het kan worden gebruikt om malware zoals het aangepaste Magisk te injecteren om het te helpen "echte" rootrechten te verkrijgen.

Update: wat kan UID=0 zelf doen? Binnen het raamwerk van Android hebben bijna alle services een blind groen licht wanneer de UID van het aanvraagproces 0 is. Dit betekent dat dit rootproces in staat is om heel veel dingen te manipuleren met behulp van Android-specifieke API's (bijvoorbeeld ActivityManager)."

*Volgens ontwikkelaar aviraxp, zijn deze twee functies meer in het algemeen ontworpen "voor het delen van bronnen en geheugen tussen meerdere geïsoleerde processen."

Conclusie

Gezien de onherstelbare schade die kan worden toegebracht aan gebruikers die het doelwit zijn van malware in een tolerante SELinux-omgeving, raden we iedereen ten zeerste aan om dit te handhaven, tenzij absoluut noodzakelijk. Hoewel we geluk hebben dat we een proof-of-concept-exploit hebben, hebben we geen idee hoeveel malware-auteurs al op de hoogte zijn van dit aanvalspad. Een slachtoffer zal zich immers niet bewust blijven van de aangetaste staat van zijn apparaat als hij dat niet doet wees er getuige van dat de exploit actief wordt gebruikt, wat niet moeilijk te realiseren is voor een frauduleuze app met persistente root toegang.