当前位置:主页 > 科技论文 > 软件论文 >

基于多级指针的释放后重用漏洞防御机制研究

发布时间:2021-06-02 21:53
  C/C++这类高效率语言有着对内存低层级的控制能力,从而提高程序运行效率。但是C/C++缺乏对指针合法性的检测,当程序开发者调用显式释放函数时,无法保证所有相关指针都处于无效状态,故这些不合法的指针可能导致一些内存安全相关的漏洞。悬空指针是不指向任何合法对象的指针,其本身不会导致任何内存安全问题,但通过悬空指针访问内存是造成释放后重用漏洞的主要原因。释放后重用漏洞会引发信息泄漏或任意代码执行,故这类漏洞大多属于高危漏洞,并且近年来其数量明显增加,其威胁也因此变得越来越严重。基于多级指针的释放后重用漏洞防御系统MPChecker(Multi-level Pointer Checker)针对释放后重用漏洞的特点,动态防御释放后重用漏洞的利用和攻击。首先,通过向堆对象和相关指针之间插入中间指针,形成包含多级指针的新关系。其次,所有通过相关指针对该对象的内存访问,只能经过这些中间指针来实现。最后,为了防止悬空指针被解引用从而访问该对象内存,在对象释放后,与该对象相关的所有中间指针都被置为无效,由于无效的中间指针的存在,可防止已释放的对象被访问。测试结果表明,MPChecker可以防御C/C++... 

【文章来源】:华中科技大学湖北省 211工程院校 985工程院校 教育部直属院校

【文章页数】:63 页

【学位级别】:硕士

【部分图文】:

基于多级指针的释放后重用漏洞防御机制研究


基于多级指针的释放后重用漏洞防御系统架构

指针,防御系统,漏洞,功能模块


从而节省一部分开销。2.5 系统功能模块图2-2 基于多级指针的释放后重用漏洞防御系统功能模块MPChecker 系统的各个功能模块如图 2-2 所示,基于多级指针的释放后重用漏洞防御系统主要包含:静态编译插桩子系统、堆对象管理子系统、指针跟踪子系统、基指针链表。静态编译插桩子系统包括指令分析模块、指令插桩替换模块、自实现安全库。堆对象管理子系统包括堆对象分配管理模块、堆对象释放管理模块、指针检查器模块。指针跟踪子系统包括指针运算传播跟踪模块。基指针链表包括基指针链表基本模块、基指针多线支持程模块。接下来介绍每个模块以及模块之间的关系,并讨论为这些组件所做的优化。

框架图,插桩,静态,子系统


LLVM IR 文件会跟程序 LLVM IR 文件链接到一起,最终编译成最终的安全程序二进制文件。图3-1 静态编译插桩子系统的实现框架3.1.1 指令分析模块指令分析模块会对程序的 LLVM IR 指令做遍历分析处理,如图 3-2 所示,首先判断所有指令是否分析完毕,若完毕则结束分析流程,否则判断函数调用名称是否为 malloc/free,如果是则标记指令为堆分配/释放操作,否则继续判断该函数名是否为非本地函数;如果是则标记指令为外部函数调用,否则继续判断 load 指令的操作数是否为指针变量;如果是则标记为指针解引用操作,否则继续判断是否为 load、getelementptr、store 指令序列;如果是则标记为算术指令传播

【参考文献】:
期刊论文
[1]一种基于一阶逻辑的软件代码安全性缺陷静态检测技术[J]. 秦晓军,甘水滔,陈左宁.  中国科学:信息科学. 2014(01)
[2]软件分析技术进展[J]. 梅宏,王千祥,张路,王戟.  计算机学报. 2009(09)
[3]程序静态分析技术与工具[J]. 杨宇,张健.  计算机科学. 2004(02)



本文编号:3210818

资料下载
论文发表

本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3210818.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户e2a63***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com