Linux中的SMEP&SMAP
SMEP/SMAP
概述: 是x86处理器提供的硬件安全特性,目的是防止一些常见的内核攻击
SMEP
Supervisor Mode Execution Prevention
作用: 防止内核模式代码意外或恶意执行位于用户空间的代码。
实现方式: 通过控制寄存器CR4中设置特定位(位20)来启用的。linux内核在启动时会检测CPU是否支持SMEP,如果支持,则在早期初始化阶段启用该特定。这样,即时由于漏洞泄露导致内核错误地跳转到用户空间地址,CPU也会产生异常,阻止这种执行。
SMAP
Supervisor Mode Access Prevention
作用: 它禁止内核模式代码在没有明确许可的情况下访问用户空间内存。
实现方式: 通过控制寄存器CR4设置特定位(位21)来启用的。由于内核有时确实需要访问用户空间(例如执行 copy_to_user/copy_from_user 操作),内核在需要访问用户数据时,会暂时关闭SMAP保护。具体来说,内核会使用特殊的指令(如 stac 和 clac)来临时禁用 SMAP,访问完成后再恢复保护状态。
Linux中的SMEP&SMAP
http://example.com/2025/03/06/Linux中的SMEP/