OnePlus 3/3T alglaaduri haavatavus võimaldab muuta SELinuxi kiirkäivituse lubavale režiimile

click fraud protection

OnePlus 3/3T alglaaduri tõsine haavatavus võimaldab ründajatel lülitada SELinuxi olekut jõustavalt lubavale! Loe edasi, et rohkem teada saada!

The OnePlus 3 ja OnePlus 3T on ühed parimad telefonid, mida saate praegu osta. Kuigi tulevased 2017. aasta lipulaevad on tarbijatele veel avaldamata, siis nende puudumisel OnePlus 3/3T domineerivad reaalses maailmas taskukohase hinnaga.

Kuid kui tahame olla seadme hindamisel õiglased, peame tunnistama, et vaatamata OnePlusi parimatele pingutustele ei ole OnePlus 3/3T oma vigadeta. Näiteks oleme varem aru andnud sellistest turvaprobleemidest nagu OnePlusi IMEI üksikasjad lekivad võrgu kaudu, kui otsite oma telefonis värskendusi. Ja nüüd on meil loendisse lisada veel üks turvaprobleem, millel on potentsiaalselt ohtlikumad tagajärjed.

OnePlus 3/3T alglaaduri haavatavus avab uksed pahatahtlikele rünnakutele. Nagu leidis Roee Hay IBM X-Force'i rakenduste turbeuuringute meeskonnast ja avalikustati IBM X-Force Exchange platvormil, võimaldab see haavatavus ründajal manipuleerida seadmete SELinuxi olekuga, lülitades selle seega lubavasse režiimi. Kõik, mida ründaja vajab, on

kas füüsiline juurdepääs seadmesse või kaugjuurdepääs ADB-ühendusele seadmele.

SELinux, või turbega täiustatud Linux, on Linuxi tuuma turbemoodul, mis võimaldab juurdepääsu turvapoliitikatele ja nende haldamist. SELinux tutvustati Androidile alates Android 4.3-st ja seadistati Jõustamine vaikerežiim alates Android 4.4. See kohustuslik juurdepääsukontrollisüsteem aitab jõustada olemasolevaid juurdepääsukontrolli õigusi ja püüab ära hoida privileegide suurendamise ründeid. See takistab teie seadme volitamata juhtimist, nagu rakendus või haavatavus, mille eesmärk on saada pahatahtlikult juurjuurdepääs. SELinuxi seadistamine Jõustamine vaikimisi on see Androidis esimene samm tavakasutajate kaitsmiseks selliste rünnakute eest.

Haavatavust on üsna lihtne ära kasutada – tegelikult tundub, et see on OnePlusi jaoks tohutu möödalaskmine, mitte see, kuidas te oma tüüpilist ärakasutamist ette kujutate. Esiteks taaskäivitab ründaja OnePlus 3/3T kiirkäivitusrežiimi – kui teil on füüsiline juurdepääs, vajutage alglaadimise ajal lihtsalt helitugevuse suurendamise nuppu, kuid kui te seda ei tee, saate anda ADB käsu adb reboot bootloader seadmele. Seadme kiirkäivitusrežiim paljastab USB-liidese, mis ei tohiks lubada lukustatud seadmetes ühtegi turvatundlikku käsku täita. Kuid OnePlus 3/3T puhul lihtsalt väljastades fastboot oem selinux permissive käsk kiirkäivitusliidese kaudu lülitab SELinuxi režiimi Jõustamine juurde Lubav.

fastboot oem selinux permissive
...
OKAY[ 0.045s]
finished. totaltime: 0.047s

...

OnePlus3:/ $ getenforce
Permissive
OnePlus3:/ $

Probleemi veelgi keerulisemaks muutmiseks ei ole OnePlus 3-l ja 3T-l ekraanil Teave ekraanil ühtegi kirjet, mis mainiks seadme praegust SELinuxi olekut. Ohver ei tunne oma seadme ohustatud olekut ka edaspidi, kui ta ei näinud ärakasutamise aktiivset kasutamist. SELinuxi olekukirje puudumine ekraanil Teave ekraanil puudub nii Android 6.0-l põhinevatel avatud beetaversioonidel kui ka Android 7.0 ametlikel ROMidel.

SELinuxi oleku muutmiseks lubavaks on mitu rakendust, näiteks SELinuxModeChanger rakendus. SELinuxi sisselülitamine selle meetodi kaudu ei võimalda oleku taaskäivitamise korral püsida. Kuigi, saate kasutada skripte säilitada Lubav SELinuxi olek raskete taaskäivituste ajal. Mõlemad meetodid nõuavad juurjuurdepääsu, mis tähendab, et kasutajal on juba teada riskidest, millega nad kokku puutuvad. Kuid peamine erinevus SELinuxi režiimi muutmisel Lubav kasutades ülaltoodud haavatavust, on see, et mitte ainult püsib ka kõval taaskäivitamisel, teeb seda ilma juurjuurdepääsu vajamata.

Tänase seisuga pole haavatavuse vastu abinõusid.


VÄRSKENDUS:

Jõudsime poole Sultanxda, üks tunnustatumaid OnePlusi seadmete kohandatud ROM-i arendajaid, et näha, kas ta saaks aidata meil selle probleemi kohta rohkem teada saada. Ta uuris viivitamatult koodi, et leida juurallikas, see on see, mida ta leidis:

See, kuidas "fastboot oem selinux Käsk toimib selles, et see lisab Linuxi käivitamisel kerneli käsureale täiendava argumendi. Täiendav argument on kujul "androidboot.selinux=", kus võib olla "lubav". Seal lähevad asjad naljakaks: "androidboot." argumendid kerneli käsureal sõelub Androidi init. Tavalises Androidi tootmisjärgus ("kasutaja" järg) ignoreeritakse argumenti "androidboot.selinux" täielikult ja selinux on alati sunnitud seda jõustama. Seega koosneb see viga kahest probleemist:

  1. Kasutajad saavad panna alglaaduri edastama lipu, mis tavaliselt muudaks selinuxi inseneri-/silumis-ROM-i ehitamisel lubavaks
  2. OnePlus muutis Androidi initi, et austada lippu "androidboot.selinux" isegi ROM-i tootmisversioonide puhul

Siin on Androidi init konfigureeritud ignoreerima lippu "androidboot.selinux" tootmisjärkude puhul: https://android.googlesource.com/platform/system/core/+/android-6.0.0_r41/init/Android.mk#7

Lipp ALLOW_DISABLE_SELINUX lähtekoodis on seatud väärtusele 1 ainult kasutajate silumise ja insenerijärkude puhul

(Minu ROM-i see ei mõjuta, kuna koostan oma ROM-i tootmisrežiimis (kasutaja))

Nii et "androidboot.selinux" lihtsalt ignoreeritakse minu ROM-is, "fastboot oem selinux" "käsk näib olevat ka OnePlusi loodud, kuna CAF-i avalikes alglaadurite allikates sellist käsku pole. Pealtnäha mõtlen välja neli võimalust, kuidas seda lukustamata alglaaduritega kasutajatele parandada.

  1. Kuuekordselt redigeerige alglaadurit, et muuta kõik stringi "selinux" eksemplarid millekski erinevaks (nt "sclinux"), nii et Androidi init ei tunneks lippu ära
  2. Kuuekordselt redigeerige OxygenOS-i Androidi initi kahendfaili, et asendada kõik faili "androidboot.selinux" eksemplarid failiga midagi muud (nt "androidboot.sclinux"), nii et Androidi init ei tunneks ära androidboot.selinux lipp
  3. Lisage kerneli käsureadraiverile häkkimine, mis sarnaneb minu SafetyNeti möödaviiguga, et peita Androidboot.selinux lipp Androidi initi eest

Soovime tänada Sultanxdat tema aja ja vaeva eest, mis aitas meil aru saada, mis kulisside taga toimub. Oleme võtnud ühendust ka OnePlusiga, kes on olukorrast teadlik ja uurib asja.


Loodame, et OnePlus tunnistab tõsist probleemi avalikult ja on selle lahendamise plaanides läbipaistev.