Pristatyti pataisymai, skirti atsitiktinai parinkti Linux branduolio kamino adresus sistemos iškvietimams

Keesas Cookas, buvęs vyriausiasis kernel.org sistemos administratorius ir Ubuntu saugos komandos vadovas, dabar dirbantis „Google“, siekdamas apsaugoti „Android“ ir „ChromeOS“, paskelbė pataisų rinkinį, skirtą atsitiktine tvarka nustatyti branduolio krūvos poslinkius apdorojant sistemos iškvietimus. Pataisos pagerina branduolio saugumą, pakeisdamos dėklo vietą, todėl atakos prieš dėklas tampa daug sunkesnės ir ne tokios sėkmingos. Pradinis diegimas palaiko ARM64 ir x86/x86_64 procesorius.

Pradinė pleistro idėja priklauso projektui PaX RANDKSTACK. 2019 m. Elena Reshetova, „Intel“ inžinierė, bandė sukurti šios idėjos įgyvendinimą, tinkamą įtraukti į pagrindinį „Linux“ branduolį. Vėliau iniciatyvos ėmėsi Keesas Cookas, kuris pristatė pagrindinei branduolio versijai tinkamą įgyvendinimą. Planuojama, kad pataisos bus įtrauktos į 5.13 versiją. Režimas bus išjungtas pagal numatytuosius nustatymus. Norint jį įjungti, siūlomas branduolio komandinės eilutės parametras „randomize_kstack_offset=on/off“ ir CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT nustatymas. Apskaičiuota, kad režimo įjungimo išlaidos yra maždaug 1 % našumo praradimas.

Siūlomos apsaugos esmė – kiekvienam sistemos iškvietimui pasirinkti atsitiktinį dėklo poslinkį, dėl ko sunku nustatyti dėklo išdėstymą atmintyje net ir gavus adreso duomenis, nes sekantis sistemos iškvietimas pakeis bazinį kamino adresą. Skirtingai nuo PaX RANDKSTACK diegimo, pataisose, siūlomuose įtraukti į branduolį, atsitiktinis nustatymas atliekamas ne pradiniame etape (cpu_current_top_of_stack), o nustačius pt_regs struktūrą, todėl neįmanoma naudoti ptrace pagrįstų metodų atsitiktiniam poslinkiui nustatyti. ilgalaikio sistemos skambučio metu.

Šaltinis: opennet.ru

Добавить комментарий