论文部分内容阅读
Android系统通过继承Linux的安全机制和实现单独的Dalvik虚拟机机制来保证应用程序运行在一个相对独立的环境下,从而保护应用程序和系统的安全。但是这并不能完全避免风险,如果应用程序对组件保护不充分,会导致组件暴露。存在组件暴露的情况下,如果用户没有控制好组件间的交互则可能存在组件通信漏洞;如果没有控制好相关权限,则可能存在权限泄露漏洞;如果Content Provider相关实现不正确则可能存在数据泄露漏洞和路径遍历漏洞。以上漏洞的存在都会对用户隐私和系统安全造成极大的威胁。检测出这些漏洞帮助开发者改进应用意义重大。本文具体工作如下:1.针对组件通信漏洞,现有的静态方法存在反编译困难,不能够直接给出漏洞详情的缺点,现有的动态方法存在构造数据不具有针对性、覆盖率低等缺点,本文提出了一种新的基于Fuzzing和定制Android系统的新的检测方法。本方法的核心是获取应用程序真实的Extras的信息,根据其构造针对性的数据,使用少量的数据获取更好的结果。2.针对权限泄露漏洞,现有的方法主要是静态方法,没有考虑动态的测试方法,静态方法存在反汇编技术正确性问题,而且静态分析方法依据的权限漏洞特征定义模糊。本文针对现有静态方法的不足,提出了新的基于Fuzzing和定制Android系统的权限泄露检测方法。主要是通过定制Android系统,修改权限验证的相关函数,当暴露组件被调用时,能够通过系统日志记录下触发的权限。该方法为动态方法,能够比较好的检测出权限泄露漏洞,更加通用。3.针对Content Provider相关漏洞,现有方法主要是采用一些静态污点分析或数据流分析的技术,存在反编译难,无法直接给出漏洞触发情况等缺点。本文针对性的提出了一套基于SQL注入、路径遍历等的动态检测方案,更具有针对性和有效性。4.本文根据提出的组件通信漏洞、权限泄露漏洞和Content provider相关漏洞的挖掘方案,实现了一个自动化的检测系统。经过大量的实验,本系统确实能够比较有效的检测组件暴露风险、组件通信漏洞、权限泄露漏洞和Content Provider相关漏洞等。并且为一些更深入问题的解决提供可能性,比如组件通信漏洞重现、权限泄露漏洞利用和重现等的研究。