The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск модуля LKRG 0.8 для защиты от эксплуатации уязвимостей в ядре Linux, opennews (??), 27-Июн-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


44. "Выпуск модуля LKRG 0.8 для защиты от эксплуатации уязвимосте..."  +1 +/
Сообщение от Павел Отредиезemail (?), 27-Июн-20, 23:13 
Понятно. Вы используете security hooks и ваш модуль оформлен как модуль, я правильно понимаю? Насколько я помню старые версии ядер часть security, не пришлось ли вам экспортировать некоторые символы ядра, а то это не очень разрешено по моему мнению?
Ответить | Правка | Наверх | Cообщить модератору

46. "Выпуск модуля LKRG 0.8 для защиты от эксплуатации уязвимосте..."  +1 +/
Сообщение от solardiz (ok), 27-Июн-20, 23:57 
Используем kprobes. Оформлен как модуль. Экспорт самим ядром мы не трогаем, но для отдельных символов нам приходится использовать kallsyms_lookup_name, а его самого (начиная с 5.7, где его перестали экспортировать) находить с помощью kprobes же. Конечно, это выходит за рамки официального API.
Ответить | Правка | Наверх | Cообщить модератору

48. "Выпуск модуля LKRG 0.8 для защиты от эксплуатации уязвимосте..."  +1 +/
Сообщение от Павел Отредиезemail (?), 28-Июн-20, 00:26 
> Используем kprobes. Оформлен как модуль. Экспорт самим ядром мы не трогаем, но
> для отдельных символов нам приходится использовать kallsyms_lookup_name, а его самого
> (начиная с 5.7, где его перестали экспортировать) находить с помощью kprobes
> же. Конечно, это выходит за рамки официального API.

Если это возможно вашему модулю, то возможно security hooks и другому модулю. Вот и можно предположить почему модуль-эксплоит успешен, он переопределил хуки.

Ответить | Правка | Наверх | Cообщить модератору

50. "Выпуск модуля LKRG 0.8 для защиты от эксплуатации уязвимосте..."  +2 +/
Сообщение от solardiz (ok), 28-Июн-20, 01:03 
LKRG не предназначен нарушать работу других модулей, в том числе что-то переопределяющих используя официальные API ядра. Он распознает некоторые атаки на ядро, где слово атака подразумевает что она осуществляется с неразрешенным пересечением уровня привилегий. Например, если простой пользователь эксплуатирует уязвимость в каком-нибудь системном вызове чтобы оттуда переписать свой euid в task_struct на 0 и затем попытается этим euid'ом воспользоваться, LKRG скорее всего это поймает и остановит. Загрузка модуля ядра корректно выглядящим root'ом (не полученным только что совершенной атакой на ядро) не относится к этой категории, здесь нет пересечения уровня привилегий.

Помимо упомянутого, LKRG также распознает некоторые неразрешенные изменения ядра и модулей, то есть осуществляемые не через стандартные API. Например, он может распознать атаку которая перепишет не euid, а sys_call_table или кусок кода в ядре. Он также может распознать корректно загруженный модуль ядра, который сделает подобное - таким образом он смог распознать упомянутые в новости руткиты.

Но если какой-либо модуль и загружен корректно (честно выглядящим root'ом) и ведет себя корректно, LKRG позволит ему работать. Если это нежелательно, есть возможность запретить загрузку модулей с помощью kernel.modules_disabled. Если же какой-нибудь руткит будет загружаться не как модуль (а через /dev/mem и т.п.), LKRG будет иметь выше шанс его поймать. Только для такой модели угроз и настроек системы нам надо еще добавить возможность запрета sysctl'ов LKRG.

И да, если есть интерес к такой конфигурации системы, то мы подошли к теме securelevel (что всякий /dev/mem запретит, и останется загрузка руткитов только через уязвимости и через правку userspace, чтобы загрузиться при ближайшей перезагрузке системы). Адам исходно реализовал в LKRG аналог securelevel'а, но потом мы эту ветку забросили так как большинство установок этим бы не воспользовалось или же воспользовалось не всерьез (оставив обход через userspace). Я сам пользовался securelevel'ом и доводил его до ума в Linux 2.0, еще когда он там был под этим именем, но это или реально неудобно или не всерьез (по крайней мере, на серверах).

Ответить | Правка | Наверх | Cообщить модератору

49. "Выпуск модуля LKRG 0.8 для защиты от эксплуатации уязвимосте..."  +1 +/
Сообщение от Павел Отредиезemail (?), 28-Июн-20, 00:42 
> Используем kprobes. Оформлен как модуль. Экспорт самим ядром мы не трогаем, но
> для отдельных символов нам приходится использовать kallsyms_lookup_name, а его самого
> (начиная с 5.7, где его перестали экспортировать) находить с помощью kprobes
> же. Конечно, это выходит за рамки официального API.

Я не помню сейчас стек вызовов хуков - до первого разрешения или запрета. Но это в общем то не важно. Для меня важно как программировать. Усложненно как хакер-программист, или проще как clean- программист. Clean программист не выходит за рамки api, в данном случае я бы отказался от загрузки модулем, невелика потеря а простоты намного больше.

Ответить | Правка | К родителю #46 | Наверх | Cообщить модератору

51. "Выпуск модуля LKRG 0.8 для защиты от эксплуатации уязвимосте..."  +2 +/
Сообщение от solardiz (ok), 28-Июн-20, 01:18 
Мы не используем security hooks и не возвращаем разрешения/запреты. Мы перехватываем наиболее актуальные нам функции и сами отвечаем на распознанные атаки в соответствии со своими настройками. Можем убить процесс, а можем и вызвать kernel panic (в некоторых случаях более мягкий ответ уже не будет эффективным) - это настраиваемо. Насчет стиля программирования согласен - было бы хорошо, если бы LKRG можно было написать чисто, в рамках API, а не по-хакерски, как он написан сейчас. К сожалению, так бы не вышло реализовать то, что он сейчас умеет. Даже если бы он был патчем, а не модулем, нам пришлось бы завязываться на не предназначенные для сторонних проектов внутренние интерфейсы ядра. Также, то что LKRG модуль - очень важно. Потеря была бы очень велика - это бОльшая часть потенциальных пользователей, которые используют ядра из состава дистрибутивов, не пересобирая их.
Ответить | Правка | Наверх | Cообщить модератору

52. "Выпуск модуля LKRG 0.8 для защиты от эксплуатации уязвимосте..."  +2 +/
Сообщение от Павел Отредиезemail (?), 28-Июн-20, 01:41 
Хорошо, мои мнения услышаны, спасибо за внимание.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру