Sicurezza

Il kernel Linux sarà compatibile con SecureBoot

Il kernel Linux sarà compatibile con SecureBoot, e i creatori delle varie distribuzioni non dovranno più ricorrere a stratagemmi per far sì che il sistema operativo sia installabile anche sui nuovi sistemi dotati della funzione di sicurezza voluta da Microsoft.

Non c'è ancora una data certa per questa importante novità in Linux, e lo stato dei lavori al momento è descritto come ancora molto acerbo. Secondo Vivek Goyal (Red Hat) si tratta tuttavia di un'evoluzione necessaria, di grande importanza per la sicurezza.

"Con l'arrivo di SecureBoot, si ritiene che Sys-Kexec() sia pericoloso. Uno può bypassare la funzione di avvio sicuro ed eseguire il suo kernel. Così Matthew Garret ha proposto di disabilitare sys_kexec() in modalità secureboot", ha scritto infatti Goyal nella mailing list dedicata al kernel Linux.

Esiste in altre parole un pericolo, per quanto remoto, legato agli attuali metodi usati per creare distribuzioni Linux che possano funzionare con SecureBoot. L'API sys_kexec() infatti "permette di riavviare il sistema caricando una nuova immagine di un nuovo kernel, e non ha modo di verificare la firma digitale dei file ELF che vengono caricati. Di conseguenza, anche in un ambiente protetto da Secureboot, rischieresti comunque di poter rendere vana la protezione del kernel stesso, perché c'è la possibilità di caricare un secondo kernel non firmato digitalmente", ci ha spiegato Marco Giuliani di ITSec.

Ecco allora la necessità di trovare un'alternativa che non implichi tali rischi. "Dalla discussione ho concluso che ci serve un modo per firmare /sbin/kexec. L'eseguibile firmato può avere più capacità e possiamo permettere o bloccare l'accesso a sys_kexec basandoci su tale capacità", continua lo sviluppatore.

Goyal si è quindi messo al lavoro su una patch del kernel che possa gestire le firme digitali di un eseguibile, e verificare che le informazioni siano affidabili e legittime. L'inserimento di tali capacità dentro al kernel Linux sarebbe la chiave di volta per risolvere una volta per tutte il "problema" SecureBoot.

"La patch in questione prevede l'integrazione della verifica della firma digitale anche per gli eventuali nuovi kernel che vengono caricati tramite l'API sys_exec(). Si presuppone che il sistema sia già partito in Secureboot, quindi il kernel iniziale sia già inalterato, e la verifica della firma digitale da parte di sys_exec() non sia modificata in alcun modo. È una sorta di verifica a catena insomma", ci ha spiegato ancora Giuliani.

Come molti sanno, i computer più recenti devono avere questa funzione UEFI abilitata per ottenere la certificazione Windows 8. Si tratta di una funzione di sicurezza che impedisce l'esecuzione di codice non certificato, e che potenzialmente può impedire l'installazione di una distribuzione Linux sul sistema. È possibile per l'utente disabilitare tale funzione, ma così si perde anche la protezione che essa rappresenta – e inoltre tale possibilità può essere eliminata dal produttore della scheda madre. Per questo sono nate diverse soluzioni alternative, come per esempio il bootloader creato direttamente dalla Fondazione Linux, che sostanzialmente inganna SecureBoot. Canonical invece ha preferito crearsi una chiave di sicurezza per Ubuntu, mentre OpenSUSE ha scelto di affidarsi al loader di Fedora.

La soluzione proposta da Goyal tuttavia fa un passo ulteriore, andando teoricamente ad agire direttamente sul kernel Linux, e ad attenuare i potenziali pericoli insiti nelle altre soluzioni. In ogni caso è chiaro che il mondo del Pinguino ha ormai superato lo scoglio SecureBoot, e potrà sfruttare nel migliore dei modi le potenzialità offerte dal moderno UEFI.

Altra questione è invece quella etica, sollevata dalla Free Software Foundation prima e dallo stesso Richard Stallman poi. Quest'ultimo era arrivato a dire che SecureBoot dovrebbe addirittura essere illegale, perché più che aumentare la sicurezza riduce la liberà degli utenti, e difficilmente il guru del free software cambierà idea per un'evoluzione del kernel Linux.