Metode de dezactivare a protecției Lockdown în Ubuntu pentru ocolirea de la distanță a UEFI Secure Boot

Andrei Konovalov de la compania Google a publicat metoda de dezactivare la distanță a protecției Lockdown, oferit în pachetul cu nucleul Linux livrat cu Ubuntu (metodele propuse teoretic ar trebui să funcționeze cu nucleul Fedora și alte distribuții, dar nu au fost testate).

Lockdown restricționează accesul utilizatorului root la nucleu și blochează căile de ocolire UEFI Secure Boot. De exemplu, în modul lockdown, accesul la /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, modul de depanare kprobes, mmiotrace, tracefs, BPF, CIS PCMCIA (Structura de Informații a Cardului), anumite interfețe ACPI și registrele MSR ale CPU-ului, sunt blocate apelurile kexec_file și kexec_load, se interzice trecerea în modul de suspendare, se limitează utilizarea DMA pentru dispozitive PCI, se interzice importul codului ACPI din variabile EFI, manipularile cu porturile de intrare/ieșire nu sunt permise, inclusiv modificarea numărului de întrerupere și a portului de intrare/ieșire pentru portul serial.

Mecanismul Lockdown a fost adăugat recent la compunerea principală a nucleului Linux 5.4, dar în nucleele livrate de distribuții este încă implementat sub formă de patch-uri sau completat cu patch-uri. Una dintre diferențele între extensiile furnizate în distribuții și implementarea încorporată în nucleu este posibilitatea de a dezactiva blocarea furnizată în cazul în care se are acces fizic la sistem.

În Ubuntu și Fedora, combinația de taste Alt+SysRq+X este prevăzută pentru dezactivarea Lockdown. Se subînțelege că combinația Alt+SysRq+X poate fi utilizată doar cu acces fizic la dispozitiv, iar în cazul unui hack de la distanță și obținerea accesului root, atacatorul nu va putea dezactiva Lockdown și, de exemplu, să încarce în nucleu un modul cu semnătură digitală nevalidată care conține un rootkit.

Andrei Konovalov a demonstrat că metodele legate de utilizarea tastaturii pentru confirmarea prezenței fizice a utilizatorului sunt ineficiente. Cea mai simplă metodă de dezactivare a Lockdown ar fi simularea software a apelului Alt+SysRq+X prin /dev/uinput, dar această variantă este blocată inițial. Totuși, au fost identificate cel puțin încă două metode de substituție pentru Alt+SysRq+X.

Prima metodă este legată de utilizarea interfeței „sysrq-trigger” — pentru simulare este suficient să activăm această interfață, scriind „1” în /proc/sys/kernel/sysrq, iar apoi să scriem „x” în /proc/sysrq-trigger. Această lacună remediată a fost rectificată în actualizarea din decembrie a nucleului Ubuntu și în Fedora 31. De remarcat este că dezvoltatorii, similar cu cazul /dev/uinput, inițial au încercat blocați această metodă, dar blocarea nu a funcționat din cauza unei erori în cod.

A doua metodă este legată de emularea tastaturii prin USB/IP și trimiterea ulterioară a secvenței Alt+SysRq+X de la o tastatură virtuală. În kernelul livrat cu Ubuntu, USB/IP este activat în mod implicit (CONFIG_USBIP_VHCI_HCD=m și CONFIG_USBIP_CORE=m) și sunt furnizate modulele necesare, semnate digital, usbip_core și vhci_hcd. Atacatorul poate crea un dispozitiv USB virtual, pornind un handler de rețea pe interfața loopback și conectându-l ca dispozitiv USB la distanță prin USB/IP. Despre această metodă s-a raportat dezvoltatorilor Ubuntu, dar o corectare nu a fost încă lansată.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster