Metodi per disabilitare la sicurezza di blocco in Ubuntu per bypassare l'avvio sicuro UEFI in remoto

Andrej Konovalov di Google pubblicato modo per disabilitare da remoto la protezione Lockdownofferto nel pacchetto del kernel Linux fornito con Ubuntu (tecniche teoricamente suggerite avere funzionano con il kernel di Fedora e altre distribuzioni, ma non sono testati).

Il blocco limita l'accesso dell'utente root al kernel e blocca i percorsi di bypass dell'avvio protetto UEFI. Ad esempio, in modalità di blocco, l'accesso a /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, modalità di debug kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), alcuni interfacce limitate Registri ACPI e MSR della CPU, chiamate a kexec_file e kexec_load bloccate, modalità sospensione vietata, utilizzo DMA per dispositivi PCI limitato, importazione di codice ACPI da variabili EFI vietata, manipolazioni con porte I/O non consentite consentiti, inclusa la modifica del numero di interrupt e della porta I/O per la porta seriale.

Il meccanismo di Lockdown è stato recentemente aggiunto al kernel principale di Linux 5.4, ma nei kernel forniti nelle distribuzioni è ancora implementato sotto forma di patch o integrato con patch. Una delle differenze tra i componenti aggiuntivi forniti nei kit di distribuzione e l'implementazione incorporata nel kernel è la possibilità di disabilitare il blocco fornito se si ha accesso fisico al sistema.

In Ubuntu e Fedora, viene fornita la combinazione di tasti Alt+SysRq+X per disabilitare il blocco. Resta inteso che la combinazione Alt+SysRq+X può essere utilizzata solo con accesso fisico al dispositivo e, in caso di hacking remoto e ottenimento dell'accesso root, l'aggressore non sarà in grado di disattivare il Lockdown e, ad esempio, caricare un file modulo con un rootkit senza firma digitale nel kernel.

Andrey Konovalov ha dimostrato che i metodi basati sulla tastiera per confermare la presenza fisica dell'utente sono inefficaci. Il modo più semplice per disabilitare il blocco sarebbe quello a livello di codice simulazione premendo Alt+SysRq+X tramite /dev/uinput, ma questa opzione è inizialmente bloccata. Allo stesso tempo è stato possibile identificare almeno altri due metodi di sostituzione Alt+SysRq+X.

Il primo metodo prevede l'utilizzo dell'interfaccia "sysrq-trigger": per simularla, basta abilitare questa interfaccia scrivendo "1" in /proc/sys/kernel/sysrq, quindi scrivere "x" in /proc/sysrq-trigger. Detta scappatoia eliminato nell'aggiornamento del kernel di Ubuntu di dicembre e in Fedora 31. È interessante notare che gli sviluppatori, come nel caso di /dev/uinput, inizialmente provato a blocca questo metodo, ma il blocco non ha funzionato a causa di Errori nel codice.

Il secondo metodo prevede l'emulazione della tastiera tramite USB/IP e poi inviando la sequenza Alt+SysRq+X dalla tastiera virtuale. Il kernel USB/IP fornito con Ubuntu è abilitato per impostazione predefinita (CONFIG_USBIP_VHCI_HCD=m e CONFIG_USBIP_CORE=m) e fornisce i moduli usbip_core e vhci_hcd con firma digitale necessari per il funzionamento. L'attaccante può создать dispositivo USB virtuale, correndo gestore di rete sull'interfaccia di loopback e collegandolo come dispositivo USB remoto tramite USB/IP. Informazioni sul metodo specificato segnalato agli sviluppatori di Ubuntu, ma non è stata ancora rilasciata una correzione.

Fonte: opennet.ru

Aggiungi un commento