Ipinakilala ang mga patch upang i-randomize ang mga address ng stack ng kernel ng Linux para sa mga tawag sa system

Si Kees Cook, dating punong tagapangasiwa ng system ng kernel.org at pinuno ng Ubuntu Security Team, na ngayon ay nagtatrabaho sa Google sa pag-secure ng Android at ChromeOS, ay nag-publish ng isang set ng mga patch upang i-randomize ang mga offset sa kernel stack kapag nagpoproseso ng mga tawag sa system. Pinapabuti ng mga patch ang seguridad ng kernel sa pamamagitan ng pagbabago ng pagkakalagay ng stack, na ginagawang mas mahirap at hindi gaanong matagumpay ang mga pag-atake sa stack. Sinusuportahan ng paunang pagpapatupad ang mga processor ng ARM64 at x86/x86_64.

Ang orihinal na ideya para sa patch ay kabilang sa proyekto ng PaX RANKKSTACK. Noong 2019, sinubukan ni Elena Reshetova, isang engineer mula sa Intel, na lumikha ng pagpapatupad ng ideyang ito na angkop para sa pagsasama sa pangunahing Linux kernel. Nang maglaon, ang inisyatiba ay kinuha ni Kees Cook, na nagpakita ng isang pagpapatupad na angkop para sa pangunahing bersyon ng kernel. Ang mga patch ay binalak na isama bilang bahagi ng 5.13 release. Ang mode ay idi-disable bilang default. Upang paganahin ito, ang parameter ng kernel command line na "randomize_kstack_offset=on/off" at ang CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT na setting ay iminungkahi. Ang overhead ng pagpapagana sa mode ay tinatantya sa humigit-kumulang 1% na pagkawala ng pagganap.

Ang kakanyahan ng iminungkahing proteksyon ay ang pumili ng random na stack offset para sa bawat system call, na nagpapahirap sa pagtukoy ng stack layout sa memorya, kahit na pagkatapos matanggap ang data ng address, dahil babaguhin ng susunod na system call ang base address ng stack. Hindi tulad ng pagpapatupad ng PaX RANDKSTACK, sa mga patch na iminungkahi para sa pagsasama sa kernel, ang randomization ay ginagawa hindi sa paunang yugto (cpu_current_top_of_stack), ngunit pagkatapos itakda ang pt_regs structure, na ginagawang imposibleng gumamit ng ptrace-based na mga pamamaraan upang matukoy ang randomized offset sa isang matagal na tawag sa system.

Pinagmulan: opennet.ru

Magdagdag ng komento