Проект Openwall подготовил модуль для обнаружения эксплуатации уязвимостей в ядре Linux
Проект Openwall, известный своими инициативами по повышению безопасности Linux, представил первый экспериментальный выпуск механизма LKRG (Linux Kernel Runtime Guard), нацеленного на контроль целостности ядра Linux и обнаружение попыток эксплуатации уязвимостей в ядре. Проект находится на стадии тестирования экспериментального прототипа. Лицензия на код модуля пока не выбрана, рассматривается GPLv2 или GPLv3. Для финансирования разработки в будущем не исключается выпуск расширенной платной версии LKRG Pro.
LKRG оформлен в виде загружаемого модуля ядра, который пытается выявлять несанкционированное внесение изменений в работающее ядро (проверка целостности) или изменение полномочий пользовательских процессов (определение применения эксплоитов). Определение возможного применения эксплоитов и блокирование атаки производится на стадии до предоставления ядром доступа к ресурсам (например, к открытию файла) на основании полученных процессом несанкционированных полномочий.
В будущем ожидается поддержка отслеживания выхода за пределы изолированных контейнеров. Также пока отсутствуют полноценные средства для блокирования атак - сведения о нарушениях целостности выводятся в виде информационных уведомлений, записываемых в лог ядра. При выявлении несанкционированного поведения процессов выполняется их принудительное завершение, чего достаточно для блокирования многих эксплоитов. Так как проект находится на стадии разработки и оптимизации пока не проводились, накладные расходы от работы модуля составляют примерно в 6.5%, но в будущем планируется существенно снизить данный показатель.
Модуль подходит как для организации защиты от уже известных эксплоитов для ядра Linux, так и для противостояния эксплоитам для еще неизвестных уязвимостей, если в них не применяется специальных мер для обхода LKRG. При тестировании LKRG успешно справился с определением попыток эксплуатации уязвимостей CVE-2014-9322 (BadIRET), CVE-2017-5123 (waitid) и CVE-2017-6074 (use-after-free в DCCP), но не подходит для определения таких проблем, как CVE-2016-5195 (Dirty COW), поражающих компоненты пространства пользователя через ядро.
На текущей стадии разработки авторы не исключают наличия ошибок в коде LKRG и возможных ложных срабатываний, поэтому пользователям предлагается сопоставить риски от возможных ошибок в LKRG c пользой от предлагаемого метода защиты. Из положительных свойств LKRG отмечается то, что механизм защиты выполнен в виде загружаемого модуля, а на патча к ядру, что позволяет использовать его со штатными ядрами дистрибутивов. В частности, модуль опробован с ядром RHEL7, OpenVZ/Virtuozzo 7 и Ubuntu 16.04. В дальнейшем не исключается формирования бинарных сборок для популярных дистрибутивов.