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,访问完成后再恢复保护状态。

相关推荐
XH-hui几秒前
【打靶日记】THL 之 Facultad
linux·网络安全·1024程序员节·thehackerlabs
熙xi.3 分钟前
DHT11温湿度传感器Linux驱动开发完整流程
linux·运维·驱动开发
Yyyy48240 分钟前
Ubuntu部署 Kubernetes1.23
linux·运维·ubuntu
人工智能训练1 小时前
在 Ubuntu 系统中利用 conda 创建虚拟环境安装 sglang 大模型引擎的完整步骤、版本查看方法、启动指令及验证方式
linux·运维·服务器·人工智能·ubuntu·conda·sglang
☆璇1 小时前
【Linux】网络层协议IP
linux·服务器·tcp/ip
Xの哲學2 小时前
Linux ioctl 深度剖析:从原理到实践
linux·网络·算法·架构·边缘计算
孙同学要努力2 小时前
《Linux篇》进程控制——进程创建(写时拷贝)、进程终止(退出码,exit,_exit)
linux·运维·服务器
AC是你的谎言2 小时前
c++仿muduo库实现高并发服务器--connection类
linux·服务器·c++·学习
风123456789~3 小时前
【Linux专栏】多层变量的重定向赋值
linux·运维·服务器
uxiang_blog3 小时前
Linux学习之旅4
linux·运维·学习