PSA: Legyen óvatos, ha bármit telepít, ha a SELinux megengedőre van állítva

Egy nem dokumentált Android-funkció lehetővé teszi, hogy tetszőleges alkalmazás root hozzáférést szerezzen egy megengedő SELinux környezetben. Olvasson tovább, ha többet szeretne megtudni!

Az Android modding világában az emberek hajlamosak a root hozzáférést minden dolog sarokkövének tekinteni. Lehetővé teszi a felhasználók számára, hogy teljes mértékben átvehessék az irányítást eszközeik felett, és olyan funkciókat adhassanak hozzá, amelyek nem mindig állnak rendelkezésre az állománykonfigurációban. De ahogy mondják – „a nagy erővel nagy felelősség is jár” – nem bölcs dolog megkerülni az Android biztonsági modelljét, hacsak nem tudod, mibe keveredsz. A fórumunkon részt vevő veterán Android-rajongók valószínűleg tisztában vannak azzal a lehetőséggel, hogy a hátsó ajtók létezhetnek az eszközön, és nagyobb valószínűséggel fog egy megbízható root-kompatibilis modot futtatni a legújabb Android-verzión felül, a legújabb biztonsággal foltok. Ennek ellenére ismerhet néhány embert, akiket nem igazán érdekel, hogy milyen gyökér-tweekeket telepítenek, amíg látszólag nekik működnek. Ez az oka annak, hogy még mindig rengeteg olyan modot találhatunk, amelyek csak akkor működnek, ha a SELinux megengedőre van állítva, ami viszont rendkívül érzékenyvé teszi a felhasználókat a biztonsági fenyegetésekre.

Mi az a SELinux

SELinux, ill Fokozott biztonságú Linux, egy Linux kernel biztonsági modul, amelyet kifejezetten a biztonsági szabályzatok eléréséhez és kezeléséhez terveztek. Eredetileg az Android 4.3 Jelly Beanben vezették be, és az Android óta alapértelmezettként az Enforcing módra állították 4.4 A KitKat, a SELinux segít a hozzáférés-vezérlési jogok érvényesítésében és a jogosultságok eszkalációjának megakadályozására támadások. Dióhéjban a SELinux akadályként hat az eszköze feletti jogosulatlan irányításra, például egy alkalmazásra vagy egy sebezhetőségre, amely rosszindulatú gyökér hozzáférést kíván elérni. A SELinux alapértelmezés szerinti „Enforcing” beállítása az egyik legfontosabb módja annak, hogy a normál felhasználókat megvédjék az ilyen támadásoktól.

Miért nem ajánlott a Permissive SELinux használata?

Megismételve, az Android-eszközök root hozzáférésének tipikus módja nem feltétlenül szükséges a SELinux állapotának megváltoztatásához. A SELinux mód "Enforcing"-ról "Permissive"-re váltása szándékosan letiltja az egyik kulcsfontosságú biztonsági funkciót az eszközön, ezért a felhasználónak ezt kifejezetten engedélyeznie kell egy speciális egyéni kernel telepítésével vagy a meglévő rendszerindító lemezkép paramétereinek módosításával. A rosszul kódolt, megfelelő SELinux-házirendet nem tartalmazó mod általában arra kényszeríti a végfelhasználókat, hogy áttérjenek a megengedő SELinuxra, és lényegében kiterjeszti a támadási felületet. Pontosan ez a fejlesztő vvb2060 mutatták be, amikor közzétett egy proof of concept privilégium eszkalációs módszert ahol az irányítás megszerzésének egyetlen követelménye a megengedő SELinux.

Lépjen be a Magicába

Megdöbbentően egyszerű, hogy a felhasználó teljes root hozzáférést kapjon Android 10 (vagy újabb) rendszert futtató eszközén, ha a SELinux megengedőre van állítva. do: Csak annyit kell tennie, hogy nyomja meg a telepítést, és a "Magica" automatikusan root hozzáférést kap egy szolgáltatáshoz, és telepíti a Magisk programot a rendszerindításra kép. Ez sokkal szélesebb körű, mint az eszköz módosítása. Az XDA Senior Recognised Developer és a Magisk karbantartó szerint topjohnwu, bármilyen tetszőleges alkalmazás, beleértve a rosszindulatú programokat is, véglegesen rootolhatja eszközét az Ön beleegyezése és engedélye nélkül a PoC használatával.

Ha technikai szinten kíváncsi arra, hogy a Magica mit aknáz ki, topjohnwu a következőket magyarázta egy Reddit bejegyzés:

"Ha a SELinux engedélyezve van a rendszerindítás során, a zygote tudni fogja ezt, és letiltja a seccomp syscall szűrőket. Ez alapvetően nem korlátozza, hogy milyen rendszerhívások engedélyezettek a harmadik féltől származó folyamatokban.

Az Android 10+ rendszeren van egy új „nem dokumentált” funkció, az „App Zygote”, ahol a harmadik féltől származó alkalmazások létrehozhatják saját Zygote-ját az „Isolated Services” számára (szintén szinte dokumentálatlan). Mind az „App Zygote”, mind az „Isolated Services” a Chrome/Webview* számára tervezett speciális funkciók. Az App Zygote folyamatai speciális engedélyekkel futnak, és a seccomp letiltásával meghívhatja a setuid 0-t, kiterjesztheti jogosultságait és root hozzáférést kaphat.

Valahogy még mindig korlátozó a normál gyökérmegoldásokhoz képest (pl. Magisk), azonban az Android rengeteg biztonsági intézkedése teljesen megsemmisül, ha UID=0. Például elég, ha a rendszerindító képek javítására használják, ami azt jelenti, hogy rosszindulatú programok, például módosított Magisk beszúrására használható, hogy "igazi" root jogosultságokat szerezzen.

Frissítés: mit tud maga az UID=0? Az Android keretein belül szinte minden szolgáltatás vak zöld lámpával világít, ha a kérelmező folyamat UID-je 0. Ez azt jelenti, hogy ez a gyökérfolyamat rengeteg dolgot képes manipulálni Android-specifikus API-k (pl. ActivityManager) segítségével."

* A fejlesztő szerint aviraxp, ezt a két funkciót általánosabban "az erőforrások és a memória megosztására több elszigetelt folyamat között" tervezték.

Következtetés

Tekintettel arra, hogy egy megengedő SELinux környezetben milyen helyrehozhatatlan károkat okozhat a rosszindulatú programok által megcélzott felhasználóknak, határozottan azt javasoljuk, hogy mindenki tartsa be a végrehajtást, hacsak nem feltétlenül szükséges. Bár csak szerencsénk van, hogy van bizonyítékunk a koncepció kihasználására, fogalmunk sincs, hány malware-szerző tud már erről a támadási útról. Végtére is, az áldozat továbbra is figyelmen kívül hagyja eszköze kompromittált állapotát, ha nem tette szemtanúja, hogy a kizsákmányolást aktívan használják, amit nem nehéz elérni egy olyan gaz alkalmazás esetén, amely állandó gyökérrel rendelkezik hozzáférés.