Јадрото на Linux 5.4 доби закрпи за ограничување на root пристапот до внатрешните делови на кернелот

Линус Торвалдс прифатени вклучено во претстојното издание на кернелот Linux 5.4 е збир на закрпи "заклучување« предложено Дејвид Хауелс (Црвена шапка) и Метју Гарет (Метју Гарет, работи во Google) за да го ограничи пристапот на root корисникот до кернелот. Функционалноста поврзана со заклучување е вклучена во опционално вчитан LSM модул (Модул за безбедност на Linux), што поставува бариера помеѓу UID 0 и кернелот, ограничувајќи одредени функционалности на ниско ниво.

Ако напаѓачот постигне извршување на код со права на root, тој може да го изврши својот код на ниво на јадрото, на пример, со замена на кернелот користејќи kexec или меморија за читање/пишување преку /dev/kmem. Најочигледната последица од таквата активност може да биде заобиколен пат UEFI Secure Boot или преземање чувствителни податоци складирани на ниво на јадрото.

Првично, функциите за ограничување на коренот беа развиени во контекст на зајакнување на заштитата на потврдено подигање, а дистрибуциите користат закрпи од трети страни за да го блокираат бајпасот на UEFI Secure Boot веќе подолго време. Во исто време, таквите ограничувања не беа вклучени во главниот состав на кернелот поради несогласувања во нивната имплементација и стравувања од нарушување на постоечките системи. Модулот „заклучување“ апсорбира закрпи кои веќе се користат во дистрибуциите, кои беа редизајнирани во форма на посебен потсистем кој не е врзан за UEFI Secure Boot.

Режимот за заклучување го ограничува пристапот до /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes режим за отстранување грешки, mmiotrace, tracefs, BPF, PCMCIA CIS (структура со информации за картичка), некои ACPI интерфејси и процесорот 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 се развива посебен модул ЛКРГ (Linux Kernel Runtime Guard).

Извор: opennet.ru

Додадете коментар