Kees Cook predstavio je nove zakrpe za poboljšanje sigurnosti Linux kernela

Linux

Kees Cook, bivši glavni sysadmin na kernel.org i vođa Ubuntu sigurnosnog tima, koji sada radi u Googleu kako bi zaštitio Android i ChromeOS, je objavio set zakrpa koje randomiziraju pomake snopa jezgre prilikom rukovanja sistemskim pozivima. Zakrpe poboljšavaju sigurnost kernela promjenom lokacije steka, lili to čini stack napade mnogo težim i manje uspješnim

Originalna ideja za zakrpu pripada projektu PaX RANDKSTACK. Godine 2019. Elena Reshetova, inženjer u Intelu, pokušala je stvoriti implementaciju ove ideje, pogodne za uključivanje u glavni sastav Linux jezgre.

Nakon toga inicijativu je preuzeo Kees Cook koji je predstavio prikladnu implementaciju za glavnu verziju jezgre i čije su zakrpe planirane za verziju 5.13 Linuxa.

Način će biti onemogućen prema zadanim postavkama i da bi se omogućio, nudi se parametar retka naredbe jezgre "Randomize_kstack_offset = uključeno / isključeno»I postavke CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, Pored toga, općeniti troškovi omogućavanja režima procjenjuju se na približno 1% gubitka performansi.

Suština predložene zaštite je odabir slučajnog pomaka sloga za svaki sistemski poziv, što otežava određivanje izgleda steka u memoriji čak i ako se prime informacije o adresi, jer će se osnovna adresa stoga promijeniti pri sljedećem pozivu.

Za razliku od implementacije PaX RANDK STACK, u zakrpama predloženim za uključivanje u jezgru, randomizacija se ne vrši u početnoj fazi, ali nakon postavljanja strukture pt_regs, što onemogućava upotrebu metoda zasnovanih na ptraceu za određivanje slučajnog odstupanja tokom dugotrajnog sistemskog poziva.

Kako su se zaštite Linux stack kernela neprestano poboljšavale (mapiranje steka zasnovano na vmap-u sa stranicama zaštite, uklanjanje thread_info-a, STACKLEAK), napadači su morali pronaći nove načine za funkcioniranje svojih exploita.

U situacijama u kojima imaju, i nastavljaju se oslanjati na determinizam steka kernela VMAP_STACK i THREAD_INFO_IN_TASK_STRUCT nisu bili relevantni. Na primjer, sljedeći nedavni napadi bili bi ometeni da pomak steka nije bio deterministički između sistemskih poziva

Svrha funkcije randomize_kstack_offset je dodati slučajni pomak nakon što je pt_regs gurnut na stek i prije nego što se ostatak niza niti koristi tijekom obrade sistemskog poziva, i promijenite ga svaki put kada proces izda sistemski poziv. Izvor slučajnosti trenutno je definiran u arhitekturi (ali x86 koristi mali bajt rdtsc ()).

Buduća poboljšanja su moguća za različite izvore entropije, ali izvan opsega ove zakrpe. Također, da bi se dodala veća nepredvidljivost, na kraju sistemskih poziva biraju se novi pomaci (čije vrijeme treba biti manje lako izmjeriti iz korisničkog prostora nego u vrijeme ulaska sistemskog poziva) i pohranjuju se u jednu varijablu po CPU, tako da životni vijek vrijednosti ne ostaje izričito vezan za jedan zadatak.

Nema vidljivih promjena za ovo na x86, jer je čuvar steka već bezuvjetno onemogućen za jedinicu kompilacije, ali promjena je potrebna u arm64. Nažalost, ne postoji atribut koji se može koristiti za onemogućavanje štediša steka za određene funkcije. Usporedba s funkcijom PaX RANDKSTACK: Funkcija RANDKSTACK nasumično odabire mjesto početka steka (cpu_current_top_of_stack), to jest uključuje lokaciju pt_regs strukture na stogu.

U početku, ovaj flaster je slijedio isti pristup, ali tijekom nedavnih rasprava utvrđeno je da imaju malu vrijednost, kao da je funkcionalnost ptrace dostupna napadaču, možete koristiti PTRACE_PEEKUSR za čitanje / pisanje različitih odstupanja u strukturu pt_regs, promatranje ponašanja predmemorije pristupa pt_regs i saznavanje slučajni pomak stacka.

Konačno se spominje da početna implementacija podržava ARM64 i x86 / x86_64 procesore.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.