Прадстаўлены патчы для рандомизации адрасоў стэка ядра Linux пры сістэмных выкліках

Кіс Кук (Kees Cook), былы галоўны сісадмін kernel.org і лідэр Ubuntu Security Team, які цяпер працуе ў кампаніі 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

Дадаць каментар