论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
主机系统
›
linux
›
Linux内核内存保护机制:aslr和canary
Linux内核内存保护机制:aslr和canary
魏晓东
金牌会员
|
2024-12-11 03:28:44
|
显示全部楼层
|
阅读模式
楼主
主题
936
|
帖子
936
|
积分
2808
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,但如果你不明确知道本身在干什么,不要这么做!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
魏晓东
金牌会员
这个人很懒什么都没写!
楼主热帖
基础常用dos命令
Vulnhub靶机-Al-Web-1
Unity技术手册 - Shader实现灵魂状态 ...
.NET主流的几款重量级 ORM框架 ...
云原生之旅 - 14)遵循 GitOps 实践的 ...
Java集合框架(三)-HashSet
vuluhub_jangow-01-1.0.1
gis pro中将shp文件转为/导入地理数据 ...
Android studio连接MySQL并完成简单的 ...
弱隔离级别 & 事务并发问题 ...
标签云
运维
CIO
存储
服务器
浏览过的版块
.Net
前端开发
云原生
网络安全
移动端开发
开源技术
终端安全
快速回复
返回顶部
返回列表