论文部分内容阅读
Java语言是最为流行的面向对象编程语言之一,Java运行时环境(JRE)拥有着非常大的用户群,其安全问题十分重要。近年来,由JRE漏洞引发的JVM逃逸攻击事件不断增多,对个人计算机安全造成了极大的威胁。研究JRE安全机制、JRE漏洞及其挖掘、JVM逃逸攻防技术逐渐成为软件安全领域的热门研究方向。针对Java层API与原生层API,JRE安全机制分别包括JRE沙箱与JVM类型安全机制。本文针对JRE沙箱组件及其工作原理进行剖析,总结其脆弱点;分析调研JVM安全机制,提出其脆弱点在于Java原生层漏洞,为JRE漏洞挖掘工作提供理论基础。对于JRE漏洞,本文进行漏洞分类研究,提取JavaAPI设计缺陷、Java原生层漏洞两种JRE漏洞类型的典型漏洞进行分析,总结漏洞特征,为漏洞挖掘工作建立漏洞模型。根据JRE漏洞分析中建立的漏洞模型,本文采用源代码审计的方法开展Java API设计缺陷类型的漏洞挖掘工作,发现了数个Oracle JRE、OpenJDK和Apple JRE的Java API设计缺陷问题。在Java原生层漏洞挖掘工作中,出于Java原生层漏洞的特殊性,本文基于程序分析领域的符号执行技术提出一种寄存器符号化监控方法,选取开源符号执行平台S2E作为漏洞挖掘工具,并且基于其实现了针对JRE原生层漏洞挖掘的辅助插件SymJava和SymRegMonitor,基于OpenJDK和Oracle JRE逆向代码进行源代码白盒审计并构建了用于进行漏洞挖掘的Java测试用例,最后对36个调用Java原生层API的Java测试用例进行实际测试,发现了共计6个JRE原生层安全隐患,其中2个可被攻击者恶意利用,并给出漏洞分析和PoC。针对JVM逃逸攻防问题,本文分别从攻击和防御角度,提出JVM逃逸攻击的5个关键元素,针对每个元素进行攻防技术研究,并通过绕过杀毒软件静态检测的实验证明了本文提出的JVM逃逸攻击技术。最后,本文从多角度给出JVM逃逸攻击的防御策略。