Metody deaktivace zabezpečení uzamčením v Ubuntu pro vzdálené obcházení zabezpečeného spouštění UEFI

Andrej Konovalov ze společnosti Google zveřejněna způsob, jak vzdáleně deaktivovat ochranu Lockdownnabízený v balíčku linuxového jádra dodávaného s Ubuntu (techniky teoreticky navrhované mít pracovat s jádrem Fedory a dalšími distribucemi, ale nejsou testovány).

Uzamčení omezuje přístup uživatelů root k jádru a blokuje cesty obcházení UEFI Secure Boot. Například v režimu uzamčení je přístup k /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes debug mode, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), některé rozhraní je omezeno ACPI a MSR registry CPU, volání kexec_file a kexec_load jsou blokována, režim spánku je zakázán, použití DMA pro PCI zařízení je omezeno, import ACPI kódu z EFI proměnných je zakázán, manipulace s I/O porty nejsou povoleny povoleno, včetně změny čísla přerušení a I/O portu pro sériový port.

Mechanismus Lockdown byl nedávno přidán do hlavního linuxového jádra 5.4, ale v jádrech dodávaných v distribucích je stále implementován ve formě záplat nebo doplněn o záplaty. Jedním z rozdílů mezi doplňky poskytovanými v distribučních sadách a implementací zabudovanou do jádra je možnost zakázat poskytované zamykání, pokud máte fyzický přístup k systému.

V Ubuntu a Fedoře je k dispozici kombinace kláves Alt+SysRq+X pro deaktivaci uzamčení. Rozumí se, že kombinaci Alt+SysRq+X lze použít pouze s fyzickým přístupem k zařízení a v případě vzdáleného hackování a získání rootovského přístupu nebude útočník schopen zakázat Lockdown a například načíst modul s rootkitem, který není digitálně podepsán do jádra.

Andrey Konovalov ukázal, že metody založené na klávesnici pro potvrzení fyzické přítomnosti uživatele jsou neúčinné. Nejjednodušším způsobem, jak zakázat uzamčení, by bylo programově simulace stisknutím Alt+SysRq+X přes /dev/uinput, ale tato možnost je zpočátku zablokována. Zároveň bylo možné identifikovat minimálně další dva způsoby substituce Alt+SysRq+X.

První metoda zahrnuje použití rozhraní „sysrq-trigger“ – pro jeho simulaci stačí povolit toto rozhraní zápisem „1“ do /proc/sys/kernel/sysrq a poté zapsat „x“ do /proc/sysrq-trigger. Řečená mezera vyloučeno v prosincové aktualizaci jádra Ubuntu a ve Fedoře 31. Je pozoruhodné, že vývojáři, stejně jako v případě /dev/uinput, zpočátku pokusil se blokovat tuto metodu, ale blokování nefungovalo kvůli Chyby v kódu.

Druhá metoda zahrnuje emulaci klávesnice přes USB/IP a poté odeslání sekvence Alt+SysRq+X z virtuální klávesnice. Jádro USB/IP dodávané s Ubuntu je ve výchozím nastavení povoleno (CONFIG_USBIP_VHCI_HCD=m a CONFIG_USBIP_CORE=m) a poskytuje digitálně podepsané moduly usbip_core a vhci_hcd potřebné pro provoz. Útočník může vytvořit virtuální USB zařízení, běh síťový obslužný program na rozhraní zpětné smyčky a jeho připojení jako vzdáleného USB zařízení pomocí USB/IP. O zadané metodě hlášeno vývojářům Ubuntu, ale oprava ještě nebyla vydána.

Zdroj: opennet.ru

Přidat komentář