Metódy na vypnutie ochrany Lockdown v Ubuntu na vzdialené obídenie UEFI Secure Boot

Andrey Konovalov zo spoločnosti Google publikovaný spôsob, ako vzdialene vypnúť ochranu Lockdownponúkaný v balíku linuxového jadra dodávanom s Ubuntu (teoreticky navrhnuté techniky mušt pracovať s jadrom Fedory a inými distribúciami, ale nie sú testované).

Uzamknutie obmedzuje prístup používateľa root k jadru a blokuje cesty obchádzania UEFI Secure Boot. Napríklad v režime uzamknutia je prístup k /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes debug mode, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), niektoré rozhrania sú obmedzené ACPI a MSR registre CPU, volania kexec_file a kexec_load sú blokované, režim spánku je zakázaný, použitie DMA pre PCI zariadenia je obmedzené, import ACPI kódu z EFI premenných je zakázaný, manipulácia s I/O portami nie je povolená povolené, vrátane zmeny čísla prerušenia a I/O portu pre sériový port.

Mechanizmus Lockdown bol nedávno pridaný do hlavného linuxového jadra 5.4, no v jadrách dodávaných v distribúciách je stále implementovaný vo forme záplat alebo doplnený o záplaty. Jedným z rozdielov medzi doplnkami poskytovanými v distribučných súpravách a implementáciou zabudovanou do jadra je možnosť zakázať poskytnuté uzamykanie, ak máte fyzický prístup k systému.

V Ubuntu a Fedore je k dispozícii kombinácia kláves Alt+SysRq+X na deaktiváciu uzamknutia. Rozumie sa, že kombináciu Alt+SysRq+X je možné použiť len s fyzickým prístupom k zariadeniu a v prípade vzdialeného hacknutia a získania root prístupu nebude môcť útočník vypnúť Lockdown a napríklad načítať modul s rootkitom, ktorý nie je digitálne podpísaný do jadra.

Andrey Konovalov ukázal, že metódy založené na klávesnici na potvrdenie fyzickej prítomnosti používateľa sú neúčinné. Najjednoduchším spôsobom, ako vypnúť uzamknutie, by bolo programovo simulácia stlačením Alt+SysRq+X cez /dev/uinput, ale táto možnosť je pôvodne zablokovaná. Zároveň bolo možné identifikovať minimálne dva ďalšie spôsoby substitúcie Alt+SysRq+X.

Prvá metóda zahŕňa použitie rozhrania „sysrq-trigger“ – na jeho simuláciu stačí povoliť toto rozhranie napísaním „1“ do /proc/sys/kernel/sysrq a potom napísať „x“ do /proc/sysrq-trigger. Spomínaná diera eliminovaný v decembrovej aktualizácii jadra Ubuntu a vo Fedore 31. Je pozoruhodné, že vývojári, ako v prípade /dev/uinput, spočiatku sa snažil blokovať túto metódu, ale blokovanie nefungovalo kvôli Chyby v kóde.

Druhá metóda zahŕňa emuláciu klávesnice cez USB/IP a potom odoslanie sekvencie Alt+SysRq+X z virtuálnej klávesnice. Jadro USB/IP dodávané s Ubuntu je predvolene povolené (CONFIG_USBIP_VHCI_HCD=m a CONFIG_USBIP_CORE=m) a poskytuje digitálne podpísané moduly usbip_core a vhci_hcd potrebné na prevádzku. Útočník môže vytvoriť virtuálne USB zariadenie, spustený sieťový obslužný program na rozhraní loopback a jeho pripojenie ako vzdialeného USB zariadenia pomocou USB/IP. O zadanej metóde nahlásené vývojárom Ubuntu, ale oprava ešte nebola vydaná.

Zdroj: opennet.ru

Pridať komentár