Exploitation del kernel Linux: da utente a ring 0
Il kernel è il livello più privilegiato: un bug lì (in una syscall, un driver, il networking) permette a un processo non privilegiato di ottenere l'esecuzione in kernel mode e diventare root.
Le classi e le mitigazioni
Bug tipici: use-after-free e overflow in slab (kmalloc), race condition (il celebre Dirty COW/Dirty Pipe), null-deref. L'obiettivo spesso è sovrascrivere cred del processo o dirottare un puntatore a funzione del kernel.
Difese del kernel: KASLR (randomizza la base), SMEP/SMAP (il kernel non esegue/legge memoria userland), KPTI, stack canary. Gli exploit moderni usano leak per battere KASLR e tecniche come cross-cache o ROP kernel.
// obiettivo classico: commit_creds(prepare_kernel_cred(0)) -> rootDifesa
Patch tempestive (i bug kernel sono pubblici in fretta), abilita tutte le mitigazioni, riduci la superficie (blocca syscall inutili con seccomp, moduli non necessari), namespaces/lockdown, e kernel hardening (grsecurity-like, KSPP). Meno codice kernel esposto, meno bug raggiungibili.