Záplaty zavedené na randomizáciu adries zásobníka jadra Linuxu pre systémové volania

Kees Cook, bývalý hlavný správca systému kernel.org a vedúci bezpečnostného tímu Ubuntu, ktorý teraz pracuje v spoločnosti Google na zabezpečení systému Android a ChromeOS, zverejnil sadu opráv na náhodné odsadenie v zásobníku jadra pri spracovaní systémových volaní. Záplaty zlepšujú bezpečnosť jadra zmenou umiestnenia zásobníka, vďaka čomu sú útoky na zásobník oveľa náročnejšie a menej úspešné. Počiatočná implementácia podporuje procesory ARM64 a x86/x86_64.

Pôvodný nápad na patch patrí do projektu PaX RANDKSTACK. V roku 2019 sa Elena Reshetova, inžinierka z Intelu, pokúsila vytvoriť implementáciu tejto myšlienky vhodnú na zahrnutie do hlavného linuxového jadra. Neskôr sa iniciatívy chopil Kees Cook, ktorý predstavil implementáciu vhodnú pre hlavnú verziu jadra. Opravy sú plánované ako súčasť vydania 5.13. Režim bude predvolene vypnutý. Na jeho aktiváciu je navrhnutý parameter príkazového riadka jadra „randomize_kstack_offset=on/off“ a nastavenie CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Réžia aktivácie režimu sa odhaduje na približne 1 % stratu výkonu.

Podstatou navrhovanej ochrany je výber náhodného posunu zásobníka pre každé systémové volanie, čo sťažuje určenie rozloženia zásobníka v pamäti aj po prijatí údajov o adrese, pretože nasledujúce systémové volanie zmení základnú adresu zásobníka. Na rozdiel od implementácie PaX RANDKSTACK sa v patchoch navrhnutých na zahrnutie do jadra randomizácia nevykonáva v počiatočnom štádiu (cpu_current_top_of_stack), ale po nastavení štruktúry pt_regs, čo znemožňuje použitie metód založených na ptrace na určenie náhodného posunu. počas dlho trvajúceho systémového volania.

Zdroj: opennet.ru

Pridať komentár