Viraka vilivyoletwa ili kubadilisha anwani za rafu za Linux kernel kwa simu za mfumo

Kees Cook, aliyekuwa msimamizi mkuu wa mfumo wa kernel.org na kiongozi wa Timu ya Usalama ya Ubuntu, ambaye sasa anafanya kazi katika Google kuhusu kupata Android na ChromeOS, alichapisha seti ya viraka ili kubadilisha suluhu nasibu kwenye mkusanyiko wa kernel wakati wa kuchakata simu za mfumo. Viraka huboresha usalama wa kernel kwa kubadilisha uwekaji wa rafu, na kufanya mashambulizi kwenye rafu kuwa magumu zaidi na yasiyofanikiwa. Utekelezaji wa awali unasaidia wasindikaji wa ARM64 na x86/x86_64.

Wazo la asili la kiraka ni la mradi wa PaX RANDKSTACK. Mnamo mwaka wa 2019, Elena Reshetova, mhandisi kutoka Intel, alijaribu kuunda utekelezaji wa wazo hili linalofaa kuingizwa kwenye kernel kuu ya Linux. Baadaye, hatua hiyo ilichukuliwa na Kees Cook, ambaye aliwasilisha utekelezaji unaofaa kwa toleo kuu la kernel. Viraka vimepangwa kujumuishwa kama sehemu ya toleo la 5.13. Hali itazimwa kwa chaguo-msingi. Ili kuiwezesha, kigezo cha mstari wa amri ya kernel "randomize_kstack_offset=on/off" na mpangilio wa CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT unapendekezwa. Upeo wa kuwezesha modi unakadiriwa kuwa takriban hasara ya utendakazi 1%.

Kiini cha ulinzi uliopendekezwa ni kuchagua kukabiliana na mrundikano wa nasibu kwa kila simu ya mfumo, ambayo inafanya kuwa vigumu kuamua mpangilio wa rafu kwenye kumbukumbu, hata baada ya kupokea data ya anwani, kwa kuwa simu ya mfumo unaofuata itabadilisha anwani ya msingi ya rafu. Tofauti na utekelezaji wa PaX RANDKSTACK, katika viraka vilivyopendekezwa kujumuishwa kwenye kernel, ujanibishaji unafanywa sio katika hatua ya awali (cpu_current_top_of_stack), lakini baada ya kuweka muundo wa pt_regs, ambayo inafanya kuwa haiwezekani kutumia njia za msingi za ptrace kuamua urekebishaji wa nasibu. wakati wa simu ya mfumo wa muda mrefu.

Chanzo: opennet.ru

Kuongeza maoni