Ieviesti ielāpi, lai nejauši izvēlētos Linux kodola steku adreses sistēmas izsaukumiem

Kīss Kuks, bijušais vietnes kernel.org galvenais sistēmas administrators un Ubuntu drošības komandas vadītājs, kurš tagad strādā uzņēmumā Google, lai nodrošinātu Android un ChromeOS drošību, publicēja ielāpu komplektu, lai nejauši izvēlētos nobīdes kodola stekā, apstrādājot sistēmas zvanus. Ielāpi uzlabo kodola drošību, mainot steka izvietojumu, padarot uzbrukumus stekam daudz grūtāku un mazāk veiksmīgu. Sākotnējā ieviešana atbalsta ARM64 un x86/x86_64 procesorus.

Sākotnējā ielāpa ideja pieder PaX RANDKSTACK projektam. 2019. gadā Intel inženiere Jeļena Rešetova mēģināja izveidot šīs idejas realizāciju, kas piemērota iekļaušanai galvenajā Linux kodolā. Vēlāk iniciatīvu pārņēma Kīss Kuks, kurš prezentēja kodola galvenajai versijai piemērotu ieviešanu. Plānots, ka ielāpus tiks iekļauts 5.13 laidienā. Režīms pēc noklusējuma tiks atspējots. Lai to iespējotu, tiek piedāvāts kodola komandrindas parametrs “randomize_kstack_offset=on/off” un iestatījums CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Tiek lēsts, ka režīma iespējošanas izmaksas ir aptuveni 1% veiktspējas zuduma.

Piedāvātās aizsardzības būtība ir izvēlēties nejaušu steka nobīdi katram sistēmas izsaukumam, kas apgrūtina steka izkārtojuma noteikšanu atmiņā pat pēc adreses datu saņemšanas, jo nākamais sistēmas izsaukums mainīs steka bāzes adresi. Atšķirībā no PaX RANDKSTACK ieviešanas, ielāpos, kas ierosināti iekļaušanai kodolā, randomizācija tiek veikta nevis sākotnējā stadijā (cpu_current_top_of_stack), bet pēc pt_regs struktūras iestatīšanas, kas neļauj izmantot uz ptrace balstītas metodes, lai noteiktu randomizēto nobīdi. ilgstošas ​​sistēmas zvana laikā.

Avots: opennet.ru

Pievieno komentāru