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

XNU内核未初始化使用漏洞的检测与利用研究

发布时间:2021-09-22 04:00
  未初始化使用漏洞是一种由于内存在使用之前没有进行初始化而导致的软件安全漏洞,由于原理简单而被程序员忽视了其潜在危害。XNU内核是苹果公司macOS、iOS操作系统的内核,而苹果操作系统在PC领域和移动设备领域都有较高的市场占有率,因此XNU内核的安全性直接决定了PC和移动设备的安全性。本文对XNU内核中未初始化使用漏洞的检测与利用进行了深入研究。漏洞检测方面,首先深入分析研究未初始化使用漏洞的成因,并据此对未初始化使用漏洞进行科学分类,为更好地进行未初始化使用漏洞的检测奠定基础。其次定义程序运行时内存状态与操作,建立一个字节敏感的内存区域模型,结合路径敏感的内存模型更新算法,提出了一个字节敏感、路径敏感的未初始化使用漏洞检测模型。最后使用Clang静态分析器完成了一个基于此模型的静态分析工具。漏洞利用方面,首先对macOS系统内核堆的随机性进行研究,提出了内核堆起始地址和分配顺序的弱随机性缺陷,并通过实验进行了验证。其次对macOS Sierra上的两个未初始化使用漏洞进行了深入分析和研究,提出了利用这两个漏洞针对macOS内核的完整攻击链。具体来说,先利用CVE-2017-2357绕... 

【文章来源】:上海交通大学上海市 211工程院校 985工程院校 教育部直属院校

【文章页数】:85 页

【学位级别】:硕士

【部分图文】:

XNU内核未初始化使用漏洞的检测与利用研究


–1污点分析技术基本过程

测试技术,漏洞


上海交通大学硕士学位论文第一章绪论1.2.2.3模糊测试技术模糊测试是一种自动化的漏洞挖掘技术,本质上是一种黑盒测试。无需对程序的内部实现有较深的理解,通过向程序提供大量输入数据即可进行漏洞挖掘。提供的输入数据可以是随机生成的,也可以是根据样本变异而来的半随机样本,还可以是根据一定的规则自动生成的样本。将这些样本作为程序的输入,监视程序的运行状态,记录程序所发生的异常来达到挖掘漏洞的目的。主要的流程如图1–2所示。模糊测试和常见的动态分析方法一样存在着代码路径覆盖率过低的问题,同时模糊测试由于只能捕捉程序异常状态,因此主要挖掘对象是内存破坏类型的漏洞,对于逻辑漏洞或者敏感信息泄露等不会导致程序运行异常的漏洞几乎无能为力。同时,由于程序异常之后通常就崩溃而退出,导致同一条代码路径上后续的代码无法继续被测试,将会导致深层次的漏洞难以挖掘的问题。可以通过手动打补丁的方式来修复已有的崩溃,继续挖掘后续代码路径的安全漏洞。图1–2模糊测试技术Figure1–2BlackBoxTest:FuzzingTechnologyAfl-fuzz(AmericanFuzzyLop)1是由一位Google的安全人员开发的著名模糊测试工具,通过自动生成变异样本来快速进行测试;通过对程序插桩作为引导来提升代码覆盖率;通过新行为检测算法来识别新的执行路径,避免在同一条路径上花费过多资源,以此提升效率;此外还结合forkserver技术和并行化技术显著提升精确度和速度,是一款高效、简单、健壮、强大的模糊测试工具。1http://lcamtuf.coredump.cx/afl/—7—

区域图,内存,状态机,区域


上海交通大学硕士学位论文第二章未初始化使用漏洞检测模型设计与实现图2–1一块内存区域的状态机Figure2–1StateMachineofaMemoryRegion定义2.1(对内存区域的操作).一个对特定内存区域的操作可以表示为这样的四元组:(operation,memRegion,offset,size)表示对memRegion偏移offset处大小为size字节的内存进行操作operation。operation的可能取值为分配、读娶写入、释放。offset为相对于这块内存区域开始位置的相对偏移。具体来说,对于分配操作,扩展为(分配,memRegion,0,size),表示分配一块size大小字节的内存区域memRegion,对于分配操作,相对偏移没有意义,始终为0;对于读取操作,扩展为(读取,memRegion,offset,size),表示在memRegion相对偏移offset处读取size大小字节的数据;对于写入操作,扩展为(写入,memRegion,offset,size),表示在memRegion相对偏移offset处读取size大小字节的数据;对于释放操作,扩展为(释放,memRegion,0,size),表示释放size大小字节的内存区域memRegion,对于释放操作,相对偏移也没有意义,始终为0。通过这样的扩展定义,我们可以确切地知道每一次对内存区域的操作所涉及到的所有信息,有助于我们更好地确定状态转移情况以及是否发生了未初始化使用。在现有的四种内存区域的状态中,新分配、完全初始化和释放状态是比较清晰的状态:新分配状态的内存必然是完全没有初始化的,完全初始化状态的内存必然不会出现未初始化使用漏洞,而释放状态不会被使用(如果被使用则会发生释放后使用漏洞,不在本文的研究范围),因此也不存在未初始化使用漏洞。而部分初始化状态的内存区域状态并没有刻画清楚,为此,为了更加精确地描述部分初始化的内存区域的状态,例如,—17—

【参考文献】:
期刊论文
[1]二进制程序漏洞挖掘关键技术研究综述[J]. 王夏菁,胡昌振,马锐,高欣竺.  信息网络安全. 2017(08)
[2]2015年信息安全漏洞研究综述P[J]. 鲁刚,米士超,郭荣华.  信息安全与通信保密. 2016(05)



本文编号:3403097

资料下载
论文发表

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


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

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