Metode pentru a dezactiva protecția Lockdown în Ubuntu pentru a ocoli de la distanță UEFI Secure Boot

Andrei Konovalov de la Google a publicat modalitate de a dezactiva protecția de la distanță autoblocareoferit în pachetul de kernel Linux livrat cu Ubuntu (tehnici sugerate teoretic must lucrează cu nucleul Fedora și alte distribuții, dar nu sunt testate).

Blocarea restricționează accesul utilizatorului root la kernel și blochează căile de ocolire UEFI Secure Boot. De exemplu, în modul de blocare, acces la /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, kprobes debug mode, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), unele interfețele sunt limitate registrele ACPI și MSR ale CPU, apelurile către kexec_file și kexec_load sunt blocate, modul de repaus este interzis, utilizarea DMA pentru dispozitivele PCI este limitată, importul codului ACPI din variabilele EFI este interzis, manipulările cu porturile I/O nu sunt permis, inclusiv modificarea numărului de întrerupere și a portului I/O pentru portul serial.

Mecanismul de blocare a fost adăugat recent la kernel-ul principal Linux 5.4, dar în nucleele furnizate în distribuții este încă implementat sub formă de patch-uri sau completat cu patch-uri. Una dintre diferențele dintre suplimentele furnizate în kiturile de distribuție și implementarea încorporată în nucleu este capacitatea de a dezactiva blocarea furnizată dacă aveți acces fizic la sistem.

În Ubuntu și Fedora, combinația de taste Alt+SysRq+X este furnizată pentru a dezactiva Blocarea. Se înțelege că combinația Alt+SysRq+X poate fi folosită numai cu acces fizic la dispozitiv, iar în cazul hacking-ului de la distanță și obținerii accesului root, atacatorul nu va putea dezactiva Lockdown și, de exemplu, să încarce un modul cu un rootkit care nu este conectat digital în nucleu.

Andrey Konovalov a arătat că metodele bazate pe tastatură pentru confirmarea prezenței fizice a utilizatorului sunt ineficiente. Cel mai simplu mod de a dezactiva Blocarea ar fi să fie programat simulare apăsând Alt+SysRq+X prin /dev/uinput, dar această opțiune este inițial blocată. În același timp, a fost posibil să se identifice cel puțin încă două metode de substituție Alt+SysRq+X.

Prima metodă implică utilizarea interfeței „sysrq-trigger” - pentru a o simula, activați această interfață scriind „1” în /proc/sys/kernel/sysrq, apoi scrieți „x” în /proc/sysrq-trigger. A spus lacună eliminat în actualizarea kernelului Ubuntu din decembrie și în Fedora 31. Este de remarcat faptul că dezvoltatorii, ca și în cazul /dev/uinput, inițial a încercat să blocați această metodă, dar blocarea nu a funcționat din cauza Erori în cod.

A doua metodă implică emularea tastaturii prin USB/IP și apoi trimiterea secvenței Alt+SysRq+X de la tastatura virtuală. Nucleul USB/IP livrat cu Ubuntu este activat în mod implicit (CONFIG_USBIP_VHCI_HCD=m și CONFIG_USBIP_CORE=m) și furnizează modulele usbip_core și vhci_hcd semnate digital necesare pentru funcționare. Atacatorul poate создать dispozitiv USB virtual, lansat handler de rețea pe interfața loopback și conectarea acestuia ca dispozitiv USB la distanță utilizând USB/IP. Despre metoda specificată raportat pentru dezvoltatorii Ubuntu, dar o remediere nu a fost încă lansată.

Sursa: opennet.ru

Adauga un comentariu