Metode za onemogočanje varnosti zaklepanja v Ubuntuju za izogibanje varnemu zagonu UEFI na daljavo

Andrej Konovalov iz Googla objavljeno način za oddaljeno onemogočanje zaščite Lockdownna voljo v paketu jedra Linuxa, ki je priložen Ubuntuju (teoretično predlagane tehnike imajo delujejo z jedrom Fedore in drugimi distribucijami, vendar niso testirane).

Zaklepanje omeji dostop korenskega uporabnika do jedra in blokira obhodne poti varnega zagona UEFI. V načinu zaklepanja je na primer dostop do /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, način odpravljanja napak kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), nekateri vmesniki so omejeni, registri ACPI in MSR CPU, klici kexec_file in kexec_load so blokirani, način mirovanja je prepovedan, uporaba DMA za naprave PCI je omejena, uvoz kode ACPI iz spremenljivk EFI je prepovedan, manipulacije z V/I vrati niso dovoljeno, vključno s spreminjanjem številke prekinitve in V/I vrat za serijska vrata.

Mehanizem Lockdown je bil nedavno dodan glavnemu jedru Linuxa 5.4, vendar je v jedrih, dobavljenih v distribucijah, še vedno implementiran v obliki popravkov ali dopolnjen s popravki. Ena od razlik med dodatki, ki so na voljo v distribucijskih kompletih, in implementacijo, vgrajeno v jedro, je možnost, da onemogočite zagotovljeno zaklepanje, če imate fizični dostop do sistema.

V Ubuntuju in Fedori je za onemogočanje zaklepanja na voljo kombinacija tipk Alt+SysRq+X. Razume se, da je kombinacijo Alt+SysRq+X mogoče uporabiti samo s fizičnim dostopom do naprave, v primeru oddaljenega vdora in pridobitve korenskega dostopa pa napadalec ne bo mogel onemogočiti Lockdown in npr. modul z rootkitom, ki ni digitalno podpisan v jedro.

Andrey Konovalov je pokazal, da so metode, ki temeljijo na tipkovnici za potrditev fizične prisotnosti uporabnika, neučinkovite. Najenostavnejši način za onemogočanje zaklepanja je programsko simulacija pritiskom na Alt+SysRq+X prek /dev/uinput, vendar je ta možnost sprva blokirana. Hkrati je bilo mogoče identificirati vsaj še dve metodi zamenjave Alt+SysRq+X.

Prva metoda vključuje uporabo vmesnika "sysrq-trigger" - če ga želite simulirati, preprosto omogočite ta vmesnik tako, da napišete "1" v /proc/sys/kernel/sysrq in nato napišete "x" v /proc/sysrq-trigger. Omenjena zanka odpraviti v decembrski posodobitvi jedra Ubuntu in v Fedori 31. Omeniti velja, da so razvijalci, tako kot v primeru /dev/uinput, sprva poskusil blokirajte to metodo, vendar blokiranje ni delovalo zaradi Napake v kodi.

Druga metoda vključuje emulacijo tipkovnice prek USB/IP in nato pošiljanje zaporedja Alt+SysRq+X z virtualne tipkovnice. Jedro USB/IP, ki je priloženo Ubuntuju, je privzeto omogočeno (CONFIG_USBIP_VHCI_HCD=m in CONFIG_USBIP_CORE=m) in zagotavlja digitalno podpisana modula usbip_core in vhci_hcd, potrebna za delovanje. Napadalec lahko ustvariti virtualna USB naprava, sprožil omrežni upravljalnik na vmesniku povratne zanke in ga povežete kot oddaljeno napravo USB z uporabo USB/IP. O navedeni metodi poročali razvijalcem Ubuntuja, vendar popravek še ni bil izdan.

Vir: opennet.ru

Dodaj komentar