Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 1058

SMEP / SMAP

Что такое SMEP / SMAP?

SMEP / SMAPSMEP и SMAP — функции процессора, запрещающие ядру выполнять или обращаться к страницам пользовательского пространства и блокирующие распространённые приёмы локального повышения привилегий.


Supervisor Mode Execution Prevention (SMEP) и Supervisor Mode Access Prevention (SMAP) — расширения x86_64, представленные Intel в Ivy Bridge (SMEP, 2012) и Broadwell (SMAP, 2014); у ARM существуют аналоги PXN и PAN. SMEP вызывает исключение, если ядро пытается выполнить инструкции на странице пользователя, чем останавливает ret2usr. SMAP вызывает исключение при любом чтении или записи ядра в пользовательские страницы, кроме случаев, когда код временно устанавливает EFLAGS.AC через stac/clac (в Linux — обёртки copy_from_user). Вместе они закрывают большой класс эксплойтов ядра и дополняют KASLR, kCFI, KPTI и CET.

Примеры

  1. 01

    На CPU с SMEP эксплойт ядра вызывает #PF при переходе к шеллкоду в пользовательской странице.

  2. 02

    В Linux с SMAP copy_from_user использует stac/clac для доступа к пользовательским буферам.

Частые вопросы

Что такое SMEP / SMAP?

SMEP и SMAP — функции процессора, запрещающие ядру выполнять или обращаться к страницам пользовательского пространства и блокирующие распространённые приёмы локального повышения привилегий. Относится к категории Безопасность приложений в кибербезопасности.

Что означает SMEP / SMAP?

SMEP и SMAP — функции процессора, запрещающие ядру выполнять или обращаться к страницам пользовательского пространства и блокирующие распространённые приёмы локального повышения привилегий.

Как работает SMEP / SMAP?

Supervisor Mode Execution Prevention (SMEP) и Supervisor Mode Access Prevention (SMAP) — расширения x86_64, представленные Intel в Ivy Bridge (SMEP, 2012) и Broadwell (SMAP, 2014); у ARM существуют аналоги PXN и PAN. SMEP вызывает исключение, если ядро пытается выполнить инструкции на странице пользователя, чем останавливает ret2usr. SMAP вызывает исключение при любом чтении или записи ядра в пользовательские страницы, кроме случаев, когда код временно устанавливает EFLAGS.AC через stac/clac (в Linux — обёртки copy_from_user). Вместе они закрывают большой класс эксплойтов ядра и дополняют KASLR, kCFI, KPTI и CET.

Как защититься от SMEP / SMAP?

Защита от SMEP / SMAP обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия SMEP / SMAP?

Распространённые альтернативные названия: SMEP, SMAP, PXN, PAN.

Связанные термины