Андрей Коновалов от компания Google метод за дистанционно отключване на защита , предлагана в пакета с ядрото на 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 , но в доставяните в дистрибуции ядра той все още е реализиран под формата на патчове или допълнен с патчове. Едно от отличията, предоставяни в дистрибуции, от вградената в ядрото реализация, е възможността за деактивиране на предоставената блокировка при наличието на физически достъп до системата.
В 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, първоначално да се блокира този метод, но блокировката не работеше поради кода.
Вторият метод е свързан с емулирането на клавиатурата чрез и последващото изпращане на последователността 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
