LINUX.ORG.RU

LKRG 1.0.0

 ,


1

1

Спустя семь лет разработки представлена версия LKRG 1.0.0. LKRG (Linux Kernel Runtime Guard) — модуль ядра Linux, предназначенный для проверки целостности ядра во время его работы и для обнаружения попыток использования уязвимостей.

Изменения после выпуска версии 0.9.9:

  • Расширена совместимость с последних версий Linux (протестированы версии вплоть до 6.17-rc4);
  • Для ядер версии 6.13+ прекращен перехват вызовов {override,revert}_creds(), что ограничило выявление атак, использующих указатель cred;
  • Ограничения выше были компенсированы проверкой перезаписи указателя cred в других местах;
  • Теперь не отслеживаются учётные данные, для которых не производилась проверка целостности;
  • Для ядер 6.10-6.12 (на ядрах 6.13+ нет необходимости в данной функции) появилась поддержка механизма в ФС OverlayFS owl_tmpfile, что позволило предотвратить ложные срабатывания при работе с изолированными файлами;
  • Для архитектуры x86-64 добавлена поддержка механизма Intel CET IBT и/или KCFI;
  • Улучшена во многиях случая экспериментальная поддержка clang, но официально остаётся поддержка только GCC;
  • Для улучшения надёжности и производительности во многих хуках вместо kretprobes задействован механизм kprobes;
  • Переработана блокировка данных в ядре, специфичных для процесса (per-task shadow data)
  • Проверка нарушений целостности песочницы выполняется в функции unlikely(), чтобы код реагирования на cold attack не мешал кешированию в hot paths;
  • Тесты kprobes через собственную dummy-функцию сделаны опциональными;
  • В пакетах rpm утилиты для логгирования в пользовательском пространстве скомпилированы и слинкованы с дополнительными флагами защиты;
  • Логи в lkrg-logger теперь доступны для пользователя в зависимости от его групп;
  • Исправлены многие баги, улучшена производительность и т. д.

>>> Анонс на официальном сайте

★★

Проверено: hobbit ()
Последнее исправление: unfo (всего исправлений: 3)

Сам хочу как-нибудь запустить эту софтину у себя, да только либо некогда, либо не запускается.

P. S. (для корректоров). Я думаю, что криво перевёл пункты про функцию unlikely() и про rpm, так что прошу тех, кто знает английский лучше меня, исправить возможную ошибку или убрать эти пункты.

mister_me ★★
() автор топика

Уж не знаю за практическую полезность, тут коллеге solardiz виднее, но как энциклопедию ядерного программирования я этот код использую регулярно.

gns ★★★★★
()
Ответ на: комментарий от Infra_HDC

Когда планируется завоз в Debian?

В смысле? Это модуль ядра, при чем тут дистрибутив? Возьми, собери и используй. Если оно тебе реально нужно. Лично я, для себя, в сомнении. Потому как на ядрах, оно конечно, тестировалось, но как там дальше никому не известно. И нет никакой гарантии, что не будет каких-либо глюков в процессе работы и в плане совместимости. И так-же непонятно, как это все скажется на производительности.

Но. Несмотря на все, что я тут понаписал, я воткну на тестовую виртуалку и на тестовую железяку, чтоб посмотреть на своих типовых задачах, что там и как, хотя меня гложат сомнения.

DrRulez ★★★★★
()
Ответ на: комментарий от DrRulez

Жить не мешает, но что при этом делает, лично мне не есть понятно. На производительности почти не сказывается. Ну, то есть не больше, чем какой-нибудь аппармор с кучей профилей.

gns ★★★★★
()

Нужна более длинная статья, в которой рассказывается про все упомянутые непонятные слова из этой заметки.

Shushundr ★★★★★
()
Ответ на: комментарий от Shushundr

Нужна более длинная статья, в которой рассказывается про все упомянутые непонятные слова из этой заметки.

это же openwall, они долгое время патчи для ведра клепали, которые никто в апстрим не принимал и даже не собирался, потом внезапно осознали «проблему» и начали лепить модули уже (ну да уже не запрещает сходу, но «быстро обнаруживает» (если сможет, хехе)). В целом представляет контору студентов, успешно просирающих деньги налогоплательщиков.

borisych ★★★★★
()
Ответ на: комментарий от TechnoMag

Оооо! Давайте еще сюда чистку мусора прикрутите. )))

И мойку оконных стёкол, ага... :))

Somebody ★★★★
()
Ответ на: комментарий от borisych

Патчи от Openwall мы долгое время и не подавали для включения в upstream, но в 2011 ту их функциональность которая была актуальна поверх уже имевшейся в ядре всё же подали и она была включена (см. архивы списка kernel-hardening, начатого как раз тогда, а также grep -ri openwall по дереву ядра). Реализация LKRG в виде модуля была выбрана Адамом до того как мы взяли этот проект под крыло Openwall в 2018, но да, такой выбор помогает использовать код, не включенный в ядро. Подавать LKRG для включения в ядро мы не планируем (хотя и не исключаем такую возможность полностью), о причинах я подробно писал в lkrg-users.

Насчет «конторы студентов», мы и правда четыре года (из более 25 лет существования проекта) участвовали как mentoring organization в Google Summer of Code, и упомянутая работа по включению в upstream была выполнена студентом в рамках этой программы (я был ментором). Считаю это хорошим участием в сообществе. Упрек не понимаю. Насчет «денег налогоплательщиков» у меня вообще нет идей о чем это могло бы быть, считаю просто клеветой. Не знаю с какой целью вы это пишете - просто по незнанию и для красного словца в расчете что вас никто не поправит, или как троллинг (видимо, успешный, раз я добрался ответить). В любом случае, некрасиво с вашей стороны.

solardiz
()
Ответ на: комментарий от mister_me

Большое спасибо за публикацию новости! Насчет «не запускается», пожалуйста нам в lkrg-users или GitHub issue, разберемся. Насчет unlikely(), да, перевод совершенно неправильный, но я думаю тут дело не в английском, а в том что у нас оригинал получился понятным только для тех кто уже в теме. Возьму себе на заметку писать понятнее для всех. Правильный перевод мог быть: «Проверки нарушений целостности обернуты в unlikely(), чтобы холодный код реагирования на атаки не мешал кешированию горячего кода».

solardiz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.