Google Kage mette i driver Linux in sandbox: una falla non compromette tutto il kernel

Google sperimenta Kage, un sistema per isolare i driver Linux nel kernel con LLVM LFI: ecco come funziona e quali vantaggi promette.

Google sta sperimentando Kage, un sottosistema del kernel Linux progettato per confinare i driver all’interno di sandbox senza spostarli fuori dal livello del kernel.

L’obiettivo è limitare le conseguenze di un errore nel codice, intervenendo soprattutto sull’accesso alla memoria e sul flusso di esecuzione. La tecnologia utilizza Lightweight Fault Isolation, una tecnica sviluppata per isolare codice nativo all’interno dello stesso processo con costi inferiori rispetto alle sandbox tradizionali.

Il progetto è ancora sperimentale e nasce dal lavoro di ingegneri Google presentato alla Linux Plumbers Conference 2026. La proposta affronta un problema delicato dell’architettura Linux: i driver operano con privilegi molto elevati, quindi un loro malfunzionamento può avere conseguenze sull’intero sistema.

Come Kage prova a contenere i driver Linux

Kage sfrutta LLVM LFI per compilare i moduli in modo che accessi alla memoria e controllo del flusso rimangano confinati in una porzione specifica dello spazio virtuale.

I driver isolati continuano a condividere con il kernel il livello di privilegio hardware e lo spazio degli indirizzi, ma il codice viene sottoposto a vincoli introdotti durante la compilazione. In questo modo Google punta a ottenere isolamento senza ricorrere a una separazione completa del processo, mantenendo più contenuti i costi delle interazioni tra componente isolato e kernel.

Il prototipo utilizza anche le informazioni BTF per verificare automaticamente le firme delle chiamate e sostituire i puntatori del kernel con handle opachi nelle comunicazioni con il modulo. La versione mostrata durante la conferenza è in grado di eseguire semplici moduli computazionali, mentre il progetto prevede di estendere progressivamente il modello a funzionalità necessarie per gestire driver reali. Tra queste rientrano MMIO, condivisione dei buffer, DMA attraverso IOMMU e instradamento degli interrupt.

VKage mostra già alcuni prototipi funzionanti

Un’estensione chiamata VKage combina Kage con VirtIO secondo un approccio inverso rispetto all’impiego tradizionale di quest’ultima tecnologia. Google ha già utilizzato questa configurazione per realizzare prototipi funzionanti relativi a NVMe, rete e Wi-Fi all’interno degli ambienti isolati. Il risultato dimostra che il concetto può essere applicato a categorie di driver più vicine all’hardware reale, anche se non equivale ancora a una soluzione pronta per la distribuzione.

Restano infatti questioni importanti da verificare. Le prestazioni richiedono ulteriori test e non è ancora stabilito se lo stesso approccio possa essere utilizzato efficacemente con i driver grafici. Google sta inoltre valutando un possibile impiego futuro di Kage o VKage nei driver dei dispositivi Android. Sul fronte LLVM, il supporto LFI è già integrato per AArch64, mentre il lavoro sull’architettura x86/x86_64 è destinato a proseguire.

Il valore della ricerca sta quindi soprattutto nella possibilità di aggiungere un livello di contenimento a una parte particolarmente privilegiata del sistema operativo. Se il progetto riuscirà a mantenere un costo prestazionale accettabile e a gestire periferiche complesse, potrebbe offrire agli sviluppatori un’alternativa interessante per ridurre l’impatto degli errori nei moduli senza richiederne necessariamente una riscrittura completa.

Ti consigliamo anche

Link copiato negli appunti