Kees Cook je predstavil nove popravke za izboljšanje varnosti jedra Linuxovega jedra

Linux

Kees Cook, nekdanji glavni sistemski administrator na kernel.org in vodja varnostne skupine Ubuntu, ki zdaj pri Googlu dela za zaščito Androida in ChromeOS-a, je izdal nabor popravkov, ki naključno kompenzirajo zamike skladov jedra pri obdelavi sistemskih klicev. Popravki izboljšajo varnost jedra s spreminjanjem lokacije skladovnice, lali zaradi tega so napadi skladov veliko težji in manj uspešni

Prvotna ideja za obliž pripada projektu PaX RANDKSTACK. Leta 2019 je Elena Reshetova, inženirka pri Intelu, poskušala ustvariti izvedbo te ideje, primerne za vključitev v glavno sestavo jedra Linuxa.

Pozneje je pobudo prevzel Kees Cook ki je predstavil primerno izvedbo za glavno različico jedra in katere popravki so načrtovani za različico 5.13 Linuxa.

Način bo privzeto onemogočen in za njegovo omogočanje je na voljo parameter ukazne vrstice jedra "Randomize_kstack_offset = vklop / izklop»In nastavitve CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, Poleg tega se splošni stroški za omogočanje načina ocenjujejo na približno 1% izgube učinkovitosti.

Bistvo predlagane zaščite je izbira naključnega odmika skladov za vsak sistemski klic, kar otežuje določanje postavitve sklada v pomnilniku, tudi če so prejeti podatki o naslovu, saj se bo osnovni naslov sklada spremenil ob naslednjem klicu.

Za razliko od izvajanja PAX RANDKSTACK, v popravkih, predlaganih za vključitev v jedro, randomizacija v začetni fazi ni izvedena, vendar po nastavitvi strukture pt_regs, ki onemogoča uporabo metod na osnovi ptrace za določanje naključnega odmika med dolgotrajnim sistemskim klicem.

Ker so se zaščite skladov jedra Linuxa nenehno izboljševale (preslikava skladov na osnovi vmap z zaščitnimi stranmi, odstranjevanje thread_info, STACKLEAK), so morali napadalci najti nove načine za delovanje svojih podvigov.

V situacijah, kjer imajo, in se še naprej zanašajo na determinizem skladov jedra VMAP_STACK in THREAD_INFO_IN_TASK_STRUCT niso bili relevantni. Na primer, naslednji nedavni napadi bi bili ovirani, če odmik sklada med sistemskimi klici ne bi bil determinističen

Namen funkcije randomize_kstack_offset je dodati naključni odmik ko je pt_regs potisnjen na sklad in preden je preostali niz niti uporabljen med obdelavo sistemskih klicev, in ga spremenite vsakič, ko postopek izda sistemski klic. Vir naključnosti je trenutno definiran v arhitekturi (vendar x86 uporablja majhen bajt rdtsc ()).

Izboljšave v prihodnosti so možne za različne vire entropije, vendar zunaj obsega tega popravka. Da bi dodali več nepredvidljivosti, so na koncu sistemskih klicev izbrani novi odmiki (katerih čas bi moral biti iz uporabniškega prostora manj enostaven za merjenje kot v času vstopa v sistemski klic) in so shranjeni v eni spremenljivki na CPU, tako da življenjska doba vrednosti ne ostane izrecno vezana na eno samo nalogo.

Za to na x86 ni vidnih sprememb, ker je varčevalnik skladov za enoto za prevajanje že brezpogojno onemogočen, vendar je sprememba potrebna v arm64. Na žalost ni atributa, s katerim bi lahko onemogočili shrambo sklada za določene funkcije. Primerjava s funkcijo PaX RANDKSTACK: Funkcija RANDKSTACK naključno izbere mesto začetka sklada (cpu_current_top_of_stack), to pomeni, da vključuje lokacijo strukture pt_regs na kupu.

Na začetku je dr. ta obliž je sledil istemu pristopu, toda med nedavnimi razpravami je bilo ugotovljeno, da nimajo velike vrednosti, kot da je funkcionalnost ptrace na voljo napadalcu, lahko uporabite PTRACE_PEEKUSR za branje / pisanje različnih odmikov v strukturo pt_regs, opazovanje vedenja predpomnilnika dostopov pt_regs in iskanje naključni zamik sklada.

Na koncu je omenjeno, da začetna izvedba podpira procesorje ARM64 in x86 / x86_64.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.