Aller au contenu

Glossaire

SMEP et SMAP

Des fonctionnalités du processeur qui empêchent le noyau d'exécuter (SMEP) ou d'accéder (SMAP) à la mémoire de l'espace utilisateur, mettant en échec la technique classique ret2usr.

SMEP (Supervisor Mode Execution Prevention) et SMAP (Supervisor Mode Access Prevention) sont des fonctionnalités des processeurs x86, configurées via le registre CR4, qui empêchent le code privilégié (ring 0) de faire confiance à la mémoire de l'espace utilisateur. SMEP déclenche une faute si le noyau tente d'exécuter une page utilisateur ; SMAP déclenche une faute s'il tente de la lire ou de l'écrire sans avoir explicitement basculé un drapeau.

Ensemble, elles mettent en échec le ret2usr, où un exploit noyau détournait l'exécution du noyau vers une charge utile de l'attaquant mappée en espace utilisateur. La réponse est le ROP noyau : réutiliser le code du noyau et garder toutes les données en mémoire noyau. Les noyaux modernes épinglent aussi CR4 pour bloquer l'astuce consistant à effacer le bit SMEP avec un gadget. Voir ret2usr, SMEP et SMAP.