A OnePlus 3/3T rendszerbetöltő súlyos biztonsági rése lehetővé teszi a támadók számára, hogy a SELinux állapotát Enforcingról Engedélyesre váltsák! Olvasson tovább, ha többet szeretne megtudni!
A OnePlus 3 és a OnePlus 3T a jelenleg megvásárolható legjobb telefonok közé tartoznak. Míg 2017 közelgő zászlóshajóit még nem tárták a fogyasztók elé, ezek hiányában a A OnePlus 3/3T uralja a valós teljesítményt megfizethető áron.
De ha igazságosak akarunk lenni az eszköz értékelése során, el kell ismernünk, hogy a OnePlus minden erőfeszítése ellenére a OnePlus 3/3T nem hibás. Korábban például már beszámoltunk olyan biztonsági problémákról, mint pl A OnePlus kiszivárogtatja az IMEI-adatokat hálózaton keresztül, amikor frissítéseket keres a telefonon. És most van egy másik biztonsági probléma, amelyet hozzá kell adnunk a listához, ez a potenciálisan veszélyesebb következményekkel járó probléma.
A OnePlus 3/3T rendszerbetöltőjének sebezhetősége rosszindulatú támadásokat nyit meg. Amint azt Roee Hay, az IBM X-Force Application Security Research Team munkatársa megállapította
SELinux, vagy a Security-Enhanced Linux, egy Linux kernel biztonsági modul, amely lehetővé teszi a biztonsági házirendek elérését és kezelését. A SELinux-ot az Android 4.3-tól kezdődően vezették be az Android rendszerbe, és be volt állítva Kikényszerítése alapértelmezett mód az Android 4.4 óta. Ez a kötelező beléptetőrendszer segít a meglévő hozzáférés-felügyeleti jogok érvényesítésében, és megkísérli megakadályozni a jogosultság eszkalációt okozó támadásokat. Ez 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 beállítása Kikényszerítése alapértelmezés szerint az Androidon az első lépés, hogy megvédje a normál felhasználókat az ilyen támadásoktól.
A sérülékenységet meglehetősen egyszerű kihasználni – valójában úgy tűnik, hogy ez a OnePlus hatalmas mulasztása, nem pedig az, hogy milyennek képzelnéd a tipikus kizsákmányolást. Először a támadó újraindítja a OnePlus 3/3T-t „gyorsindítás” módba – ha rendelkezik fizikai hozzáféréssel, egyszerűen nyomja meg a Hangerő-növelő gombot a rendszerindítás során, de ha nem, akkor kiadhatja az ADB parancsot. adb reboot bootloader
a készülékhez. Az eszköz gyorsindítási módja egy USB interfészt tesz elérhetővé, amely nem engedheti meg a biztonságra érzékeny parancsok végrehajtását zárolt eszközökön. De a OnePlus 3/3T esetében egyszerűen ki kell adni a fastboot oem selinux permissive
parancs a fastboot felületen keresztül váltja a SELinux módot innen Kikényszerítése nak nek Megengedő.
fastboot oem selinux permissive
...
OKAY[ 0.045s]
finished. totaltime: 0.047s...
OnePlus3:/ $ getenforce
Permissive
OnePlus3:/ $
A probléma további bonyolítása érdekében a OnePlus 3 és 3T nem rendelkezik semmilyen bejegyzéssel az „About Screen” (Névjegy) képernyőn, amely megemlítené az eszköz jelenlegi SELinux állapotát. Az áldozat továbbra is figyelmen kívül hagyja eszköze veszélyeztetett állapotát, ha nem volt szemtanúja a kizsákmányolás aktív használatának. A SELinux állapotbejegyzés hiánya az „About Screen” részben hiányzik az Android 6.0 alapú Open Beta kiadásokból és az Android 7.0 hivatalos ROM-jaiból.
Számos alkalmazás létezik a SELinux állapotának Engedélyesre váltására, például a SELinuxModeChanger Alkalmazás. A SELinux átkapcsolása ezzel a módszerrel nem teszi lehetővé az állapot fennmaradását az újraindítás során. Bár lehet szkripteket használni fenntartani a Megengedő SELinux állapot kemény újraindítások során. Mindkét módszer root hozzáférést igényel, ami azt jelenti, hogy a felhasználó már ismeri azokat a kockázatokat, amelyeknek ki van téve. De a fő különbség a SELinux mód megváltoztatásával Megengedő a fenti sérülékenység felhasználása az, hogy nem csak kemény újraindítások során is fennáll, ezt teszi root hozzáférés nélkül.
A sérülékenység ellen a mai napig nincs jogorvoslat.
FRISSÍTÉS:
felé nyúltunk Sultanxda, az egyik legelismertebb egyéni ROM-fejlesztő a OnePlus eszközökhöz, hátha segít nekünk többet megtudni erről a problémáról. Azonnal beleásta magát a kódba, hogy megtalálja a gyökérforrást, ezt találta:
Úgy, ahogy a "fastboot oem selinux
- A felhasználók beállíthatják, hogy a rendszertöltő átadjon egy jelzőt, amely általában engedélyezi a Selinuxot egy mérnöki/hibakereső ROM-felépítésnél
- A OnePlus módosította az Android initjét annak érdekében, hogy tiszteletben tartsa az "androidboot.selinux" jelzőt még az éles ROM-felépítéseknél is
Az Android indítóprogramja itt van úgy konfigurálva, hogy figyelmen kívül hagyja az „androidboot.selinux” jelzőt az éles összeállításoknál: https://android.googlesource.com/platform/system/core/+/android-6.0.0_r41/init/Android.mk#7
Az ALLOW_DISABLE_SELINUX jelző a forráskódban csak 1-re van állítva userdebug és mérnöki buildek esetén
(A ROM-omat ez nem érinti, mert a ROM-omat éles (felhasználói) módban készítem)
Tehát az "androidboot.selinux" egyszerűen figyelmen kívül marad a ROM-omban, a "fastboot oem selinux"
- A rendszerbetöltő hexadecimális szerkesztésével módosítsa a „selinux” karakterlánc összes példányát valami másra (például „sclinux”), hogy a zászlót ne ismerje fel az Android indítóprogramja
- Szerkessze hexal az Android init bináris fájlját az OxygenOS rendszerben, hogy lecserélje az "androidboot.selinux" összes példányát a következőre: valami más (például "androidboot.sclinux"), így az Android init nem ismeri fel a androidboot.selinux zászló
- Adjon hozzá egy feltörést a kernel parancssori illesztőprogramjához, hasonlóan a SafetyNet bypasshoz, hogy elrejtse az "androidboot.selinux" jelzőt az Android indítóprogramja elől.
Szeretnénk megköszönni Sultanxdának az idejét és erőfeszítését, amellyel segített kideríteni, mi történik a színfalak mögött. Megkerestük a OnePlus-t is, aki tisztában van a helyzettel, és vizsgálja az ügyet.
Reméljük, hogy a OnePlus nyilvánosan elismeri a súlyos problémát, és átláthatóan tervezi a megoldást.