SMEP Bypass — Contournement de SMEP (kernel)
★★★★★
SMEP
SMEP (Supervisor Mode Execution Prevention) empêche le CPU d'exécuter des pages userland en mode superviseur (kernel), neutralisant ret2usr. Son état est contrôlé par le bit 20 du registre CR4.
Techniques de contournement
# 1. Désactiver SMEP via ROP kernel
# mov cr4, <valeur sans bit 20> ; ret
rop = [pop_rdi, 0x6f0, mov_cr4_rdi, ...]
# 2. ROP kernel pur (ne pas exécuter de userland du tout)
# enchaîner des gadgets du kernel pour commit_creds
# 3. KASLR : leak d une adresse kernel d abord (dmesg, etc.) Au-delà de SMEP
SMAP (accès données), KPTI (isolation des tables de pages) et KASLR s'ajoutent souvent. Une exploitation kernel moderne combine leak (KASLR), ROP kernel (SMEP/SMAP) et retour propre en userland (KPTI trampoline).