SMEP / SMAP
¿Qué es SMEP / SMAP?
SMEP / SMAPSMEP y SMAP son funciones de CPU que impiden que el kernel ejecute o acceda a paginas de usuario, bloqueando tecnicas comunes de escalada local de privilegios.
Supervisor Mode Execution Prevention (SMEP) y Supervisor Mode Access Prevention (SMAP) son extensiones x86_64 introducidas por Intel en Ivy Bridge (SMEP, 2012) y Broadwell (SMAP, 2014); ARM ofrece equivalentes llamados PXN y PAN. SMEP hace que la CPU genere una falta si el kernel intenta ejecutar instrucciones desde una pagina mapeada a usuario, neutralizando los ataques ret2usr. SMAP provoca una falta en cualquier lectura o escritura del kernel sobre paginas de usuario salvo que se ponga EFLAGS.AC con stac/clac (Linux: envoltorios copy_from_user). Juntos eliminan una gran clase de explotaciones del kernel y complementan KASLR, kCFI, KPTI y CET.
● Ejemplos
- 01
En una CPU con SMEP, un exploit del kernel falla con #PF al saltar a shellcode en espacio de usuario.
- 02
En Linux con SMAP, copy_from_user usa stac/clac para acceder a buffers de usuario.
● Preguntas frecuentes
¿Qué es SMEP / SMAP?
SMEP y SMAP son funciones de CPU que impiden que el kernel ejecute o acceda a paginas de usuario, bloqueando tecnicas comunes de escalada local de privilegios. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa SMEP / SMAP?
SMEP y SMAP son funciones de CPU que impiden que el kernel ejecute o acceda a paginas de usuario, bloqueando tecnicas comunes de escalada local de privilegios.
¿Cómo funciona SMEP / SMAP?
Supervisor Mode Execution Prevention (SMEP) y Supervisor Mode Access Prevention (SMAP) son extensiones x86_64 introducidas por Intel en Ivy Bridge (SMEP, 2012) y Broadwell (SMAP, 2014); ARM ofrece equivalentes llamados PXN y PAN. SMEP hace que la CPU genere una falta si el kernel intenta ejecutar instrucciones desde una pagina mapeada a usuario, neutralizando los ataques ret2usr. SMAP provoca una falta en cualquier lectura o escritura del kernel sobre paginas de usuario salvo que se ponga EFLAGS.AC con stac/clac (Linux: envoltorios copy_from_user). Juntos eliminan una gran clase de explotaciones del kernel y complementan KASLR, kCFI, KPTI y CET.
¿Cómo defenderse de SMEP / SMAP?
Las defensas contra SMEP / SMAP combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para SMEP / SMAP?
Nombres alternativos comunes: SMEP, SMAP, PXN, PAN.
● Términos relacionados
- appsec№ 581
KASLR
KASLR aleatoriza la base del kernel y la carga de modulos en cada arranque para impedir que un atacante use direcciones fijas de kernel en escaladas de privilegios.
- appsec№ 217
Integridad del flujo de control
La integridad de flujo de control (CFI) restringe las llamadas indirectas y los retornos del programa a un conjunto precomputado de destinos legitimos, bloqueando ROP y JOP.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) es una caracteristica de CPU que combina shadow stack hardware e Indirect Branch Tracking (IBT) para bloquear ROP, JOP y COP.
- appsec№ 670
Seguridad de memoria
La seguridad de memoria es la propiedad de que un programa nunca lee, escribe ni ejecuta memoria que no haya asignado legitimamente, evitando clases enteras de vulnerabilidades.
- appsec№ 303
DEP
La prevencion de ejecucion de datos (DEP / NX / W^X) marca paginas de memoria como no ejecutables para impedir que un atacante ejecute shellcode inyectado en pila o monton.
- appsec№ 925
Return-Oriented Programming
ROP es una tecnica de explotacion por reutilizacion de codigo que encadena secuencias cortas terminadas en RET para ejecutar computacion arbitraria sin inyectar codigo nuevo.