Жүйелік қоңыраулар үшін Linux ядросының стек мекенжайларын рандомизациялау үшін енгізілген патчтар

Кис Кук, kernel.org сайтының бұрынғы бас жүйелік әкімшісі және Ubuntu қауіпсіздік тобының жетекшісі, қазір Google-да Android және ChromeOS жүйелерін қорғауда жұмыс істейді, жүйелік қоңырауларды өңдеу кезінде ядро ​​стекіндегі офсеттерді рандомизациялау үшін патчтар жинағын жариялады. Патчтар стектің орналасуын өзгерту арқылы ядро ​​қауіпсіздігін жақсартады, стекке шабуылдарды әлдеқайда қиынырақ және аз сәтті етеді. Бастапқы енгізу ARM64 және x86/x86_64 процессорларына қолдау көрсетеді.

Патчтың бастапқы идеясы PaX RANDKSTACK жобасына тиесілі. 2019 жылы Intel инженері Елена Решетова негізгі Linux ядросына қосу үшін қолайлы осы идеяны жүзеге асыруға тырысты. Кейінірек бұл бастаманы Кис Кук қолға алып, ядроның негізгі нұсқасына қолайлы іске асыруды ұсынды. Патчтарды 5.13 шығарылымының бөлігі ретінде қосу жоспарлануда. Режим әдепкі бойынша өшіріледі. Оны қосу үшін ядро ​​пәрмен жолы параметрі “randomize_kstack_offset=on/off” және CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT параметрі ұсынылады. Режимді қосудың үстеме шығындары өнімділіктің шамамен 1% жоғалуына бағаланады.

Ұсынылған қорғаныстың мәні әрбір жүйелік шақыру үшін кездейсоқ стек ығысуын таңдау болып табылады, бұл тіпті мекенжай деректерін алғаннан кейін де жадтағы стек орналасуын анықтауды қиындатады, өйткені келесі жүйелік шақыру стектің негізгі мекенжайын өзгертеді. PaX RANDKSTACK іске асыруынан айырмашылығы, ядроға қосу үшін ұсынылған патчтарда рандомизация бастапқы кезеңде емес (cpu_current_top_of_stack) емес, pt_regs құрылымын орнатқаннан кейін орындалады, бұл рандомизацияланған ығысуды анықтау үшін ptrace негізіндегі әдістерді пайдалану мүмкін емес. ұзақ жұмыс істейтін жүйелік қоңырау кезінде.

Ақпарат көзі: opennet.ru

пікір қалдыру