没有合适的资源?快使用搜索试试~ 我知道了~
首页堆中针挑漏洞:二进制分析技术驱动免费检测
堆中针挑漏洞:二进制分析技术驱动免费检测
0 下载量 121 浏览量
更新于2024-06-16
收藏 3.9MB PDF 举报
"在堆中寻找针:结合二进制分析技术触发免费后使用"这篇学术研究论文由乔斯林·费斯特撰写,于2017年由格勒诺布尔阿尔卑斯大学发布。论文主要探讨了在现代软件开发中日益重要的安全性问题,特别是针对漏洞检测的挑战。作者运用二进制分析这一关键技术,聚焦于如何在代码层次上识别和防止可能导致安全漏洞的错误,如读取或写入敏感数据的行为,以及程序执行的控制权被劫持。 本文的研究背景强调了随着软件复杂性和网络环境的增加,确保软件安全的重要性日益凸显,对于软件发行商、终端用户和政府机构来说都是一个亟待解决的关键问题。作者通过深入分析二进制代码,探索如何利用这些技术手段来提高漏洞检测的精确性和效率,以便尽早发现并修复潜在的安全隐患。 该论文是多学科审查的结果,涉及到的研究人员和专家包括但不限于玛丽-洛尔·P·奥特、洛朗·穆尼尔、菲利普·艾尔巴兹-文森特等,他们在Verimag进行预处理工作,并在格勒诺布尔INP的数学、科学和技术领域提供了专业指导。文章的发布平台是HAL,这是一个法国的开放存取档案馆,旨在存储和传播科研论文,无论其是否公开,支持跨学科的学术交流。 值得注意的是,论文的提交日期是2018年,这意味着这项工作是在当时的安全研究背景下进行的,反映了当时的最新进展和技术趋势。由于涉及了学术评审过程,论文的质量得到了同行专家的认可,包括帕斯卡尔·库克、奥雷利安·弗朗西斯和萨拉·泽诺等多位知名学者,他们分别在各自领域内担任了审查员角色。 "在堆中寻找针"这篇论文不仅提供了深入理解二进制分析在软件安全中的应用,还展示了多学科合作在解决实际问题上的价值,对于信息安全专业人士和研究人员具有很高的参考价值。
资源详情
资源推荐
5
第一部分
触发免费后使用:
概念和贡献
7
第二章
堆漏洞
本章旨在介绍一些概念,这些概念是充分理解本文所研究的主题所必需的。在内存损坏中,有
一类特殊的漏洞涉及堆中发生的错误。这些漏洞与其他漏洞的不同之处在于它们与动态内存管
理相关。虽然常见的内存损坏(如缓冲区溢出或使用未初始化的内存)可能会同时占用堆内存
和非堆内存,但动态内存管理带来了新类型的漏洞和新类型的利用。
大纲 本章的其余部分组织如下:
第
2.1
节回顾了一些关于程序内存的概念,并详细介绍了与分析堆漏洞相关的问题
•
第
2.2
节详细介绍了本论文中研究的漏洞:免费后使用
;
最后,第2.3节描述了检测或防止此漏洞的技术和工具的最新状态。
2.1
堆特性
本节提供了理解处理堆的程序分析所需的概念和概念。
2.1.1
内存布局
程序的内存布局被拆分为多个部分。我们通常区分五个部分(如图2.1所示)。
图2.1:内存部分表示。
"
文本
"部分包含程序的已执行指令。在DATA部分中,定位程序使用
的常量变量
。BSS
包含
静态
和
全局
变量。动态分配位于HEAP内部,并在下面进行描述。最后,
堆栈
是存储函
数局部变量的内存部分
·
·
8
无论何时调用函数,其局部变量所需的内存都将在堆栈中分配。堆栈向较低的地址增长,表示
最后分配的变量具有最低的地址。堆栈中属于函数的部分称为其
堆栈框架
。由于函数的局部变
量的数量是有限的,因此在编译
1
期间计算
堆栈框架的
大小。在x86体系结构中,当前函数的堆
栈帧由两个特定寄存器分隔:分别用于基指针和堆栈指针的ebp和esp前一个指向堆栈帧的开
始,而后一个指向其结束(因此EBP
的
值高于ESP)。一些其他特定的值被保存在堆栈帧中,
例如函数参数、函数返回后要执行的指令的地址,或者对应于调用方
堆栈帧的
ebp值。图2.2显
示了堆栈帧布局的示例。这里,函数
f1包含一
个局部变量a;它的堆栈框架如图2.2b所示。在调
用
f2
期间
,
局部变量
buf[8]的
空间在堆栈中被分配
,就像f2
的返回地址和ebp的先前值一样,如
图2.2c所示。请注意,要在返回后执行的指令的地址(保存在两个
堆栈帧之间)是
在缓冲区溢
出的上下文中利用程序的主要目标,因为更改此值允许直接控制执行流。
1
空洞 f2(){
2
[8][
3]
4
5
空洞
f1
()
{
6
inta;
7f2
();
8}
(a)
源代码。 (
b
)在
f2
之前(
c
)在
f2
期间()
图2.2:堆栈框架示例。
动态变量动态变量(也称为堆变量)在运行时在HEAP部分中分配与局部变量不同,它们的大
小可以在运行时计算,并且此内存部分向更高的地址增长。glibc库中的malloc或calloc等函数
分配这些变量。
2.1.2
分配器策略
可用于程序的计算机内存是有限的,因此堆栈和堆是有界的。不再使用的内存部分需要释放,
以便可用于其他分配。对于堆栈,这是在函数返回时隐式完成的:函数的
堆栈框架
被释放。对
于堆,这可以使用垃圾收集器自动完成,也可以由开发人员负责。从安全的角度来看,垃圾收
集器提供了一个更安全的动态内存管理方案,但它们带来了开销,使它们不适用于所有用途。
在[HB06]中可以找到垃圾收集器和手动堆管理之间的性能比较管理动态变量发布的函数由标准
库提供,
在
glibc库中
免费提供
C11标准[INC12a]参考:
注意,一些函数(如alloca)可以动态地将新变量分配给
堆栈
帧
,从而更改其大小。
9
-
未指定对
对齐的
alloc、calloc、malloc和realloc函数的连续调用所分配的存储的顺
序和邻接性。
因此,没有关于如何处理动态存储器的规范。存在几种不同的策略,它们的区别在于它们的速
度和所需的内存空间之间的权衡。当遇到特定属性时,例如多线程编程或实时时,一些也更适
合。为了了解它们之间的差异,我们考虑了处理堆时的一个常见问题:碎片化。
图
2.3a
表示由
18
个可能的块组成的堆存储器,其中执行了
5
个块的
3
个连续分配:
A
、
B
和
C
。
(a)
A
、
B
和
C
已分配。
B
是自由的。
(c)天真的分配器。 最佳配合分配器。
图
2.3
:堆碎片示例
在下一步中,块B被释放,如图2.3b所示。假设我们现在要分配一个大小为3的块如果我们
考虑一个
简单的
分配器,它返回第一个具有足够可用空间的位置,我们得到一个状态如图
2.3c
所示的堆。这样的决定阻止了未来大于3的分配。如果我们现在考虑一个更聪明但速度更慢的策
略,它试图找到最适合请求大小的位置,那么堆就处于图
2.3d
所示的状态。在这种情况下,虽
然可以进行大小为5的分配,但找到正确位置所花费的时间较长。在处理实际应用程序时,这种
权衡至关重要,正确的策略在很大程度上取决于应用程序。
[Wil+95;Fer+11]
中关于几种分配策
略的设计和绩效的研究。
为了说明建模分配策略的复杂性,我们概述
了
glibc使用
的
ptmallocv2。ptmallocv2基于dlmal-
loc[Lea 00]。与dlmalloc
相比,主要的改进之
一是支持多线程应用程序。下面的说明详细介绍
了
ptmallocv2和dlmalloc,线程机制除外。由这些策略分配的每个块包含元数据,位于块的
可用区域之前。因此,
当malloc
返回地址X
时
,元数据被定位为
X
大小
。此元数据包含块的大
小。当一个块被释放时,它会被放入一个自由列表中。自由列表用于跟踪自由块,并通过链接
列表进行处理。此免费列表通过写入用户数据直接存储在免费块中。注意,此技术可用于漏洞
利用:写入自由指针将重写这些地址,从而损坏自由列表。自由块按其大小分组
并保存在箱子
中。有几个bins:快速bin(大小为80字节的块)、未排序bin(最近释放的块)、小bin(大
小>80和512字节的块)和大bin(大小>512字节的块)。<<每个bin都有自己的数据结构(快
速bin使用单链接列表,而其他bin使用循环双链接列表)和特定行为(如拆分、合并等)。为
了处理多线程应用程序(在ptmallocv 2中),每个线程都保存其堆段和空闲列表;此机制称为
每个线程竞技场。有关ptmallocv 2的更多详细信息,请参见[Fer 07;FFM 12;spl 15]。
如前所述,分配器是复杂的系统;它们结合了不同的结构和行为。有几种标准分配策略,包
括:
•
OpenBSD使用
的
phkmalloc
[Kam98]。
•
由Google开发并在Chrome中使用
的
tcmalloc[San]
•
FreeBSD[Eva 06]
和
Facebook [Eva 11]
使用
的
jemalloc
•
Microsoft Windows中使用
的低碎片堆
[Val 10;RSI 12]
•
Hoard
,设计用于多个操作系统
[Ber+00]
。
剩余167页未读,继续阅读
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计算机人脸表情动画技术发展综述
- 关系数据库的关键字搜索技术综述:模型、架构与未来趋势
- 迭代自适应逆滤波在语音情感识别中的应用
- 概念知识树在旅游领域智能分析中的应用
- 构建is-a层次与OWL本体集成:理论与算法
- 基于语义元的相似度计算方法研究:改进与有效性验证
- 网格梯度多密度聚类算法:去噪与高效聚类
- 网格服务工作流动态调度算法PGSWA研究
- 突发事件连锁反应网络模型与应急预警分析
- BA网络上的病毒营销与网站推广仿真研究
- 离散HSMM故障预测模型:有效提升系统状态预测
- 煤矿安全评价:信息融合与可拓理论的应用
- 多维度Petri网工作流模型MD_WFN:统一建模与应用研究
- 面向过程追踪的知识安全描述方法
- 基于收益的软件过程资源调度优化策略
- 多核环境下基于数据流Java的Web服务器优化实现提升性能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功