Metody deaktivace ochrany Lockdown v Ubuntu pro vzdálené obcházení UEFI Secure Boot

Andrej Konovalov z firmy Google vydal metoda vzdáleného vypnutí ochrany Lockdown, nabízené v balíčku s jádrem Linuxu dodávaném v Ubuntu (teoreticky navrhované metody musí fungovat s jádrem Fedora a dalších distribucí, ale nebyly testovány).

Lockdown omezuje přístup uživatele root k jádru a blokuje obcházení UEFI Secure Boot. Například v režimu lockdown je omezen přístup k /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, ladicím režimu kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), některým rozhraním ACPI a CPU MSR registrům, blokovány jsou volání kexec_file a kexec_load, zakázán je přechod do spánkového režimu, omezeno je používání DMA pro PCI zařízení, zakázán je import kódu ACPI z EFI proměnných, manipulace s vstupně-výstupními porty, včetně změny čísla přerušení a vstupně-výstupního portu pro sériový port.

Mechanismus Lockdown byl nedávno přidán do jádra Linuxu 5.4, ale v jádrech dodávaných v distribucích je stále implementován ve formě patchů nebo je doplněn patchemi. Jedním z rozdílů poskytovaných v distribucích přídavků od integrované implementace v jádře je možnost deaktivace poskytované blokace při fyzickém přístupu k systému.

V Ubuntu a Fedoře je pro vypnutí Lockdown určena kombinace kláves Alt+SysRq+X. Předpokládá se, že kombinaci Alt+SysRq+X lze použít pouze při fyzickém přístupu k zařízení, a v případě vzdáleného hacknutí a získání přístupu root útočník nebude schopen Lockdown vypnout a například načíst do jádra nezaručený digitálně podepsaný modul s rootkitem.

Andrej Konovalov ukázal, že metody potvrzení fyzické přítomnosti uživatele spojené s používáním klávesnice jsou neefektivní. Nejjednodušším způsobem, jak deaktivovat Lockdown, by byla programová simulace stisknutí Alt+SysRq+X přes /dev/uinput, ale tato možnost byla od počátku blokována. Přesto bylo možné odhalit alespoň dvě další způsoby, jak substituovat Alt+SysRq+X.

První způsob je spojen s použitím rozhraní „sysrq-trigger“ — pro simulaci stačí zapnout toto rozhraní, zápisem „1“ do /proc/sys/kernel/sysrq, a poté zapsat „x“ do /proc/sysrq-trigger. Uvedená cesta odstraněna v prosincové aktualizaci jádra Ubuntu a ve Fedoře 31. Je pozoruhodné, že vývojáři, podobně jako v případě /dev/uinput, zpočátku se pokoušeli tento způsob zablokovat, ale blokace nefungovala kvůli chybě v kódu.

Druhý způsob souvisí s emulací klávesnice přes USB/IP a následným odesláním sekvence Alt+SysRq+X z virtuální klávesnice. V dodávaném jádru Ubuntu je USB/IP ve výchozím nastavení zapnuto (CONFIG_USBIP_VHCI_HCD=m a CONFIG_USBIP_CORE=m) a jsou poskytnuty potřebné pro práci certifikované moduly usbip_core a vhci_hcd. Útočník může vytvořit virtuální USB zařízení, spuštěním síťového zpracovatele na loopback rozhraní a připojením ho jako vzdálené USB zařízení pomocí USB/IP. O uvedené metodě bylo informováno vývojářům Ubuntu, ale oprava zatím nebyla vydána.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster