Kasutusele võetud paigad Linuxi kerneli pinu aadresside juhuslikuks muutmiseks süsteemikõnede jaoks

Kees Cook, endine kernel.org-i peasüsteemiadministraator ja Ubuntu turvameeskonna juht, kes töötab nüüd Google'is Androidi ja ChromeOS-i turvalisuse kallal, avaldas plaastrite komplekti, et süsteemikõnede töötlemisel tuumavirnas nihkeid juhuslikult määrata. Plaastrid parandavad kerneli turvalisust, muutes virna paigutust, muutes virna vastu suunatud rünnakud palju raskemaks ja vähem edukaks. Esialgne juurutus toetab ARM64 ja x86/x86_64 protsessoreid.

Plaastri algidee kuulub PaX RANDKSTACK projektile. 2019. aastal püüdis Inteli insener Jelena Reshetova luua selle idee teostuse, mis sobiks Linuxi põhikernelisse lisamiseks. Hiljem võttis initsiatiivi enda kätte Kees Cook, kes esitas tuuma põhiversioonile sobiva teostuse. Plaastrid plaanitakse kaasata 5.13 väljalaske osana. Režiim on vaikimisi keelatud. Selle lubamiseks pakutakse välja kerneli käsureaparameeter “randomize_kstack_offset=on/off” ja säte CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT. Režiimi lubamise üldkulud on hinnanguliselt umbes 1% jõudluse kadu.

Kavandatud kaitse põhiolemus on valida iga süsteemikõne jaoks juhuslik virna nihe, mis raskendab virna paigutuse määramist mälus isegi pärast aadressiandmete saamist, kuna järgmine süsteemikõne muudab virna baasaadressi. Erinevalt PaX RANDKSTACK-i teostusest ei teostata kernelisse lisamiseks pakutud plaastrites randomiseerimist mitte algfaasis (cpu_current_top_of_stack), vaid pärast pt_regs-struktuuri seadistamist, mis muudab ptrace-põhiste meetodite kasutamise randomiseeritud nihke määramiseks võimatuks. pikaajalise süsteemikõne ajal.

Allikas: opennet.ru

Lisa kommentaar