Theo de Raadt, informatico canadese fondatore di OpenBSD, sta lavorando da diverse settimane ad una nuova funzionalità del kernel, in grado di offrire nuove garanzie di sicurezza. KARL (Kernel Address Randomized Link) consente di avere, ad ogni avvio del computer, un eseguibile del kernel sempre diverso dal punto di vista binario. Così facendo, un eventuale attaccante non avrebbe punti di riferimento relativamente alle funzioni del kernel che vengono utilizzate, né agli oggetti e ai puntatori che vengono allocati.
Il funzionamento di KARL ha una base logica semplice: mentre i kernel delle versioni stable di OpenBSD vengono linkati attraverso una procedura sequenziale e deterministica, i componenti dei nuovi kernel aventi KARL attivo vengono linkati in ordine pseudo-casuale : il primo componente è sempre il processo di bootstrap del kernel, seguito poi da tutti i file.c e dal runtime-system del linguaggio assembly. Il binario così ottenuto risulta sempre differente dai precedenti.
Windows e Linux, invece, hanno adottato da diverso tempo la tecnologia KASLR (Kernel Address Space Layout Randomization) , la quale consiste nel caricare il kernel di volta in volta in locazioni di memoria differenti: nel caso del kernel Linux, la funzionalità è stata attivata di default a partire dalla versione 4.12. In pratica, mentre il kernel di OpenBSD viene eseguito sempre nella stessa area di memoria ma possiede un binario diverso ad ogni avvio o aggiornamento, il kernel di Windows e Linux ha sempre lo stesso binario ma viene eseguito ogni volta in un’area di memoria casuale.
Dal punto di vista teorico, non ci sarebbero impedimenti alla realizzazione di una combinazione di queste due funzionalità: un’ambizione dichiarata, secondo BleepingComputer , da Fabian Wosar, CTO della società di sicurezza Emsisoft , che starebbe collaborando con Microsoft per integrare un’implementazione di KARL all’interno del kernel di Windows.
L’annuncio dell’introduzione di KARL ha portato ad una serie di dichiarazioni – entusiastiche e non – da parte di vari utenti della comunità open-source. Alcuni hanno espresso perplessità per quanto riguarda l’affidabilità delle operazioni di linking del kernel, durante le quali un fallimento potrebbe comportare il non avvio della macchina. Un’eventualità smentita nettamente da Theo de Raadt e dallo sviluppatore Peter Hessler, i quali affermano che le operazioni sono atomiche ed il linking richiede meno di un secondo su macchine veloci, rendendo il processo estremamente affidabile e sicuro.
Elia Tufarolo