登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
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异常磁盘lvm恢复---惜分飞
JVM内存、GC与JConsole实战全解析:从理论到可视化的完整指南
Linux常用命令查询工具(好记性不如烂笔头)
一种可落地的任务令牌锁机制:设计原理、实战经验与容器化演进
JVM内存、GC与JConsole实战全解析
嵌入式系统内存魔法之分散加载
嵌入式系统内存魔法之分散加载
Linux DMA开发指南(一)
关于linux编译c语言文件的一些错误问题
[Linux] 手写轻量C++函数性能探查器:CPU占用率&耗时
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
linux异常磁盘lvm恢复---惜分飞
2
861
峰邑
2025-12-10
业界
JVM内存、GC与JConsole实战全解析:从理论到可视化的完整指南
0
828
于映雪
2025-12-12
安全
Linux常用命令查询工具(好记性不如烂笔头)
1
601
闾丘婉奕
2025-12-12
安全
一种可落地的任务令牌锁机制:设计原理、实战经验与容器化演进
0
1019
哈梨尔
2025-12-12
业界
JVM内存、GC与JConsole实战全解析
0
697
洫伍俟
2025-12-13
业界
嵌入式系统内存魔法之分散加载
0
850
坪钗
2025-12-13
业界
嵌入式系统内存魔法之分散加载
0
761
梅克
2025-12-13
业界
Linux DMA开发指南(一)
0
678
芮梦月
2025-12-15
安全
关于linux编译c语言文件的一些错误问题
1
958
诈知
2025-12-15
安全
[Linux] 手写轻量C++函数性能探查器:CPU占用率&耗时
0
621
颖顿庐
2025-12-15
回复
(3)
梳踟希
2025-11-23 19:56:03
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
热心回复!
孙淼淼
5 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
yyds。多谢分享
骆贵
9 小时前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
前排留名,哈哈哈
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
代码
签约作者
程序园优秀签约作者
发帖
鄂缮输
9 小时前
关注
0
粉丝关注
18
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
278
上下文协议(MCP)Java SDK 指南
691
Mac办公效率翻倍?Charmstone教你玩转多任
769
深耕上海14年,专业防水补漏:如何为厂房、
822
【A】字符串
456
一个完全由大模型AI Coding开发而成的程序
695
【Ubuntu】Ubuntu+VScode+ESP-IDF 的环境搭
656
60 秒出高质量科研图!Gemini+DeepSeek 绘
774
追踪链路--使用iptables/ipvs来记录后端pod
157
【译】初探 Visual Studio 2026 全新的用户
319
建筑渗漏治理的标准化实践:基于上海芮生建
50
Aspire 13:从.NET 编排工具到真正的多语言
997
用 .NET 最小化 API 构建高性能 API
396
VonaJS是如何做到文件级别精确HMR(热更新)
388
PHP 值对象实战指南:避免原始类型偏执
98
北京上门收酒机构排行|3家靠谱之选,卖酒
921
好拼|免费在线拼图工具又收到赞助啦
481
数据点的“社交距离”:衡量它们之间的相似
721
告别“草率编程”:Vibe Engineering 如何
10
字符串匹配算法
343
监听小工具-股票监控神奇九转分钟线信号触