论文部分内容阅读
Android系统是移动智能终端的主流操作系统之一,近年来Android相关漏洞层出不穷,这给终端本身带来了极大的安全威胁。Android系统主要分为应用层(application layer)、本地层(native layer)和内核层(kernel layer)。本文围绕这三个层次,从漏洞挖掘角度出发,自顶向下对Android进行安全审查。特别地,我们聚焦于Android应用层的应用组件与通信、本地层的第三方库、内核层的厂商定制设备驱动等薄弱环节,并针对这些环节的安全漏洞研究对应的挖掘方法。论文主要工作包括:(1)针对多个应用间的交互引发的安全问题、特别是跨应用数据泄露漏洞,进行高效、精确的动态检测;(2)针对本地层第三方库中的释放后重用(use-after-free,简称Ua F)漏洞,进行面向二进制程序的精确、可扩展的静态挖掘;(3)针对内核设备驱动漏洞,进行低侵入的模糊测试。论文主要成果表现在以下几个方面:?为了缓解对多种应用组合进行审查带来的组合爆炸问题,我们提出了一种称为组合混合符号行走(combinative concolic walking)的技术,它基于跨应用污点轨迹片段,来引导混合符号执行,从而对组合后的应用进行高效的跨应用数据泄露检测,并允许分析人员通过动态确认发生的跨应用数据流是否符合用户意图来对漏洞存在性进行最终判断。该方法首次实现了对跨应用漏洞的系统性地动态分析。我们的方法能够在真实应用集合中有效检测跨应用数据泄露问题。?针对第三方本地库的UaF漏洞检测任务,我们审查了在可扩展性漏洞分析需求下传统二进制静态分析的路径不敏感策略带来的几个关键问题,即正常编程风格引发的良性UaF模式、多线程交织导致的并发UaF问题、第三方定义的非标准UaF模式出入口API等。基于这些观察,我们提出了一种专为Ua F检测问题定制的局部路径敏感的VSA(value-set analysis)分析方法,在保持VSA方法原有可扩展性的前提下,提高检测精度。我们定义了更加完备的UaF出入口集合,并对并发控制流进行修复,然后用路径不敏感的VSA分析检测UaF漏洞模式,最后采用局部路径敏感的搜索过程对良性UaF模式进行剪枝。我们的方法能够在真实本地库程序中有效检测UaF漏洞。?针对基于真机的Android内核驱动模糊测试问题,为了避免侵入式地修改内核代码逻辑等难以在真实商品机上开展的操作,我们提出了一种利用ARM ETM硬件部件来辅助追踪驱动执行控制流的Android内核驱动灰盒模糊测试方法。我们借助ARM ETM硬件部件低侵入地提取内核驱动控制流执行轨迹,并以此更新代码覆盖率信息,反馈指导系统调用样本的交叉变异。驱动控制流轨迹的提取完全依赖于独立的硬件部件而不会影响CPU core性能。我们的方法能够在真实终端内核中有效检测内存管理类漏洞。