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

Вторник, 30 января 2018 г.

Следите за нами в ВКонтакте, Facebook'e и Twitter'e

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

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

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

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

Модуль подходит как для организации защиты от уже известных эксплоитов для ядра 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. В дальнейшем возможно будет организован процесс формирования бинарных сборок для популярных дистрибутивов.

Следите за нами в ВКонтакте, Facebook'e и Twitter'e


Просмотров: 878
Рубрика: Hi-Tech
(CY)

Архив новостей / Экспорт новостей

Ещё новости по теме:

RosInvest.Com не несет ответственности за опубликованные материалы и комментарии пользователей. Возрастной цензор 16+.

Ответственность за высказанные, размещённую информацию и оценки, в рамках проекта RosInvest.Com, лежит полностью на лицах опубликовавших эти материалы. Использование материалов, допускается со ссылкой на сайт RosInvest.Com.

Архивы новостей за: 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003