Dieci anni fa nasceva il Kernel Self-Protection Project, conosciuto come KSPP, con l'obiettivo di cambiare il paradigma della sicurezza in Linux: non più semplicemente correggere vulnerabilità una per una, ma impedire in modo strutturale che intere classi di bug potessero esistere o essere sfruttate. Kees Cook, figura centrale del progetto e sviluppatore in Google, ha recentemente ripercorso dieci anni di progressi nel talk "Kernel Hardening: Ten Years Deep".
Il punto di partenza era critico: in media una vulnerabilità nel kernel restava scoperta e sfruttabile per oltre cinque anni. Android e tanti altri sistemi basati su Linux venivano rilasciati con versioni vecchie del kernel, quindi prive delle ultime patch di sicurezza. Il KSPP ha introdotto un nuovo approccio: trasformare il kernel stesso in un ambiente ostile agli exploit.
I risultati sono impressionanti. Grazie al lavoro del KSPP, alcune famiglie di bug sono scomparse. Array a lunghezza variabile (VLA), variabili non inizializzate, comportamenti ambigui nei blocchi switch: tutte queste fonti comuni di vulnerabilità sono state bandite dal kernel. Funzioni pericolose sono state rimpiazzate, il compilatore è stato istruito per rifiutare codice ambiguo, e nuove primitive come __ro_after_init impediscono modifiche a strutture dichiarate "immutabili" dopo l'avvio.
Parallelamente, molte mitigazioni sono state rafforzate. La randomizzazione dell'indirizzo base del kernel (KASLR) si è fatta più fine. Gli stack dei processi sono ora mappati dinamicamente con vmap, rendendo imprevedibile la loro posizione in memoria. Le allocazioni slab includono controlli di coerenza, padding e tecniche di poisoning per rilevare corruzioni. Gli indirizzi del kernel non vengono più stampati in chiaro nei log: %p restituisce un hash.
Più recentemente si è investito in tecniche moderne di Control Flow Integrity: IBT/BTI per il flusso "forward", Shadow Call Stack per quello "backward" e la variante KCFI per proteggere le chiamate indirette. Tutto questo per ostacolare gli attacchi ROP e la riesecuzione di gadget noti. Anche la gestione dei contatori di riferimento è stata resa "satura", per prevenire overflow che porterebbero a use-after-free.
Il quadro che ne emerge è quello di un kernel che oggi, anche se non invulnerabile, è nettamente più resistente agli attacchi. L'attenzione ora si concentra sui Use-After-Free, molto più complessi da neutralizzare. Kees Cook auspica la diffusione di tecniche proattive, analisi dinamiche e una maggiore adozione upstream delle patch. L'equilibrio tra sicurezza, prestazioni e compatibilità rimane delicato, ma l'obiettivo di lungo periodo è chiaro: rendere ogni exploit kernel sempre più difficile, costoso e improbabile.
Dopo dieci anni, il KSPP non è solo una collezione di patch, ma un cambio di mentalità: la sicurezza è diventata parte integrante dello sviluppo del kernel. Una rivoluzione silenziosa che oggi protegge miliardi di dispositivi.
Commenti
Posta un commento