Кіс Кук (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
