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.
● Примеры
- 01
На CPU с SMEP эксплойт ядра вызывает #PF при переходе к шеллкоду в пользовательской странице.
- 02
В Linux с SMAP copy_from_user использует stac/clac для доступа к пользовательским буферам.
● Частые вопросы
Что такое SMEP / SMAP?
SMEP и SMAP — функции процессора, запрещающие ядру выполнять или обращаться к страницам пользовательского пространства и блокирующие распространённые приёмы локального повышения привилегий. Относится к категории Безопасность приложений в кибербезопасности.
Что означает SMEP / SMAP?
SMEP и SMAP — функции процессора, запрещающие ядру выполнять или обращаться к страницам пользовательского пространства и блокирующие распространённые приёмы локального повышения привилегий.
Как защититься от SMEP / SMAP?
Защита от SMEP / SMAP обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия SMEP / SMAP?
Распространённые альтернативные названия: SMEP, SMAP, PXN, PAN.