„Kirisakura“ tinkintas branduolys, skirtas „OnePlus 8 Pro“, įgalina valdymo srauto vientisumą (CFI), kad būtų užtikrintas didesnis saugumas

Techninė informacija apie valdymo srauto vientisumą

"Daugelio funkcijų rodyklių prieinamumas branduolyje prisideda prie šio atakos modelio populiarumo. Net jei užpuolikai negali įvesti savo vykdomojo kodo, gali būti vykdomos savavališkos esamo branduolio kodo dalys, kad būtų užbaigtas jų išnaudojimas.

LLVMCFI bando sušvelninti šias atakas apribodamas galiojančius skambučių tikslus ir priversdamas branduolio paniką, kai nustato CFI pažeidimą. Prieš kiekvieną netiesioginę šaką pridedamas patikrinimas, patvirtinantis, kad tikslinis adresas nurodo galiojančią funkciją su teisingu parašu. Tai neleidžia netiesioginei šakai peršokti į savavališką kodo vietą ir netgi apriboja funkcijas, kurias galima iškviesti. Užpuolikas vis tiek galės pakeisti funkcijos žymeklį, jei klaida leidžia pasiekti. Tačiau LLVM CFI riboja 55 % netiesioginių skambučių iki daugiausiai 5 galimų taikinių ir 80 % iki 20 tikslų. Norint nustatyti visus galiojančius kiekvienos netiesioginės šakos skambučių tikslus, kompiliatorius turi matyti visą branduolio kodą iš karto.

LTO naudojimas (Nuorodos laiko optimizavimas) leidžia tai padaryti. LLVM CFI reikalauja naudoti LTO, kai kompiliatorius sukuria specifinį LLVM bitų kodą visiems C kompiliavimo vienetų, o LTO žinantis saitas naudoja LLVM užpakalinę programą, kad sujungtų bitų kodą ir sukompiliuotų jį į gimtoji kodas.

Be CFI naudojimo, LTO užtikrina geresnį vykdymo laiką atlikdama visos programos analizę ir kelių modulių optimizavimą.

ThinLTO beveik pasivijo LTO veiklos pagerėjimą. ThinLTO režimu, kaip ir įprastu LTO, Skambinti po kompiliavimo fazės išleidžia LLVM bitkodą. ThinLTO bitkodas papildytas kompaktiška modulio santrauka. Atliekant susiejimo veiksmą, tik santraukos nuskaitomos ir sujungiamos į bendrą suvestinės indeksą, į kurį įtrauktas funkcijų vietų indeksas, skirtas vėlesniam kelių modulių funkcijų importavimui. Po to atliekama greita ir efektyvi visos programos analizė pagal bendrą suvestinį indeksą. „ThinLTO“ leidžia atlikti kelių gijų susiejimo procesą, dėl kurio sutrumpėja kompiliavimo laikas.

Kadangi CFI pertraukia programos vykdymą, kai pasiekia tam tikras klaidų klases, jis taip pat klasifikuojamas kaip klaidų paieškos įrankis, kaip minėta anksčiau, kai naudojamas leistinuoju režimu. Leidžiamasis CFI parodys CFI pažeidimus branduolio žurnale, nesukeldamas branduolio panikos. Pagrindiniai 4.9 („Pixel 3“ kartos įrenginiai) ir 4.14 („Pixel 4“ kartos įrenginiai) branduoliai turėjo keletą funkcijų tipų neatitikimai, dėl kurių atsirado CFI pažeidimų, kuriuos „Google“ pašalino pataisų rinkiniuose, pasiekiamuose branduolyje / bendrajame atpirkimo sandoriai.

Tačiau dėl „Android“ ekosistemos pobūdžio šie neatitikimai gali būti rasti ir specifiniame SoC gamintojo (šiuo atveju „Qualcomm“) arba OEM („OnePlus“) kode. „OnePlus 8 Pro“ Kirisakura branduolyje buvo ištaisyti keli „Qualcomm“ kodo CFI pažeidimai, kurie skiriasi nuo 4.19 branduolio (pavyzdys: 1, 2, 3).

Paleidus branduolį per leistiną CFI, CFI pažeidimai taip pat buvo susiję su „OnePlus“ tvarkyklėmis (galima rasti atitinkamus įsipareigojimus čia ir čia). „OnePlus 8 Pro“ skirtas Kirisakura branduolys veikia su CFI, apsaugančiu savo vartotojus nuo tokio pobūdžio pakartotinio kodo naudojimo atakų.

Skaityti daugiau

„Pasidaryk pats“ entuziastas (t. y. senų kompiuterio dalių gelbėtojas). Nuo Eclair laikų aistringas Android naudotojas, Skanda taip pat mėgsta sekti naujausias vienos plokštės kompiuterių plėtros tendencijas.