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

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

Lockdown ограничава достъпа на потребителя root до ядрото и блокира обходните пътища на 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 е ограничен, блокирани са повикванията kexec_file и kexec_load, забранен е преходът в спящ режим, ограничено е използването на DMA за PCI устройства, забранен е вносът на ACPI код от EFI променливи, не се допуска манипулиране с портовете за вход/изход, включително промяна на номера на прекъсването и порта за вход/изход за серийния порт.

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

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