Kees Cook, bivši glavni sysadmin kernel.org i vođa Ubuntu Security Team, trenutno zaposlen u Googleu, gdje radi na sigurnosti Androida i ChromeOS-a, objavio je skup zakrpa koje implementiraju randomizaciju pomaka na stogu jezgre prilikom obrade sistemskih poziva. Zakrpe povećavaju sigurnost jezgre promjenom rasporeda stoga, što značajno otežava uspješne napade na stog. Početna implementacija podržava ARM64 i x86/x86_64 procesore.
Izvorna ideja zakrpe pripada projektu PaX RANDKSTACK. Godine 2019., Elena Reshetova, inženjerka iz Intela, pokušala je stvoriti implementaciju ove ideje odgovarajuću za uključivanje u osnovnu jezgru Linuxa. Kasnije je inicijativu preuzeo Kees Cook, koji je predstavio implementaciju pogodnu za glavni variant jezgre. Zakrpe bi trebale biti uključene u verziju 5.13. Način rada bit će po defaultu isključen. Za uključivanje predloženi su parametar naredbenog retka jezgre „randomize_kstack_offset=on/off“ i postavka CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Troškovi prilikom uključivanja načina rada procjenjuju se na otprilike 1% gubitka performansi.
Suština predložene zaštite je odabir slučajnog pomaka stoga pri svakom sistemskom pozivu, što otežava određivanje rasporeda stoga u memoriji, čak i kada se dobiju podaci o adresama, jer će se pri sljedećem sistemskom pozivu osnovna adresa stoga promijeniti. Za razliku od implementacije PaX RANDKSTACK, u zakrpama predloženim za uključivanje u jezgru, randomizacija se ne vrši u početnoj fazi (cpu_current_top_of_stack), već nakon postavljanja strukture pt_regs, što onemogućava korištenje metoda temeljenih na ptrace za određivanje randomiziranog pomaka tokom rada dugotrajnih sistemskih poziva.
Izvor: opennet.ru
