Проект Openwall подготовил модуль для защиты от эксплуатации уязвимостей в ядре Linux

30 января 2018 года

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

LKRG оформлен в виде загружаемого модуля ядра, который пытается выявлять несанкционированное внесение изменений в работающее ядро (проверка целостности) или изменение полномочий пользовательских процессов (определение применения эксплоитов). Проверка целостности выполняется на основе сравнения хэшей, вычисляемых для наиболее важных областей памяти и структур данных ядра (IDT (Interrupt Descriptor Table), MSR, таблицы системных вызовов, все процедуры и функции, обработчики прерываний, списки загруженных модулей, содержимое секции .text модулей, атрибуты процессов и т.п.). Процедура проверки активируется как периодически по таймеру, так и при наступлении различных событий в ядре (например, при выполнении системных вызовов setuid, setreuid, fork, exit, execve, do_init_module и т.п.).

Определение возможного применения эксплоитов и блокирование атак производится на стадии до предоставления ядром доступа к ресурсам (например, до открытия файла), но после получения процессом несанкционированных полномочий (например, смена UID). При выявлении несанкционированного поведения процессов выполняется их принудительное завершение, чего достаточно для блокирования многих эксплоитов. Так как проект находится на стадии разработки, а оптимизации пока не проводились, накладные расходы от работы модуля составляют примерно 6.5%, но в будущем планируется существенно снизить данный показатель.

Модуль подходит как для организации защиты от уже известных эксплоитов для ядра Linux, так и для противостояния эксплоитам для ещё неизвестных уязвимостей, если в них не применяется специальных мер для обхода LKRG. При тестировании LKRG успешно справился с определением попыток эксплуатации уязвимостей CVE-2014-9322 ( BadIRET), CVE-2017-5123 ( отсутствие проверки access_ok() в waitid()) и CVE-2017-6074 ( use-after-free в DCCP), но не подходит для определения таких проблем, как CVE-2016-5195 ( Dirty COW), поражающих компоненты пространства пользователя через ядро.

Авторы не исключают наличия ошибок в коде LKRG и возможных ложных срабатываний, поэтому пользователям предлагается сопоставить риски от возможных ошибок в LKRG c пользой от предлагаемого метода защиты. Из положительных свойств LKRG отмечается то, что механизм защиты выполнен в виде загружаемого модуля, а не патча к ядру, что позволяет использовать его со штатными ядрами дистрибутивов. В частности, модуль опробован с ядром RHEL7, OpenVZ/Virtuozzo 7 и Ubuntu 16.04. В дальнейшем возможно будет организован процесс формирования бинарных сборок для популярных дистрибутивов.

В будущем также ожидается поддержка отслеживания выхода за пределы изолированных контейнеров (смена namespace) и полноценные средства для блокирования атак - в текущей версии сведения о нарушениях целостности выводятся в виде информационных уведомлений, записываемых в лог ядра. Отдельно развивается расширенный вариант модуля, в котором предоставлены дополнительные опции для защиты процессов, файлов и логов (например, защищённый лог не может быть изменён и удалён, даже пользователем root, а только дополнен).

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Проект Openwall подготовил модуль для защиты от эксплуатации уязвимостей в ядре Linux», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.