Kees Cook tutvustas Linuxi kerneli korstnate turvalisuse parandamiseks uusi plaastreid

Linux

Kees Cook, endine kernel.org-i sisesadmin ja Ubuntu turvameeskonna juht, kes töötab nüüd Google'is Androidi ja ChromeOS-i kaitsmiseks, on välja andnud hulga plaastreid, mis juhuslikult jaotavad tuuma korstna nihked süsteemikõnede käsitlemisel. Plaastrid parandavad tuuma turvalisust, muutes virna asukohta, lvõi see muudab virnarünnakud palju keerulisemaks ja vähem edukaks

Plaastri algne idee kuulub projekti PaX RANDKSTACK. 2019. aastal proovis Inteli insener Elena Reshetova luua selle idee teostust, mis sobib lisamiseks Linuxi tuuma põhimeiki.

Seejärel võttis algatuse Kees Cook kes esitas kerneli põhiversioonile sobiva rakenduse ja kelle plaastrid on kavandatud Linuxi versioonile 5.13.

Režiim on vaikimisi keelatud ja selle lubamiseks pakutakse kerneli käsurea parameetrit "Randomize_kstack_offset = sisse / välja»Ja seaded CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, Lisaks on režiimi lubamise üldkulud hinnanguliselt jõudluse kadu umbes 1%.

Kavandatud kaitse põhiolemus on valida igale süsteemikõnele juhuslik korstna nihe, mis muudab pinu paigutuse määramise mälus keeruliseks isegi aadressiteabe saamise korral, kuna virna põhiaadress muutub järgmisel kõnel.

Erinevalt programmi rakendamisest Pax RANDKSTACK, tuuma lisamiseks välja pakutud plaastrites randomiseerimist esialgsel etapil ei tehta, kuid pärast struktuuri pt_regs seadistamist, mis muudab ptrace-põhiste meetodite kasutamise juhusliku nihke määramiseks pikaajalise süsteemikõne ajal võimatuks.

Kuna Linuxi kerneli korstnakaitsed on pidevalt paranenud (vmap-põhine virnakaardistamine kaitselehtedega, thread_info eemaldamine, STACKLEAK), on ründajad pidanud leidma oma ekspluateerimise jaoks uued viisid.

Neil on ja toetutakse jätkuvalt tuumapinu determinismile olukordades, kus VMAP_STACK ja THREAD_INFO_IN_TASK_STRUCT need ei olnud asjakohased. Näiteks oleksid järgmised hiljutised rünnakud takistatud, kui virna nihe ei oleks süsteemikõnede vahel deterministlik

Funktsiooni randomize_kstack_offset eesmärk on lisada juhuslik nihe pärast seda, kui pt_regs on virna surutud ja enne ülejäänud lõimivirna kasutamist süsteemi kõne töötlemise ajal, muutke seda iga kord, kui protsess süsteemikõne väljastab. Juhuslikkuse allika määratleb praegu arhitektuur (kuid x86 kasutab rdtsc () madalat baidi).

Erinevate entroopiaallikate jaoks on võimalikud edasised täiustused, kuid jäävad selle plaastri ulatusest välja. Ettearvamatuse lisamiseks valitakse süsteemikõnede lõpus uued nihked (mille aega ei tohiks kasutajaruumist vähem mõõta kui süsteemikõne sisestamise ajal) ning need salvestatakse ühe muutuja kohta CPU, nii et väärtuse eluiga ei jääks otseselt seotud ühe ülesandega.

Selle kohta pole x86-s nähtavaid muudatusi, kuna virnasäästja on kompileerimisüksuse jaoks juba tingimusteta keelatud, kuid arm64-s on muudatus vajalik. Kahjuks pole ühtegi atribuuti, mida saaks kasutada virnade säästja keelamiseks konkreetsete funktsioonide jaoks. Võrdlus funktsiooniga PaX RANDKSTACK: Funktsioon RANDKSTACK randomiseerib virna alguse asukoha (cpu_current_top_of_stack), see tähendab, et see sisaldab pt_regs-struktuuri asumist virnas.

Esialgu see plaaster järgis sama lähenemist, kuid hiljutiste arutelude käigus on kindlaks tehtud, et sellel on vähe väärtust, nagu oleks ptrace funktsionaalsus ründajale kättesaadav, saate PTRACE_PEEKUSR abil pt_regs struktuuri erinevate nihete lugemiseks / kirjutamiseks, pt_regs juurdepääsude vahemälu käitumise jälgimiseks juhuslik virna nihe.

Lõpuks mainitakse seda esialgne juurutamine toetab ARM64 ja x86 / x86_64 protsessoreid.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutav: AB Internet Networks 2008 SL
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.