Методи за отключване на защита Lockdown в Ubuntu за отдалечено заобикаляне на UEFI Secure Boot

Андрей Коновалов от компания Google публикува метод за дистанционно изключване на защитата Заключване, предложена в пакета с ядрото на Linux, предоставено в Ubuntu (теоретично предложените методи треватe да работят с ядрото на Fedora и други дистрибуции, но не са тествани).

Lockdown ограничава достъпа на потребителя root до ядрото и блокира обходите на UEFI Secure Boot. Например, в режим на lockdown се ограничава достъпът до /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, режим на отстраняване на грешки kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Структура на информацията за карти), някои интерфейси ACPI и MSR-регистри на CPU, блокират се извикванията kexec_file и kexec_load, забранява се преминаването в режим на заспиване, лимитира се използването на DMA за PCI-устройства, забранява се вноса на ACPI код от EFI променливи, не се допуска манипулация с входно/изходни портове, включително промяна на номера на прекъсването и входно/изходния порт за серийния порт.

Механизмът Lockdown беше добавен наскоро в основния състав на ядрото на Linux 5.4, но в предоставените в дистрибуции ядра все още се реализира под формата на пачове или се допълва с пачове. Една от разликите, предоставяни в дистрибуциите надстройки от вградената в ядрото реализация, е възможността за изключване на предоставената защита при наличие на физически достъп до системата.

В Ubuntu и Fedora комбинацията от клавиши Alt+SysRq+X е предвидена за изключване на Lockdown. Предполага се, че комбинацията Alt+SysRq+X може да се използва само при физически достъп до устройството, а в случай на дистанционно хакване и получаване на root достъп атакуващият не може да изключи Lockdown и, например, да зареди в ядрото модул без подпис с rootkit.

Андрей Коновалов показа, че свързаните с използването на клавиатурата методи за потвърждение на физическото присъствие на потребителя не са ефективни. Най-простият начин за изключване на Lockdown би бил софтуерната симулация на натискането на 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 от виртуалната клавиатура. В доставеното с Ubuntu ядро USB/IP по подразбиране е активирано (CONFIG_USBIP_VHCI_HCD=m и CONFIG_USBIP_CORE=m) и са предоставени необходимите за работа модули usbip_core и vhci_hcd, заверени с цифров подпис. Атакуващият може да се създаде виртуално USB-устройство, стартиране на мрежов обработчик на loopback интерфейса и свързването му като отдалечено USB-устройство чрез USB/IP. За посочения метод е съобщено на разработчиците на Ubuntu, но корекцията все още не е пусната.

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

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