登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
每日签到
每天签到奖励2圆-6圆
发帖说明
VIP申请
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
VIP申请
VIP网盘
网盘
联系我们
每日签到
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Linux内核内存保护机制:aslr和canary
Linux内核内存保护机制:aslr和canary
[ 复制链接 ]
鄂缮输
2025-6-9 13:52:08
Linux内核内存保护机制:aslr和canary
ASLR
ASLR技术,全称为Address space layout randomization(地址空间布局随机化),是现代通用操作系统基本都会配备的一个功能,其确保了每次实例化进程时内存排布都是不同的。
对于某些内存段,会附加随机的offset来防止缓冲区攻击等,这是OS层面的保护,当然也可以兼容硬件层面使用ECC bit进行合法性检测的冗余保护。
更确切的说,在Linux系统下的进程模型中,aslr对于内存排布的影响如下:
不变:代码段/BSS/全局数据区等
改变:加载的依赖库的代码位置(手动链接的,最典型的是glibc,e.g. 比如使用printf的时候重放会出现链接空间地址段错误,若禁用aslr则可以进行攻击),栈空间,堆空间等(后两者视aslr的不同层级,有可能不会附加,取决于内核版本)
进程地址空间排布(来自代码随想录,仅供参考):
在
GDB环境
下运行程序,aslr是默认关闭的,这也便于我们进行程序的调试。
这里举出来一个典型的实用案例:
我在工作的实际需求中需要建立一个虚拟化的沙盒,底层基座依赖了一个uni-kernel的bsd系统,出于sandbox的snapshot迁移重放需求,需要手动关闭aslr机制,并附加硬件层面的内存保护。
开启/关闭aslr执行以下代码,开启为1,关闭为0:
sysctl kern.elf64.aslr.stack=0
sysctl kern.elf64.aslr.pie_enable=0
sysctl kern.elf64.aslr.enable=0
sysctl kern.elf64c.aslr.stack=0
sysctl kern.elf64c.aslr.pie_enable=0
sysctl kern.elf64c.aslr.enable=0
sysctl -a | grep aslr
复制代码
如果使用gcc编译器的时候,可以附加-fPIE的编译选项,以支持aslr机制。
canary
我们的栈中通常有一个magic number,用来检测该块内存空间是否被其他意外修改。它有一个好听的名字:canary,金丝雀,美丽而又脆弱。
它通常被部署在栈顶返回地址附近的某个位置,确保该处空间没有被外部缓冲区溢出修改,虽然只是一个简单的机制,但是可以防止很多比较简单的攻击或者非恶意失误,是内存保护的第一道防线。
通常在函数被调用时生成,且该段对于用户态来说是严格不可读的,所以只能用fork/提权/劫持sys函数等暴力破拆的方式探测处理。
这个思想不仅限于内核场景,在通用需求下做数据校验的时候也可以使用,或者需求可靠的TCB场景时也可用。这种情况下就是在user space中进行自定义规则的校验了。
在gcc/clang中可以使用-fno-stack-protector编译选项来禁用canary,但如果你不明确知道自己在干什么,不要这么做!
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Linux
内核
内存
保护
机制
相关帖子
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
linux系统目录和文件夹的区别
Linux gzip 命令使用说明
Linux tar 命令使用说明
Linux性能分析工具和方法
Redis哨兵机制
rocketmq重试机制和死信消息
Linux系统编程入门(下)
中控IFace302考勤机二开内存问题解决方案
在鸡哥14x上安装Linux:Fedora 42 上手体验
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
0
380
锄淫鲷
2025-08-27
安全
linux系统目录和文件夹的区别
0
950
颖顿庐
2025-08-28
业界
Linux gzip 命令使用说明
0
976
郗燕岚
2025-08-29
安全
Linux tar 命令使用说明
0
1032
庾签
2025-08-30
业界
Linux性能分析工具和方法
0
129
眸胝
2025-09-01
安全
Redis哨兵机制
0
450
镝赋洧
2025-09-05
安全
rocketmq重试机制和死信消息
0
223
厨浴
2025-09-07
业界
Linux系统编程入门(下)
0
781
卜笑
2025-09-07
业界
中控IFace302考勤机二开内存问题解决方案
1
873
沦嘻亟
2025-09-07
业界
在鸡哥14x上安装Linux:Fedora 42 上手体验
0
892
闰咄阅
2025-09-08
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
鄂缮输
2025-6-9 13:52:08
关注
0
粉丝关注
12
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
杭环
9988
凶契帽
9988
4
氛疵
9988
5
黎瑞芝
9988
6
猷咎
9986
7
里豳朝
9986
8
肿圬后
9986
9
蝓俟佐
9984
10
虽裘侪
9984
查看更多