Кис Кук (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 для определения рандомизированного смещения в процессе работы длительно выполняемого системного вызова.
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=54971
Изначальная идея патча принадлежит проекту 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 для определения рандомизированного смещения в процессе работы длительно выполняемого системного вызова.
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=54971