UAF Kernel — Use-After-Free dans le noyau
★★★★★
Principe
Un Use-After-Free kernel exploite un objet libéré mais encore référencé. En réallouant l'emplacement avec un objet contrôlé (heap spray kernel via des structures de taille choisie), on contrôle des champs critiques — souvent des pointeurs de fonction.
Exploitation (slab/kmalloc)
# 1. Allouer l objet vulnérable (kmalloc-N)
# 2. Le libérer tout en gardant une référence (dangling)
# 3. Réallouer le slot avec un objet contrôlé de même taille
# (ex: msg_msg, sk_buff, tty_struct, setxattr...)
# 4. Déclencher l usage du pointeur corrompu -> RIP control
# 5. ROP kernel -> commit_creds(prepare_kernel_cred(0)) Heap spray kernel
Le choix de l'objet de réallocation ("elastic object") est central : il doit avoir la bonne taille (cache kmalloc) et un champ exploitable. Mitigations : CONFIG_SLAB_FREELIST_HARDENED, isolation des caches (kmalloc-cg), KASAN pour la détection en dev.