In questo articolo Indice dei contenuti 2 sezioni
Google sta lavorando a Kage, un sottosistema sperimentale del kernel Linux pensato per chiudere i driver dentro delle sandbox senza però portarli fuori dal livello del kernel. L’idea di fondo è piuttosto semplice da spiegare, molto meno da realizzare: se un modulo contiene un errore, quell’errore non deve trascinare con sé l’intero sistema. Per riuscirci il progetto interviene soprattutto su due fronti, cioè l’accesso alla memoria e il flusso di esecuzione del codice.
Alla base c’è una tecnica chiamata Lightweight Fault Isolation, nata per isolare codice nativo all’interno dello stesso processo con costi più bassi rispetto alle sandbox tradizionali. Il lavoro porta la firma di alcuni ingegneri di Google ed è stato presentato alla Linux Plumbers Conference 2026. Il problema affrontato è noto a chi conosce anche solo un po’ l’architettura di Linux: i driver girano con privilegi molto elevati e basta un loro malfunzionamento per avere ripercussioni su tutta la macchina.
Come funziona Kage e cosa cambia per i driver Linux
Kage si appoggia a LLVM LFI per compilare i moduli in maniera tale che gli accessi alla memoria e il controllo del flusso restino confinati in una porzione ben precisa dello spazio virtuale. Qui sta il punto interessante. I driver isolati continuano a condividere con il kernel sia il livello di privilegio hardware sia lo spazio degli indirizzi, ma il loro codice viene sottoposto a vincoli introdotti già in fase di compilazione. Google punta così a ottenere un isolamento efficace senza separare completamente il processo, e questo permette di tenere più contenuti i costi delle interazioni tra il componente isolato e il kernel.
Il prototipo sfrutta anche le informazioni BTF per verificare in automatico le firme delle chiamate. Nelle comunicazioni con il modulo, poi, i puntatori del kernel vengono sostituiti con handle opachi. La versione mostrata alla conferenza riesce per ora a eseguire semplici moduli computazionali, niente di più. Il piano prevede di estendere passo dopo passo il modello alle funzionalità indispensabili per gestire driver veri, tra cui MMIO, condivisione dei buffer, DMA attraverso IOMMU e instradamento degli interrupt.
VKage e i primi prototipi su NVMe, rete e WiFi
Accanto al progetto principale c’è un’estensione chiamata VKage, che combina Kage con VirtIO seguendo un approccio rovesciato rispetto all’uso abituale di questa tecnologia. Con questa configurazione Google ha già messo in piedi prototipi funzionanti per NVMe, rete e WiFi all’interno degli ambienti isolati. È un passaggio significativo perché dimostra che il concetto può reggere anche con categorie di driver più vicine all’hardware reale, anche se siamo ancora lontani da una soluzione pronta per essere distribuita.
Le questioni aperte non mancano. Le prestazioni vanno verificate con ulteriori test e non è ancora chiaro se lo stesso metodo possa funzionare in modo efficace con i driver grafici. L’obiettivo della ricerca è aggiungere un livello di contenimento a una delle parti più privilegiate del sistema operativo, offrendo agli sviluppatori un modo per ridurre l’impatto degli errori nei moduli senza doverli per forza riscrivere da zero. Google sta valutando anche un possibile impiego futuro di Kage o VKage nei driver dei dispositivi Android. Sul versante LLVM il supporto LFI è già integrato per AArch64, mentre il lavoro sull’architettura x86/x86_64 è destinato a proseguire.
Fonte: TecnoAndroid


