Uvedene zakrpe za nasumično odabiranje adresa steka jezgre Linuxa za sistemske pozive

Kees Cook, bivši glavni sistemski administrator kernel.org i vođa Ubuntu sigurnosnog tima, koji sada radi u Googleu na osiguravanju Androida i ChromeOS-a, objavio je skup zakrpa za nasumične pomake u kernel stogu prilikom obrade sistemskih poziva. Zakrpe poboljšavaju sigurnost kernela promjenom položaja stoga, čineći napade na stog puno težima i manje uspješnima. Početna implementacija podržava ARM64 i x86/x86_64 procesore.

Izvorna ideja za zakrpu pripada projektu PaX RANDKSTACK. Godine 2019. Elena Reshetova, inženjerka iz Intela, pokušala je stvoriti implementaciju ove ideje prikladnu za uključivanje u glavnu jezgru Linuxa. Kasnije je inicijativu preuzeo Kees Cook, koji je predstavio implementaciju prikladnu za glavnu verziju kernela. Zakrpe se planiraju uključiti kao dio izdanja 5.13. Način će prema zadanim postavkama biti onemogućen. Da biste ga omogućili, predlaže se parametar naredbenog retka jezgre “randomize_kstack_offset=on/off” i postavka CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Trošak omogućavanja načina rada procjenjuje se na približno 1% gubitka performansi.

Bit predložene zaštite je odabrati nasumični pomak stoga za svaki sistemski poziv, što otežava određivanje rasporeda stoga u memoriji, čak i nakon primanja podataka o adresi, budući da će sljedeći sistemski poziv promijeniti osnovnu adresu stoga. Za razliku od implementacije PaX RANDKSTACK, u zakrpama predloženim za uključivanje u kernel, randomizacija se ne izvodi u početnoj fazi (cpu_current_top_of_stack), već nakon postavljanja strukture pt_regs, što onemogućuje korištenje metoda temeljenih na ptraceu za određivanje randomiziranog pomaka tijekom dugotrajnog poziva sustava.

Izvor: opennet.ru

Dodajte komentar