Проект Linux Kernel Runtime Guard (LKRG) наконец-то дорос до версии 1.0.0. Этот модуль работает поверх ядра Linux и в реальном времени проверяет его на попытки эксплуатации уязвимостей или признаки подмены, не требуя при этом внесения изменений в само ядро.
Благодаря такому подходу LKRG можно использовать на самых разных версиях Linux — от старых RHEL7 до самых свежих мейнлайновых сборок.
Разработка велась больше семи лет, и теперь команда считает проект зрелым и стабильным. В релизе 1.0.0 особое внимание уделено совместимости с новыми ядрами и повышению надёжности.
LKRG протестирован вплоть до Linux 6.17-rc4, научился корректно работать с изменениями начиная с версии 6.13, а на старых ядрах стал тщательнее проверять атаки на перезапись указателей учётных данных.
Также серьёзно почистили и оптимизировали код — минус полторы тысячи строк, убрано лишнее отслеживание неподтверждённых учётных данных. Добавили поддержку важных функций вроде OverlayFS ovl_tmpfile (актуально для контейнерных нагрузок на ядрах 6.10–6.12), а также совместимость с Intel CET IBT и KCFI на x86_64.
Производительность и стабильность выросли: часть хуков перевели с kretprobes на более простые kprobes, улучшили работу с «теневыми» данными задач, сделали некоторые операции без блокировок, устранили баги с seccomp и валидацией пространств имён. Это снизило число ложных срабатываний и падений.
В LKRG 1.0.0 также улучшена поддержка clang (хотя основной компилятор по-прежнему GCC), добавлены опциональные тесты kprobe для Gentoo, переработано логирование. В CI теперь используется Fedora для тестирования на последних ядрах и новые версии Ubuntu, при этом CentOS 7 поддерживается несмотря на снятие с поддержки.
Итог: LKRG 1.0.0 стал быстрее, стабильнее и совместимее, а сам проект — полноценным инструментом для защиты ядра Linux.