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

Andrej Konovalov z firmy Google publikoval metóda vzdialeného vypnutia ochrany Lockdown, ponúkanej v balíku s jadrom Linux, dodávaným v Ubuntu (teoreticky navrhnuté metódy musíte fungovať s jadrom Fedora a inými distribúciami, ale neboli testované).

Lockdown obmedzuje prístup používateľa root k jadru a blokuje cesty obídenia UEFI Secure Boot. Napríklad v režime lockdown je obmedzený prístup k /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, režimu ladenia kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), niektorým ACPI rozhraním a MSR registrami CPU, sú blokované volania kexec_file a kexec_load, zakazuje sa prechod do režimu spánku, obmedzuje sa používanie DMA pre PCI zariadenia, zakazuje sa import ACPI kódu z EFI premenných, nie sú povolené manipulácie s vstupno/výstupnými portami, vrátane zmeny čísla prerušenia a vstupno/výstupného portu pre sériový port.

Mechanizmus Lockdown bol nedávno pridaný do hlavnej súčasti jadra Linux 5.4, ale v dodávaných distribúciách jadier je stále realizovaný vo forme patchov alebo doplnený patchmi. Jedným z rozdielov poskytnutých v distribúciách nadstavieb od zabudovanej v jadre implementácie je možnosť vypnutia poskytovanej blokácie pri fyzickom prístupe k systému.

V Ubuntu a Fedore je na vypnutie Lockdown predpísaná kombinácia kláves Alt+SysRq+X. Předpokládá se, že kombináciu Alt+SysRq+X je možné použiť iba pri fyzickom prístupe k zariadeniu, a v prípade vzdialeného hacku a získania prístupových práv root útočník nemôže vypnúť Lockdown a napríklad načítať do jadra nezaznamenaný digitálne podpísaný modul s rootkitom.

Andrej Konovalov ukázal, že metódy potvrdzovania fyzickej prítomnosti používateľa súvisiace s používaním klávesnice sú neefektívne. Najjednoduchší spôsob vypnutia Lockdown by bol softvérový simulácia stlačenia Alt+SysRq+X cez /dev/uinput, ale táto možnosť je pôvodne zablokovaná. Napriek tomu sa podarilo identifikovať aspoň ďalšie dva spôsoby substitúcie Alt+SysRq+X.

Prvý spôsob sa týka použitia rozhrania „sysrq-trigger“ — na simuláciu stačí povoliť toto rozhranie, zapísať „1“ do /proc/sys/kernel/sysrq, a potom zapísať „x“ do /proc/sysrq-trigger. Uvedená diera bola odstránená bola v decembrovom aktualizácii jadra Ubuntu a vo Fedore 31. Zaujímavé je, že vývojári, ako v prípade /dev/uinput, pôvodne síce sa snažili zablokovať túto metódu, ale blokovanie nefungovalo kvôli chyby kódu.

Druhý spôsob je spojený s emuláciou klávesnice cez USB/IP a následným odoslaním sekvencie Alt+SysRq+X z virtuálnej klávesnice. V dodávanom jadre Ubuntu je USB/IP predvolene povolené (CONFIG_USBIP_VHCI_HCD=m a CONFIG_USBIP_CORE=m) a sú poskytnuté potrebné certifikované digitálne moduly usbip_core a vhci_hcd. Útočník môže vytvoriť virtuálne USB zariadenie, spustením sieťového spracovateľa na loopback rozhraní a pripojením ho ako vzdialené USB zariadenie pomocou USB/IP. O tejto metóde bolo informované vývojárom Ubuntu, ale oprava zatiaľ nebola vydaná.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster