Проект OpenPaX развивает аналог механизмов защиты Grsecurity/PaX для ядра Linux

Компания Edera, развивающая решения для защиты инфраструктуры Kubernetes и AI-систем, представила проект OpenPaX, представляющий собойнабор патчей к ядру Linux с реализацией методов противодействия эксплуатации уязвимостей, вызванных ошибками при работе с памятью. OpenPaX позиционируется как распространяемый без ограничений аналог набора пачтей PaX от проекта Grsecurity, который с 2017 года поставляется только в составе платного продукта. Наработки OpenPaX открыты под лицензией GPLv2.

Разработчики дистрибутива Alpine Linux намерены в следующем выпуске 3.21 предоставить экспериментальную сборку ядра с патчами OpenPaX, а в выпуске 3.22 перевести её в разряд штатных опций. OpenPaX также может быть использован дистрибутивами Gentoo и Arch Linux, которые ранее предлагали варианты ядра Linux с патчами PaX. Разработчики OpenPaX также надеются на перенос некоторых разработанных ими механизмов защиты в основной состав ядра.

Из реализованных в OpenPaX возможностей можно отметить применение при маппинге страниц памяти механизма W^X (write XOR execute), не допускающем создание страниц памяти, одновременно доступных на запись и исполнение, а также блокирующем смену типа маппинга страниц с записи на исполнение. Также в OpenPaX присутствует механизм эмуляции, позволяющий использовать стек и кучу, в которых запрещено исполнение кода, с функциями-трамплинами, например, генерируемыми libffi или GCC (суть трамплинов в том, что код для вызова вложенной или внешней функции динамически создаётся и выполняется в стеке). Эмуляция трамплинов производится через перехват исключений (page fault) при попытке запуска кода в неисполняемой памяти и эмуляции перехода.

Так как реализованные методы защиты могут нарушить нормальную работу JIT-компиляторов предусмотрена возможность использования xattr и утилиты paxmark для выборочного управления включением возможностей OpenPaX в привязке к исполняемым файлам. Также доступен режим мягкой активации OpenPaX (sysctl kernel.pax.softmode=1), при котором по умолчанию OpenPaX отключён, но может выборочно быть активирован для требующих защиты отдельных приложений.

Дополнительно можно отметить выпуск модуля ядра LKRG 0.9.9, развиваемого проектом Openwall и предназначенного для выявления и блокирования атак, а также предотвращения нарушения целостности структур ядра. Например, модуль может защитить от несанкционированного внесения изменений в работающее ядро и попыток изменения полномочий пользовательских процессов (определение применения эксплоитов). Модуль подходит как для организации защиты от эксплоитов уже известных уязвимостей ядра Linux (например, в ситуациях когда в системе проблематично обновить ядро), так и для противостояния эксплоитам для ещё неизвестных уязвимостей. Код проекта распространяется под лицензией GPLv2. Об особенностях реализации LKRG можно прочитать в первом анонсе проекта. В новой версии обеспечена совместимость с ядрами Linux 5.10.220+, 6.10.10+, 6.11 и 6.12-rc, а также с пакетами с ядром 5.14.0-470.el9+, поставляемыми в CentOS Stream 9 и RHEL 9. Обеспечена совместимость с ядрами собранными в режиме “CONFIG_JUMP_LABEL” на системах с архитектурой ARM64.

Release. Ссылка here.