Выпуск модуля LKRG 0.6 для защиты от эксплуатации уязвимостей в ядре Linux

Проект Openwall опубликовал выпуск модуля ядра LKRG 0.6 (Linux Kernel Runtime Guard), обеспечивающего выявление несанкционированного внесения изменений в работающее ядро (проверка целостности) или попыток изменения полномочий пользовательских процессов (определение применения эксплоитов). Модуль подходит как для организации защиты от уже известных эксплоитов для ядра Linux (например, в ситуациях когда в системе проблематично обновить ядро), так и для противостояния эксплоитам для ещё неизвестных уязвимостей. Об особенностях LKRG можно прочитать в первом анонсе проекта.

В новой версии для systemd подготовлен unit-файл для инициализации LKRG на начальной стадии загрузки, а также предложены сборочные опции для его установки и удаления. В подсистеме проверки целостности переработана поддержка меток перехода (*_JUMP_LABEL) и обеспечена защита битов
SMEP (Supervisor Mode Execution Protection, 20 бит в регистре CR4) и WP (Write Protect, 16 бит в регистре CR0) для систем с архитектурой x86.

В коде определения применения эксплоитов при помощи pCFI (вариант Control Flow Integrity) реализована защита против эксплуатации через непреднамеренный вызов функций ядра в качестве ROP-гаджетов. Доступ к интерфейсу usermodehelper ограничен только для приложений из белого списка. Ограничение usermodehelper вместе с pCFI позволили блокировать один из методов обхода LKRG. Для исключения ложных срабатываний обеспечено замораживание всех пользовательских процессов во время инициализации LKRG. Решены проблемы со сборкой в ядрах Linux 4.17+ при включении опции CONFIG_ARCH_HAS_SYSCALL_WRAPPER.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.