OnePlus 8 Pron mukautettu Kirisakura-ydin mahdollistaa Control Flow Integrityn (CFI) turvallisuuden parantamiseksi

Tekniset tiedot ohjausvirtauksen eheydestä

"Ytimen valtava määrä toimintoosoittimia edistää tämän hyökkäysmallin suosiota. Vaikka hyökkääjät eivät pysty syöttämään omaa suoritettavaa koodiaan, olemassa olevan ytimen koodin mielivaltaiset osat voidaan suorittaa niiden hyväksikäytön loppuunsaattamiseksi.

LLVMCFI yrittää lieventää näitä hyökkäyksiä rajoittamalla kelvollisia puhelukohteita ja pakottamalla ytimen paniikkiin havaitessaan CFI-rikkomusta. Jokaisen epäsuoran haaran eteen lisätään tarkistus sen varmistamiseksi, että kohdeosoite osoittaa kelvolliseen funktioon, jolla on oikea allekirjoitus. Tämä estää epäsuoraa haaraa hyppäämästä mielivaltaiseen koodipaikkaan ja jopa rajoittaa kutsuttavia toimintoja. Hyökkääjä voi silti muuttaa toimintoosoittimen, jos virhe sallii pääsyn. Mutta LLVM: n CFI rajoittaa 55 % epäsuorista puheluista enintään 5 mahdolliseen kohteeseen ja 80 % enintään 20 kohteeseen. Määrittääkseen kaikki kelvolliset puhelukohteet jokaiselle epäsuoralle haaralle kääntäjän on nähtävä koko ydinkoodi kerralla.

LTO: n käyttö (Linkkiajan optimointi) tekee tämän mahdolliseksi. LLVM: n CFI vaatii LTO: n käyttöä, jossa kääntäjä tuottaa LLVM-spesifisen bittikoodin kaikille C: ille. käännösyksiköitä, ja LTO-tietoinen linkkeri käyttää LLVM-taustaa bittikoodin yhdistämiseen ja sen kääntämiseen natiivi koodi.

CFI: n käytön sallimisen lisäksi LTO saavuttaa paremman suorituskyvyn koko ohjelman analysoinnin ja moduulien välisen optimoinnin avulla.

ThinLTO on lähes saavuttanut LTO: n suorituskyvyn paranemisen. ThinLTO-tilassa, kuten tavallisessa LTO-tilassa, Kalahtaa lähettää LLVM-bittikoodin käännösvaiheen jälkeen. ThinLTO-bittikoodia on täydennetty moduulin kompaktilla yhteenvedolla. Linkkivaiheen aikana vain yhteenvedot luetaan ja yhdistetään yhdistetyksi yhteenvetoindeksiksi, joka sisältää funktioiden sijaintihakemiston myöhempää moduulien välistä funktioiden tuontia varten. Tämän jälkeen yhdistetylle yhteenvetoindeksille tehdään nopea ja tehokas koko ohjelman analyysi. ThinLTO mahdollistaa monisäikeisen linkitysprosessin, mikä vähentää käännösaikaa.

Koska CFI keskeyttää ohjelman suorittamisen osuessaan tiettyihin vikaluokkiin, se luokitellaan myös vianetsintätyökaluksi, kuten aiemmin mainittiin, kun sitä käytetään sallivassa tilassa. Salliva CFI näyttää CFI-rikkomukset ytimen lokissa ilman ytimen paniikkia. Ydinytimillä 4.9 (Pixel 3 sukupolven laitteet) ja 4.14 (Pixel 4 sukupolven laitteet) oli useita toimintotyyppejä epäsuhta, joka johti CFI-rikkomuksiin, jotka Google korjasi ytimessä/commonissa saatavilla olevissa korjaustiedostoissa repot.

Android-ekosysteemin luonteesta johtuen nämä epäsuhtaudet löytyvät kuitenkin todennäköisesti myös SoC-valmistajan (tässä tapauksessa Qualcomm) tai OEM- (OnePlus) -kohtaisesta koodista. Useita CFI-rikkomuksia Qualcomm-koodissa, jotka eroavat 4.19-ytimestä, korjattiin OnePlus 8 Pron Kirisakura-ytimeen (esimerkki: 1, 2, 3).

Ytimen suorittaminen sallivalla CFI: llä paljasti CFI-rikkomuksia myös OnePlus-ajureihin liittyvässä koodissa (oleelliset sitoumukset löytyvät tässä ja tässä). OnePlus 8 Pron Kirisakura-ydin toimii CFI-valmiuksella, mikä suojaa käyttäjiään tällaisilta koodin uudelleenkäyttöhyökkäyksiltä."

Lue lisää

Tee-se-itse-harrastaja (eli vanhojen PC-osien pelastaja). Skanda on ollut innokas Androidin käyttäjä Eclair-päivistä lähtien, ja se seuraa mielellään myös yksilevyisen tietojenkäsittelyn maailman viimeaikaisia ​​kehitystrendejä.