Пуск на модула LKRG 0.8 за защита от експлоатация на уязвимости в ядрото на Linux

Проект Openwall публикува издание на ядрения модул LKRG 0.8 (Linux Kernel Runtime Guard), предназначен за откриване и блокиране на атаки и нарушения на целостта на структурите на ядрото. Например, модулът може да защити от неразрешени изменения в работещото ядро и опити за промяна на правомощията на потребителските процеси (определяне на използването на експлойти). Модулът е подходящ както за организация на защита срещу вече известни експлойти за ядрото на 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() за по-добро определяне на експлойти, манипулиращи «възможности«, а не идентификаторите на процесите (креденциали);
  • Предложена е нова логика за определяне на опити за напускане на ограниченията на пространствата на имената (например, от контейнерите Docker);
  • На системите x86-64 е осигурена проверка и прилагане на бита SMAP (Supervisor Mode Access Prevention), предназначен за блокиране на достъпа до данни в пространството на потребителя от привилегирования код, изпълняван на ядрото. Защитата SMEP (Supervisor Mode Execution Prevention) беше реализирана по-рано;
  • По време на работата е осигурено разполагането на настройките LKRG в страницата на паметта, обикновено достъпна само за четене;
  • Записите в логовете на информация, която може да е най-полезна за атаки (например, информация за адреси в ядрото), са ограничени от режим на отладка (log_level=4 и нагоре), който по подразбиране е изключен.
  • Повишена мащабируемост на базата данни за проследяване на процесите — вместо едно RB дърво, защитавано от един spinlock, е внедрена хеш таблица от 512 RB дървета, защитени съответно от 512 блокировки за четене и запис;
  • Реализиран и включен по подразбиране режим, при който проверката на целостта на идентификаторите на процесите често се извършва само за текущата задача и опционално за активираните (събуждащите се) задачи. За останалите задачи, намиращи се в състояние на сън или работещи без взаимодействие с контролираната LKRG API на ядрото, проверката се извършва по-рядко.
  • Добавени са нови sysctl и параметри на модула за фина настройка на LKRG, както и два sysctl за опростяване на настройката чрез избор от предварително подготвени от разработчиците набори от фини настройки (profiles);
  • Настройките по подразбиране са променени, за да се постигне по-балансиран баланс между бързото установяване на нарушения и ефективността на реакцията от една страна, и влиянието върху производителността и риска от фалшиви сработвания от друга страна;
  • Unit-файлът на systemd е преработен за зареждане на модула LKRG на ранен етап от зареждането (за деактивиране на модула може да се използва параметър на командния ред на ядрото);

С оглед на предложените в новото издание оптимизации, намалението на производителността при приложение на LKRG 0.8 се оценява на 2.5% в стандартен режим («heavy») и 2% в облекчен режим («light»).

В наскоро проведеното проучване ефективността на пакети за откриване на руткитове 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 руткита от всички типове.

Допълнително може да се отбележи, че разработчикът на дистрибуцията Whonix започна формирането на готови пакети с DKMS за Debian, Whonix, Qubes и Kicksecure, а пакетът за Arch Linux вече е обновен до версия 0.8. Пакетите с LKRG също присъстват в руските ALT Linux и Astra Linux.

Проверка на целостта в LKRG се извършва на основата на сравнение на актуалния код и данните на ядрото и модулите, на някои важни структури от данни и настройки на CPU с запазените хешове или копията на съответните области на паметта, структури от данни или регистри. Проверките се активират както периодично по таймер, така и при настъпването на различни събития.

Определянето на възможното прилагане на експлоити и блокирането на атаки се извършва на етапа преди предоставянето на ресурсите от ядрото (например, преди отваряне на файл), но след получаването на несанкционирани права от процеса (например, смяна на UID). При откритие на несанкционирано поведение на процесите по подразбиране се извършва принудително приключване, което е достатъчно за блокиране на много експлоити.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster