SMEP / SMAP
Qu'est-ce que SMEP / SMAP ?
SMEP / SMAPSMEP et SMAP sont des fonctions du processeur qui empechent le noyau d'executer ou d'acceder aux pages utilisateur, bloquant les techniques courantes d'elevation de privileges locale.
Supervisor Mode Execution Prevention (SMEP) et Supervisor Mode Access Prevention (SMAP) sont des fonctions x86_64 introduites par Intel sur Ivy Bridge (SMEP, 2012) et Broadwell (SMAP, 2014) ; ARM propose les equivalents PXN et PAN. SMEP fait lever une faute par le processeur si le noyau tente d'executer des instructions depuis une page mappee en utilisateur, neutralisant les attaques ret2usr. SMAP leve une faute sur toute lecture ou ecriture du noyau vers des pages utilisateur, sauf si EFLAGS.AC est temporairement positionne via stac/clac (Linux : wrappers copy_from_user). Ensemble, ils ferment une large classe d'exploitations du noyau et completent KASLR, kCFI, KPTI et CET.
● Exemples
- 01
Sur un CPU avec SMEP, un exploit noyau provoque #PF en sautant vers du shellcode en espace utilisateur.
- 02
Sous Linux avec SMAP, copy_from_user utilise stac/clac pour acceder aux tampons utilisateur.
● Questions fréquentes
Qu'est-ce que SMEP / SMAP ?
SMEP et SMAP sont des fonctions du processeur qui empechent le noyau d'executer ou d'acceder aux pages utilisateur, bloquant les techniques courantes d'elevation de privileges locale. Cette notion relève de la catégorie Sécurité applicative en cybersécurité.
Que signifie SMEP / SMAP ?
SMEP et SMAP sont des fonctions du processeur qui empechent le noyau d'executer ou d'acceder aux pages utilisateur, bloquant les techniques courantes d'elevation de privileges locale.
Comment fonctionne SMEP / SMAP ?
Supervisor Mode Execution Prevention (SMEP) et Supervisor Mode Access Prevention (SMAP) sont des fonctions x86_64 introduites par Intel sur Ivy Bridge (SMEP, 2012) et Broadwell (SMAP, 2014) ; ARM propose les equivalents PXN et PAN. SMEP fait lever une faute par le processeur si le noyau tente d'executer des instructions depuis une page mappee en utilisateur, neutralisant les attaques ret2usr. SMAP leve une faute sur toute lecture ou ecriture du noyau vers des pages utilisateur, sauf si EFLAGS.AC est temporairement positionne via stac/clac (Linux : wrappers copy_from_user). Ensemble, ils ferment une large classe d'exploitations du noyau et completent KASLR, kCFI, KPTI et CET.
Comment se défendre contre SMEP / SMAP ?
Les défenses contre SMEP / SMAP combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de SMEP / SMAP ?
Noms alternatifs courants : SMEP, SMAP, PXN, PAN.
● Termes liés
- appsec№ 581
KASLR
Le KASLR randomise la base du noyau et l'adresse de chargement des modules a chaque demarrage afin d'empecher un attaquant d'utiliser des symboles fixes pour une elevation de privileges.
- appsec№ 217
Integrite du flot de controle
L'integrite du flot de controle (CFI) restreint les appels indirects et les retours du programme a un ensemble precalcule de cibles legitimes, bloquant ROP et JOP.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) est une fonctionnalite du processeur qui combine une shadow stack materielle et l'Indirect Branch Tracking (IBT) pour bloquer ROP, JOP et COP.
- appsec№ 670
Securite memoire
La securite memoire est la propriete qu'un programme ne lise, n'ecrive ni n'execute jamais une memoire qu'il n'a pas legitimement allouee, ce qui supprime des classes entieres de vulnerabilites.
- appsec№ 303
DEP
La prevention d'execution des donnees (DEP / NX / W^X) marque les pages memoire comme non executables pour empecher un attaquant d'executer du shellcode injecte dans la pile ou le tas.
- appsec№ 925
Return-Oriented Programming
Le ROP est une technique d'exploitation par reutilisation de code qui enchaine de courtes sequences terminees par RET pour executer un calcul arbitraire sans injecter de code.