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

Прoeкт Openwall oпубликoвaл травление мoдуля ядрa LKRG 0.8 (Linux Kernel Runtime Guard), прeднaзнaчeннoгo к выявлeния и блoкирoвaния aтaк и нaрушeний цeлoстнoсти структур ядрa. Нaпримeр, мoдуль мoжeт зaщитить oт нeсaнкциoнирoвaннoгo внeсeния измeнeний в рaбoтaющee ядрo и пoпытoк измeнeния пoлнoмoчий пoльзoвaтeльскиx прoцeссoв (oпрeдeлeниe примeнeния эксплoитoв). Мoдуль пoдxoдит кaк чтобы oргaнизaции зaщиты от уже известных эксплоитов интересах ядра Linux (например, в ситуациях рано ли в системе проблематично обновить ядро), в среднем и для противостояния эксплоитам для единаче неизвестных уязвимостей. Код проекта распространяется подина лицензией GPLv2. Среди изменений в новой версии: Изменено обозначение проекта LKRG, который теперь безвыгодный разделяется на отдельные подсистемы угоду кому) проверки целостности и определения применения эксплоитов, а преподносится т. е. целостный продукт для выявления атак и различных нарушений целостности; Обеспечена совместность с ядрами Linux с 5.3 по 5.7, а опять же с ядрами, собранными с агрессивными оптимизациями GCC, лишенный чего опций CONFIG_USB и CONFIG_STACKTRACE то есть (т. е.) с опцией CONFIG_UNWINDER_ORC, а также с ядрами, в которых отсутствуют перехватываемые LKRG функции, в противном случае без них можно обойтись; Быть сборке обеспечена проверка некоторых обязательных настроек ядра CONFIG_* в целях формирования осмысленных сообщений об ошибках награду неясных сбоев; Добавлена поддержка ждущего (ACPI S3, suspend to RAM) и спящего (S4, suspend to disk) режимов; В Makefile добавлена подспорье DKMS; Реализована экспериментальная поддержка 32-разрядных платформ ARM (протестировано нате Raspberry Pi 3 Model B). Ранее доступная шефство AArch64 (ARM64) дополнена обеспечением совместимости с платой Raspberry Pi 4; Добавлены новые обработчики (hook), в волюм числе обработчик вызова capable() в (видах лучшего определения эксплоитов, манипулирующих "capabilities", а приставки не- идентификаторами процессов (credentials); Предложена новая логика определения попыток выхода с ограничений пространств имён (например, с контейнеров Docker); На системах x86-64 обеспечена разбирательство и применение бита SMAP (Supervisor Mode Access Prevention), предназначенного исполнение) блокирования доступа к данным в пространстве пользователя с привилегированного кода, выполняемого на уровне ядра. Опора SMEP (Supervisor Mode Execution Prevention) была реализована уже; В процессе работы обеспечено размещение настроек LKRG в странице памяти, большей частью доступной только для чтения; Добавлены проверки, допускающие печать важных сведений, таких как извещение об адресах в ядре, только в логи с уровнем 4 и ранее. Повышена масштабируемость БД отслеживания процессов - на (место одного дерева RB, защищаемого одним spinlock, задействована хэш табель из 512 деревьев RB, защищённая 512 блокировками чтения-журнал; Реализован и включён по умолчанию строй, при котором проверка целостности идентификаторов процесса зачастую выполняется только для текущей задачи, а как и опционально для активируемых (waking up) задач. Угоду кому) остальных задач, находящихся в состоянии сна то есть (т. е.) работающих без обращения контролируемому в LKRG API ядра, контроль выполняется реже. Добавлены новые sysctl и величина модуля для тонкой настройки LKRG; Настройки по мнению умолчанию изменены для достижения больше взвешенного баланса между оперативностью выявления нарушений и эффективностью реакции с одной стороны, и влиянием получи и распишись производительность и риском ложных срабатываний с кто-то другой; Unit-файл systemd переработан исполнение) загрузки модуля LKRG на раннем этапе загрузки (чтобы отключения модуля может использоваться параметр командной строки ядра); Производитель дистрибутива Whonix начал формирование готовых пакетов с DKMS во (избежание Debian, Whonix, Qubes и Kicksecure. С учётом предложенных в новом выпуске оптимизаций спуск производительности при применении LKRG 0.8 оценивается для уровне 2.5% в режиме максимальной защиты и 2% быть отключении некоторых проверок. В недавно проведённом исследовании эффективности пакетов чтобы выявления руткитов LKRG показал элита результаты, без ложных срабатываний определив 8 с 9 протестированных руткиков, работающих на уровне ядра (были выявлены руткиты Diamorphine, Honey Pot Bears, LilyOfTheValley, Nuk3 Gh0st, Puszek, Reptile, Rootfoo Linux Rootkit и Sutekh, же пропущен Keysniffer, который является модулем ядра с кейлоггером, а маловыгодный руткитом в прямом смысле). Для сравнения пакеты AIDE, OSSEC и Rootkit Hunter выявили 2 руткита с 9, а Chkrootkit не выявили ни одного. Подле этом LKRG не поддерживает решение руткитов, размещаемых в пространстве пользователя, благодаря тому наибольшая эффективность достигается при использовании связки AIDE и LKRG, позволившей дать выход 14 из 15 руткитов всех типов. Пересмотр целостности в LKRG выполняется на основе сравнения хэшей, вычисляемых для того наиболее важных областей памяти и структур данных ядра (IDT (Interrupt Descriptor Table), MSR, таблицы системных вызовов, шабаш процедуры и функции, обработчики прерываний, списки загруженных модулей, предмет секции .text модулей, атрибуты процессов и т.п.). Обсерватория возможного применения эксплоитов и блокирование атак производится в стадии до предоставления ядром доступа к ресурсам (за примером далеко ходить не нужно, до открытия файла), но а там получения процессом несанкционированных полномочий (а именно, смена UID). Источник: http://www.opennet.ru/opennews/art.shtml?num=53244