Ядрото на Linux 5.4 получи корекции за ограничаване на root достъпа до вътрешните елементи на ядрото

Линус Торвалдс приел включен в предстоящото издание на ядрото Linux 5.4 е набор от корекции "Заключване", предложено Дейвид Хауелс (Червената шапка) и Матю Гарет (Матю Гарет, работи в Google), за да ограничи достъпа на root потребителите до ядрото. Функционалността, свързана със заключването, е включена в опционално зареден LSM модул (Модул за сигурност на Linux), което поставя бариера между UID 0 и ядрото, ограничавайки определени функции на ниско ниво.

Ако атакуващият постигне изпълнение на код с права на root, той може да изпълни кода си на ниво ядро, например, като замени ядрото с помощта на kexec или памет за четене/запис чрез /dev/kmem. Най-очевидната последица от такава дейност може да бъде Околовръстен път UEFI Secure Boot или извличане на чувствителни данни, съхранени на ниво ядро.

Първоначално функциите за ограничаване на root бяха разработени в контекста на укрепване на защитата на проверено зареждане и дистрибуциите използват корекции на трети страни за блокиране на заобикаляне на UEFI Secure Boot от доста време. В същото време такива ограничения не бяха включени в основния състав на ядрото поради разногласия при тяхното прилагане и опасения от прекъсване на съществуващите системи. Модулът „lockdown“ абсорбира пачове, които вече се използват в дистрибуции, които бяха преработени под формата на отделна подсистема, която не е свързана с UEFI Secure Boot.

Режимът на заключване ограничава достъпа до /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes debug mode, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), някои ACPI интерфейси и CPU MSR регистрите, извикванията kexec_file и kexec_load са блокирани, режимът на заспиване е забранен, използването на DMA за PCI устройства е ограничено, импортирането на ACPI код от EFI променливи е забранено,
Не са разрешени манипулации с I/O портове, включително промяна на номера на прекъсване и I/O порт за серийния порт.

По подразбиране модулът за заключване не е активен, той се изгражда, когато опцията SECURITY_LOCKDOWN_LSM е указана в kconfig и се активира чрез параметъра на ядрото „lockdown=“, контролния файл „/sys/kernel/security/lockdown“ или опциите за асемблиране LOCK_DOWN_KERNEL_FORCE_*, които могат да приемат стойностите "интегритет" и "конфиденциалност". В първия случай функциите, които позволяват да се правят промени в работещото ядро ​​от потребителското пространство, са блокирани, а във втория случай функционалността, която може да се използва за извличане на чувствителна информация от ядрото, също е деактивирана.

Важно е да се отбележи, че заключването само ограничава стандартния достъп до ядрото, но не предпазва от модификации в резултат на използване на уязвимости. За блокиране на промените в работещото ядро, когато експлойтите се използват от проекта Openwall се развива отделен модул LKRG (Linux Kernel Runtime Guard).

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

Добавяне на нов коментар