Методи за оневозможување заштита од заклучување во Ubuntu за далечинско заобиколување на UEFI Secure Boot

Андреј Коновалов од Гугл објавена начин за далечинско оневозможување на заштитата Заклучувањепонудени во пакетот кернел на Линукс испорачан со Ubuntu (теоретски предложени техники имаат работи со кернелот на Fedora и други дистрибуции, но тие не се тестирани).

Заклучувањето го ограничува пристапот на root корисникот до кернелот и ги блокира патеките за бајпас на UEFI Secure Boot. На пример, во режим на заклучување, пристап до /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes debugging mode, mmiotrace, tracefs, BPF, PCMCIA CIS (Структура на информации за картички), некои интерфејсите се ограничени ACPI и MSR регистрите на процесорот, повиците до kexec_file и kexec_load се блокирани, режимот на мирување е забранет, употребата на DMA за PCI уреди е ограничена, увозот на ACPI код од променливите EFI е забранет, манипулациите со I/O портите не се дозволено, вклучително и менување на бројот на прекин и I/O порт за сериска порта.

Механизмот за заклучување неодамна беше додаден во главниот кернел на Линукс 5.4, но во кернелите доставени во дистрибуции сè уште се имплементира во форма на закрпи или дополнети со закрпи. Една од разликите помеѓу додатоците обезбедени во комплетите за дистрибуција и имплементацијата вградена во кернелот е можноста да се оневозможи обезбеденото заклучување ако имате физички пристап до системот.

Во Ubuntu и Fedora, комбинацијата на копчиња Alt+SysRq+X е обезбедена за да се оневозможи Заклучување. Разбирливо е дека комбинацијата Alt+SysRq+X може да се користи само со физички пристап до уредот, а во случај на далечинско хакирање и добивање root пристап, напаѓачот нема да може да го оневозможи Lockdown и, на пример, да вчита модул со rootkit кој не е дигитално потпишан во кернелот.

Андреј Коновалов покажа дека методите базирани на тастатура за потврдување на физичкото присуство на корисникот се неефикасни. Наједноставниот начин да се оневозможи Заклучувањето би бил програмски симулација притискање на Alt+SysRq+X преку /dev/uinput, но оваа опција првично е блокирана. Во исто време, беше можно да се идентификуваат уште најмалку два методи на замена Alt+SysRq+X.

Првиот метод вклучува користење на интерфејсот „sysrq-trigger“ - за да го симулирате, само овозможете го овој интерфејс со пишување „1“ на /proc/sys/kernel/sysrq, а потоа напишете „x“ во /proc/sysrq-trigger. Рече дупка елиминирани во декемвриското ажурирање на кернелот на Ubuntu и во Fedora 31. Вреди да се одбележи дека програмерите, како и во случајот со /dev/uinput, првично се обиде да блокирајте го овој метод, но блокирањето не функционираше поради Грешки во код.

Вториот метод вклучува емулација на тастатура преку USB/IP а потоа испраќање на секвенцата Alt+SysRq+X од виртуелната тастатура. USB/IP кернелот испорачан со Ubuntu е стандардно овозможен (CONFIG_USBIP_VHCI_HCD=m и CONFIG_USBIP_CORE=m) и ги обезбедува дигитално потпишаните usbip_core и vhci_hcd модули потребни за работа. Напаѓачот може да се создаде виртуелен USB уред, лансиран мрежен управувач на интерфејсот за враќање на јамката и поврзување како далечински УСБ-уред користејќи USB/IP. За наведениот метод пријавени до програмерите на Ubuntu, но поправка сè уште не е објавена.

Извор: opennet.ru

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