虚拟机逃逸技术研究AVM2虚拟机逃逸技术研究刘小珍/di27刘小珍/dgguai27dgguai27@hotmail.com四川师范大学计算机科学学院四川师范大学计算机科学学院四川师范大学网络与通信技术研究所议程议程•问题的提出•AVM2安全要点与潜在缺陷•典型逃逸方式与案例解析•防范策略•下一步工作下步作问题的提出问题的提出•HLL虚拟机逃逸HLL虚拟机介绍.NETCLR、AVM2、JVM...逃逸的引出及研究范畴逃逸的引出及研究范畴两个要素:虚拟机运行与安全漏洞逃逸技术研究价值逃逸技术研究价值逃逸技术研究价值通过虚拟机运行特性的辅助研究通过虚拟机运行特性的辅助,研究人员可能会在相关漏洞的产生、分析利用和修补过程中获取传统研究方法所无法比拟的突破性思路或解决方案拟的突破性思路或解决方案。问题的提出问题的提出•典型代表:AVM2逃逸相关知识回顾漏洞攻击四层模型(FlashSky)AVM2运行环境—“寄生”,只考虑独立Flash作为控件逃逸模式漏洞攻击四层模型漏洞攻击四层模型AVM2的“寄生”方式AVM2的寄生方式AVM2逃逸模式AVM2逃逸模式结合AVM2运行过程或结果最终跳转到宿主环境中的ShellCode执行,或者在宿主宿主环境中的ShellCode执行,或者在宿主环境中成功执行完了ShellCode(二者区别在于是否需要突破ShellCode执行时硬件DEP和溢出保护等障碍)。内因:AVM2安全要点以及潜在缺陷外因:安全漏洞外因:安全漏洞议程议程•问题的提出•AVM2安全要点与潜在缺陷•典型逃逸方式与案例解析•防范策略•下一步工作下步作AVM2安全要点AVM2安全要点ABC验证AVM2内存管理AVM2内存管理“寄生”模式“寄生”模式ABC验证ABC执行流程:ABC验证ABC执行流程:ABC验证ABC验证ABC验证ABC验证为字节码执行提供一个安全沙箱(SecuritySandbox)使得不能在沙箱(SecuritySandbox),使得不能在沙箱之外访问内存或执行代码;包括指令有效性检查参数或操作数类型与值的有效性检查、参数(或操作数)类型与值的有效性检查等,特别是用静态数据流分析对虚拟寄存器访问范围和转移指令目的地址的判断。AVM2内存管理AVM2内存管理本地数据区:虚拟寄存器(VirtualRegisters)、参数栈(OprandgpStack)和作用域栈(ScopeStack)三者按地址从低到高依次从AVM2的运行时堆栈中分配堆栈中分配。内部数据表示:Atom“寄生”模式寄生模式依托于多种宿主进程环境IE内核浏览器/Office:Flash9x.ocx、Flash10x.ocx非IE内核浏览器:NPSWF32.dllAdobeReader/Acrobat:Authplay.dll潜在缺陷潜在缺陷ABC验证缺陷内存管理缺陷内存管理缺陷“寄生”模式风险ABC验证缺陷ABC验证缺陷验稳性验证依据的稳定性问题Flash9f及以下版本中Mask表存储在程序的可写数据段,使得运行时可以动态改写动态隐患的探测问题动态隐患指的是AVM2执行字节码过程中出现的各种严动态隐患,指的是AVM2执行字节码过程中出现的各种严重的内存破坏漏洞。iitftfuninit、useafterfree…Flash9e.ocx使用的Mask表:Flash9e.ocx使用的Mask表:内存管理缺陷内存管理缺陷本地数据区的分配方式,可能导致宿主环境中的某些代码指针(如函数宿主环境中的某些代码指针(如函数返回地址)被覆盖。“寄生”模式风险寄生模式风险AVM2依托于IE等多种宿主环境的运行方式可能带来额外的逃逸威胁。议程议程•问题的提出•AVM2安全要点与潜在缺陷•典型逃逸方式与案例解析•防范策略•下一步工作下步作典型逃逸方式典型逃逸方式ABC验证缺陷利用I型ABC验证缺陷利用II型ABC验证缺陷利用II型“寄生”模式风险利用“寄生”模式风险利用安全缺陷综合利用ABC验证缺陷利用I型ABC验证缺陷利用I型宿主环境产生漏洞,结合AVM2运行过程中ABC验证缺陷1和内存管理缺陷实现逃逸结果上只考虑跳转到ShellCode实现逃逸,结果上只考虑跳转到ShellCode执行即可。ABC验证缺陷利用I型ABC验证缺陷利用I型ABC验证缺陷利用I型案例解析CVE20070071ABC验证缺陷利用I型案例解析:CVE-2007-0071DereferenceNull常规方法难以利用常规方法难以利用结合方法结合MarkDowd方法ABC验证缺陷利用II型ABC验证缺陷利用II型AVM2运行过程中由于ABC验证缺陷2而产生漏洞,结合常规漏洞利用技巧实现逃逸结果上也只考虑跳转技巧实现逃逸,结果上也只考虑跳转ShellCode执行即可。ABC验证缺陷利用II型ABC验证缺陷利用II型ABC验证缺陷利用II型ABC验证缺陷利用II型案例解析CVE20091866案例解析:CVE-2009-1866字节码解释引擎漏洞258110:pushshort258110:pushshortC7:multiply_i30:pushscope30:pushscope5D01:findpropstrict结合常规漏洞利用技巧JSHeapSpray、ASHeapSpraydemo1demo1“寄生”模式风险利用寄生模式风险利用宿主环境产生常规漏洞,结合AVM2的特定运行结果(如JIT之后留在内存中的X86代码其实这并非AVM2自身中的X86代码,其实这并非AVM2自身问题)实现逃逸突破,结果上需考虑ShellCode突破硬件DEP等障碍。“寄生”模式风险利用寄生模式风险利用“寄生”模式风险利用寄生模式风险利用AVM2对解释执行或JIT的选择IE8许多ActiveX中的漏洞都IE8、许多ActiveX中的漏洞都可能通过本逃逸方法进行利用Demo2(略)安全缺陷综合利用安全缺陷综合利用AVM2运行过程中由于ABC验证缺陷2而产生漏洞,同时需要结合宿主环境中特定资源实现逃逸结果上要环境中特定资源实现逃逸,结果上要考虑ShellCode突破硬件DEP等障碍。安全缺陷综合利用安全缺陷综合利用安全缺陷综合利用案例解析CVE2010129安全缺陷综合利用案例解析:CVE-2010-1297字节码JIT编译过程漏洞处问题未对参数进行检测newfunction处理问题,未对40参数进行检测4e-40结合BIB.dll+Ret-to-libcdemo3demo3议程议程•问题的提出•AVM2安全要点与潜在缺陷•典型逃逸方式与案例解析•防范策略•下一步工作下步作防范策略防范策略更新系统中的FlashPlayer主动开启系统的硬件DEP主动开启系统的硬件DEP在系统中安装MicrosoftEMET系列工具更新浏览器至IE8更新系统到windows7更新系统到windows7采用Sandboxie等沙箱浏览器安装主动防御软件议程议程•问题的提出•AVM2安全要点与潜在缺陷•典型逃逸方式与案例解析•防范策略•下一步工作下步作下一步工作下步工作继续深入分析Tamarin源码继续深入分析Tamarin源码虚拟机逃逸与结合HLL虚拟机逃逸与Win7、MacOS结合Flash漏洞挖掘技术的进一步研究不足之处敬请指正不足之处敬请指正