OnePlus 3/3T -käynnistyslataimen haavoittuvuus mahdollistaa SELinuxin muuttamisen sallivaan tilaan pikakäynnistystilassa

click fraud protection

OnePlus 3/3T -käynnistyslataimen vakavan haavoittuvuuden ansiosta hyökkääjät voivat vaihtaa SELinux-tilan pakottavasta sallivaan! Lue lisää saadaksesi lisätietoja!

The OnePlus 3 ja OnePlus 3T ovat parhaita puhelimia, joita voit ostaa tällä hetkellä. Vaikka vuoden 2017 tulevia lippulaivoja ei ole vielä paljastettu kuluttajille, niiden puuttuessa OnePlus 3/3T hallitsee todellista suorituskykyä edulliseen hintaan.

Mutta jos haluamme olla oikeudenmukaisia ​​laitteen arvioinnissa, Meidän on tunnustettava, että OnePlusin yrityksistä huolimatta OnePlus 3/3T ei ole vailla virheitä. Olemme esimerkiksi raportoineet aiemmin tietoturvaongelmista, kuten OnePlus vuotaa IMEI-tietoja verkon kautta, kun tarkistat puhelimesi päivityksiä. Ja nyt meillä on luetteloon lisättävä toinen tietoturvaongelma, jolla on mahdollisesti vaarallisempia seurauksia.

OnePlus 3/3T: n käynnistyslataimen haavoittuvuus avaa ovia haitallisille hyökkäyksille. Kuten Roee Hay IBM X-Force Application Security Research Teamista ja paljastettiin IBM X-Force Exchange -alustalla

, tämän haavoittuvuuden avulla hyökkääjä voi manipuloida SELinux-tilaa laitteissa ja vaihtaa siten sen sallivaan tilaan. Kaikki mitä hyökkääjä tarvitsee joko fyysinen pääsy laitteeseen tai etäkäyttö ADB-yhteyteen laitteeseen.

SELinux, tai Security-Enhanced Linux, on Linux-ytimen suojausmoduuli, joka mahdollistaa suojauskäytäntöjen käytön ja hallinnan. SELinux esiteltiin Androidille alkaen Android 4.3:sta ja asetettiin Täytäntöönpano oletustila Android 4.4:stä lähtien. Tämä pakollinen kulunvalvontajärjestelmä auttaa valvomaan olemassa olevia kulunvalvontaoikeuksia ja yrittää estää käyttöoikeuksien eskalaatiohyökkäyksiä. Tämä estää luvattoman hallinnan laitteesi, kuten sovelluksen tai haavoittuvuuden, joka pyrkii saamaan pääkäyttäjän oikeudet haitallisesti. Asetetaan SELinux Täytäntöönpano oletusarvoisesti Androidissa toimii ensimmäisenä askeleena tavallisten käyttäjien suojelemiseksi tällaisilta hyökkäyksiltä.

Haavoittuvuutta on melko yksinkertaista hyödyntää – itse asiassa se näyttää olevan valtava laiminlyönti OnePlusin puolelta kuin miltä kuvittelet tyypillisen hyväksikäytön näyttävän. Ensin hyökkääjä käynnistää OnePlus 3/3T: n uudelleen "fastboot"-tilaan - jos sinulla on fyysinen käyttöoikeus, paina vain äänenvoimakkuuden lisäyspainiketta käynnistyksen aikana, mutta jos et, voit antaa ADB-komennon. adb reboot bootloader laitteeseen. Laitteen pikakäynnistystila paljastaa USB-liitännän, jonka ei pitäisi sallia suojausherkän komennon suorittamista lukituissa laitteissa. Mutta OnePlus 3/3T: ssä yksinkertaisesti myöntämällä fastboot oem selinux permissive komento pikakäynnistysliittymän kautta vaihtaa SELinux-tilan Täytäntöönpano to Salliva.

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

...

OnePlus3:/ $ getenforce
Permissive
OnePlus3:/ $

Ongelman vaikeuttamiseksi entisestään OnePlus 3:ssa ja 3T: ssä ei ole Tietoja-näytössä mitään merkintää laitteen nykyisestä SELinux-tilasta. Uhri ei edelleenkään huomaa laitteensa vaarantunutta tilaa, jos hän ei ole nähnyt hyväksikäyttöä aktiivisesti. SELinux-tilamerkinnän puuttuminen Tietoja-näytöstä puuttuu sekä Android 6.0 -pohjaisista Open Beta -julkaisuista että Android 7.0:n virallisista ROM-levyistä.

On olemassa useita sovelluksia, jotka vaihtavat SELinux-tilan sallivaksi, kuten SELinuxModeChanger sovellus. SELinuxin vaihtaminen tällä menetelmällä ei salli tilan säilymistä uudelleenkäynnistyksen jälkeen. Tosin voit käyttää skriptejä ylläpitämään Salliva SELinux-tila kovien uudelleenkäynnistysten aikana. Molemmat menetelmät edellyttävät pääkäyttäjän oikeuksia, mikä tarkoittaa, että käyttäjä tietää jo riskeistä, joille he ovat alttiina. Mutta suurin ero SELinux-tilan vaihtamisessa Salliva käyttämällä edellä haavoittuvuutta on, että se ei vain jatkuu kovien uudelleenkäynnistysten aikana, se tekee niin ilman pääkäyttäjän oikeuksia.

Haavoittuvuutta vastaan ​​ei ole tällä hetkellä korjauskeinoja.


PÄIVITTÄÄ:

Otimme yhteyttä Sultanxda, yksi tunnetuimmista OnePlus-laitteiden mukautetuista ROM-kehittäjistä, jotta voimme nähdä, voisiko hän auttaa meitä oppimaan lisää tästä ongelmasta. Hän kaivoi nopeasti koodiin löytääkseen juurilähteen, tämän hän löysi:

Tapa, jolla "fastboot oem selinux "-komento toimii, koska se lisää ylimääräisen argumentin ytimen komentoriville Linuxin käynnistyessä. Ylimääräinen argumentti on muodossa "androidboot.selinux=", missä voi olla "salliva". Siellä asiat ovat hauskoja: "androidboot.Androidin init jäsentää ytimen komentorivin argumentit. Normaalissa Android-tuotantoversiossa ("käyttäjän" koontiversiossa) "androidboot.selinux"-argumentti jätetään täysin huomiotta ja selinux pakotetaan aina pakottamaan. Joten tämä bugi koostuu kahdesta ongelmasta:

  1. Käyttäjät voivat saada käynnistyslataimen välittämään lipun, joka tavallisesti sallisi selinuxin suunnittelu-/virheenkorjausROM-koontiversiossa
  2. OnePlus muokkasi Androidin käynnistystä kunnioittaakseen "androidboot.selinux" -lippua jopa tuotantoROM-versioissa

Tässä Androidin aloitusohjelma on määritetty jättämään "androidboot.selinux" -lippu huomioimatta tuotantorakennuksissa: https://android.googlesource.com/platform/system/core/+/android-6.0.0_r41/init/Android.mk#7

Lähdekoodin ALLOW_DISABLE_SELINUX-lippu on asetettu arvoon 1 vain userdebug- ja suunnitteluversioille

(Tämä ei vaikuta ROM-muistiini, koska rakennan ROM-levyni tuotantotilassa (käyttäjä)

Joten "androidboot.selinux" ohitetaan ROM-muistissani, "fastboot oem selinux" "-komento näyttää myös olevan OnePlusin luoma, koska sellaista komentoa ei ole CAF: n julkisissa käynnistyslatauslähteissä. Päästäni ajattelen neljää tapaa korjata tämä käyttäjille, joilla on lukitsemattomat käynnistyslataimet:

  1. Hex-muokkaa käynnistyslatainta muuttaaksesi kaikki merkkijonon "selinux" esiintymät joksikin muuksi (kuten "sclinux"), jotta Androidin init ei tunnista lippua
  2. Hex-muokkaa Android-init-binaarista OxygenOS: ssa korvataksesi kaikki "androidboot.selinux" -esiintymät muotoon jotain erilaista (kuten "androidboot.sclinux"), jotta Android-init ei tunnista androidboot.selinux-lippu
  3. Lisää ytimen komentoriviohjaimeen hakkerointi, joka on samanlainen kuin minun SafetyNet-ohitus, jotta "androidboot.selinux"-lippu voidaan piilottaa Androidin aloitusohjelmasta

Haluamme kiittää Sultanxdaa hänen ajastaan ​​ja vaivannäöstään auttaa meitä selvittämään, mitä kulissien takana tapahtuu. Olemme myös ottaneet yhteyttä OnePlusiin, joka on tietoinen tilanteesta ja tutkii asiaa.


Toivomme, että OnePlus tunnustaa julkisesti vakavan ongelman ja on avoin suunnitelmissaan sen korjaamiseksi.