登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
Linux内核内存保护机制:aslr和canary
Linux内核内存保护机制:aslr和canary
[ 复制链接 ]
鄂缮输
2025-6-9 13:52:08
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
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
内核
内存
保护
机制
相关帖子
嵌入式系统内存魔法之分散加载
嵌入式系统内存魔法之分散加载
Linux DMA开发指南(一)
关于linux编译c语言文件的一些错误问题
[Linux] 手写轻量C++函数性能探查器:CPU占用率&耗时
HoughLinesP 霍夫变换 C++ opencv 内存报错处理
深入理解Linux IPIP隧道:原理、配置与实战
深入理解MyBatis缓存机制:一二级缓存全解析
强壳保护NET代码!Dnguard 4.9.4最新企业旗舰版下载地址
FFmpeg 内存输入&输出
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
嵌入式系统内存魔法之分散加载
0
868
坪钗
2025-12-13
业界
嵌入式系统内存魔法之分散加载
1
775
梅克
2025-12-13
业界
Linux DMA开发指南(一)
0
701
芮梦月
2025-12-15
安全
关于linux编译c语言文件的一些错误问题
1
975
诈知
2025-12-15
安全
[Linux] 手写轻量C++函数性能探查器:CPU占用率&耗时
1
631
颖顿庐
2025-12-15
业界
HoughLinesP 霍夫变换 C++ opencv 内存报错处理
2
212
驶桐柢
2025-12-18
业界
深入理解Linux IPIP隧道:原理、配置与实战
0
770
申屠梓彤
2025-12-18
安全
深入理解MyBatis缓存机制:一二级缓存全解析
0
811
戎玉珂
2025-12-18
业界
强壳保护NET代码!Dnguard 4.9.4最新企业旗舰版下载地址
1
770
庞悦
2025-12-19
安全
FFmpeg 内存输入&输出
0
8
劳欣笑
2025-12-21
回复
(3)
梳踟希
2025-11-23 19:56:03
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
热心回复!
孙淼淼
2025-12-12 02:55:52
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
yyds。多谢分享
骆贵
4 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
签约作者
程序园优秀签约作者
发帖
鄂缮输
4 天前
关注
0
粉丝关注
18
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9981
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9950
查看更多
今日好文热榜
737
一文读懂RAG架构如何助力AI
492
一文读懂RAG架构如何助力AI
541
ROS2之TF介绍
397
SW 随笔 001 — InlineArray 带你飞(Since
690
当遇见 CatchAdmin V5-模块化设计重新定义
491
【有手就行】SWIFT:花20分钟把大模型的名
561
论文速读记录 | 2025.12(2)
374
浮点数的本质:为什么计算机无法精确表示0.
727
Flink源码阅读:如何生成JobGraph
929
Python 潮流周刊#132:30 年 Python 自由职
482
大模型榜单周报(2025/12/20)
158
【节点】[LinearToGammaSpaceExact节点]原
790
Aspire 与 Azure Functions 深度集成:架构
1006
阿里Z-Image图像生成模型容器部署
311
痞子衡嵌入式:16MB以上NOR Flash地址模式
669
最新AI换脸软件,全面升级可直播,Mirage下
452
热点 Key 与大 Key 治理——识别、拆分、预
647
Media Extended
331
vlookup的终结者splookup,9个案例讲透查询
873
ROS2之Launch介绍