В ядрото Linux 5.4 са приети пачове за ограничаване на достъпа на root до вътрешностите на ядрото

Линус Торвальдс приема в състава на бъдещото издание на ядрото Linux 5.4 набор от пачове «lockdown«, предложен Дейвид Хоувелс (David Howells, работи в Red Hat) и Матю Гарет (Matthew Garrett, работи в Google) с цел ограничаване на достъпа на потребителя root до ядрото. Свързаната с «lockdown» функционалност е извлечена в опционално зареждащ се LSM-модул (Linux Security Module), който поставя бариера между UID 0 и ядрото, ограничавайки определена нискоуровнева функционалност.

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

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

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

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

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

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

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