Andriej Konowalow z firmy Google metoda zdalnego dezaktywowania ochrony , proponowanej w pakiecie z jądrem Linux, dostarczanym w Ubuntu (teoretycznie zaproponowane metody działać z jądrem Fedory i innych dystrybucji, ale nie zostały przetestowane).
Lockdown ogranicza dostęp użytkownika root do jądra i blokuje sposoby obejścia UEFI Secure Boot. Na przykład, w trybie lockdown ogranicza się dostęp do /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, trybu debugowania kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), niektórych interfejsów ACPI i rejestrów CPU MSR, blokowane są wywołania kexec_file i kexec_load, zabrania się przejścia w tryb uśpienia, ogranicza się użycie DMA dla urządzeń PCI, zabrania się importu kodu ACPI z zmiennych EFI, nie dopuszcza się manipulacji portami wejścia/wyjścia, w tym zmiany numeru przerwania i portu wejścia/wyjścia dla portu szeregowego.
Mechanizm Lockdown został niedawno dodany do głównego składu jądra Linux , ale w dostarczanych w dystrybucjach jądrach wciąż jest realizowany w formie poprawek lub uzupełniany poprawkami. Jedną z różnic między udostępnianymi w dystrybucjach rozszerzeniami a wbudowaną w jądro realizacją jest możliwość wyłączenia dostarczanej blokady przy fizycznym dostępie do systemu.
W Ubuntu i Fedorze do dezaktywacji Lockdown przewidziano kombinację klawiszy Alt+SysRq+X. Zakłada się, że kombinację Alt+SysRq+X można używać tylko przy fizycznym dostępie do urządzenia, a w przypadku zdalnego włamania i uzyskania dostępu root napastnik nie będzie mógł wyłączyć Lockdown i na przykład załadować do jądra modułu z rootkitem o niepodpisanym certyfikatem cyfrowym.
Andriej Konowalow pokazał, że związane z użyciem klawiatury metody potwierdzenia fizycznej obecności użytkownika są nieefektywne. Najprostszym sposobem dezaktywacji Lockdown byłoby programowe naciśnięcia Alt+SysRq+X przez /dev/uinput, ale ta opcja jest początkowo zablokowana. Przy tym udało się zidentyfikować co najmniej jeszcze dwa sposoby podstawienia Alt+SysRq+X.
Pierwszy sposób związany jest z użyciem interfejsu „sysrq-trigger” — aby zasymulować wystarczy włączyć ten interfejs, zapisując „1” w /proc/sys/kernel/sysrq, a następnie zapisać „x” w /proc/sysrq-trigger. Podana luka w grudniowej aktualizacji jądra Ubuntu oraz w Fedory 31. Zauważalne jest, że programiści, podobnie jak w przypadku /dev/uinput, pierwotnie zablokować tę metodę, jednak blokada nie zadziałała z powodu w kodzie.
Drugi sposób dotyczy emulacji klawiatury przez i wysłania sekwencji Alt+SysRq+X z wirtualnej klawiatury. W dostarczonym w Ubuntu jądrze USB/IP jest domyślnie włączone (CONFIG_USBIP_VHCI_HCD=m oraz CONFIG_USBIP_CORE=m) i dostarczone są niezbędne do działania moduły usbip_core i vhci_hcd z potwierdzonym podpisem cyfrowym. Atakujący może wirtualne urządzenie USB, serwer sieciowy na interfejsie loopback i łącząc go jako zdalne urządzenie USB przy użyciu USB/IP. O wskazanej metodzie programistom Ubuntu, ale poprawka nie została jeszcze wydana.
Źródło: opennet.ru
