Uvedeni popravki za naključno določanje naslovov sklada jedra Linuxa za sistemske klice

Kees Cook, nekdanji glavni sistemski skrbnik kernel.org in vodja varnostne ekipe Ubuntu, ki zdaj dela pri Googlu na področju zaščite Android in ChromeOS, je objavil nabor popravkov za naključno določanje odmikov v skladu jedra pri obdelavi sistemskih klicev. Popravki izboljšajo varnost jedra tako, da spremenijo postavitev skladov, zaradi česar so napadi na sklad veliko težji in manj uspešni. Začetna izvedba podpira procesorje ARM64 in x86/x86_64.

Prvotna ideja za popravek pripada projektu PaX RANDKSTACK. Leta 2019 je Elena Reshetova, inženirka iz Intela, poskušala ustvariti izvedbo te ideje, primerno za vključitev v glavno jedro Linuxa. Kasneje je pobudo prevzel Kees Cook, ki je predstavil izvedbo, primerno za glavno različico jedra. Popravki naj bi bili vključeni kot del izdaje 5.13. Način bo privzeto onemogočen. Za omogočanje sta predlagana parameter ukazne vrstice jedra “randomize_kstack_offset=on/off” in nastavitev CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Stroški omogočanja načina so ocenjeni na približno 1 % izgube zmogljivosti.

Bistvo predlagane zaščite je izbira naključnega odmika sklada za vsak sistemski klic, zaradi česar je težko določiti postavitev sklada v pomnilniku, tudi po prejemu podatkov o naslovu, saj bo naslednji sistemski klic spremenil osnovni naslov sklada. Za razliko od implementacije PaX RANDKSTACK se v popravkih, ki so predlagani za vključitev v jedro, randomizacija ne izvaja na začetni stopnji (cpu_current_top_of_stack), ampak po nastavitvi strukture pt_regs, zaradi česar ni mogoče uporabiti metod, ki temeljijo na ptrace, za določitev randomiziranega odmika. med dolgotrajnim sistemskim klicem.

Vir: opennet.ru

Dodaj komentar