论文部分内容阅读
未初始化使用漏洞是一种由于内存在使用之前没有进行初始化而导致的软件安全漏洞,由于原理简单而被程序员忽视了其潜在危害。XNU内核是苹果公司macOS、iOS操作系统的内核,而苹果操作系统在PC领域和移动设备领域都有较高的市场占有率,因此XNU内核的安全性直接决定了PC和移动设备的安全性。本文对XNU内核中未初始化使用漏洞的检测与利用进行了深入研究。漏洞检测方面,首先深入分析研究未初始化使用漏洞的成因,并据此对未初始化使用漏洞进行科学分类,为更好地进行未初始化使用漏洞的检测奠定基础。其次定义程序运行时内存状态与操作,建立一个字节敏感的内存区域模型,结合路径敏感的内存模型更新算法,提出了一个字节敏感、路径敏感的未初始化使用漏洞检测模型。最后使用Clang静态分析器完成了一个基于此模型的静态分析工具。漏洞利用方面,首先对macOS系统内核堆的随机性进行研究,提出了内核堆起始地址和分配顺序的弱随机性缺陷,并通过实验进行了验证。其次对macOS Sierra上的两个未初始化使用漏洞进行了深入分析和研究,提出了利用这两个漏洞针对macOS内核的完整攻击链。具体来说,先利用CVE-2017-2357绕过内核地址空间随机化保护,然后利用CVE-2017-2358劫持程序控制流,利用内核堆的弱随机性缺陷绕过随机化保护,接着绕过数据执行保护等多种保护机制,最终获得内核最高权限。最后提出了针对未初始化使用漏洞的防范方案以及缓解其潜在危害的内核防护机制。用文中的静态分析工具对XNU内核源码(版本4570.1.46)进行分析,共检测出5个未初始化使用漏洞,其中4个在后续版本的XNU内核中被修补,1个在最新版源码中仍未修补。通过对人为修改后的XNU内核源码进行静态分析,比较了本文的工具与Unisan的分析能力,结果显示本文的工具有着更高的召回率(88%),但是精确率稍低(57.52%)。F1值为0.70,较Unisan有少许提升。本文还通过实验选择合适的攻击参数,提升了利用的成功率和稳定性,最终成功攻破macOS系统并获得操作系统最高权限,成功率达到94%。