一种动静态分析结合的Android隐私泄露检测方法
2020-12-29苏钰
苏钰
摘 要:该文描述一种动静态分析结合的Android系统隐私泄漏检测方法。该方法首先利用动态分析技术分析程序实时运行时的真实执行状态,从而识别出具有隐私泄露风险的应用程序及其隐私泄露行为执行路径。接着使用静态分析技术对范围内的应用内容进行分析,最终定位隐私泄露漏洞。实验结果显示,运用动静态分析相结合的方法能够缩短分析时间,同时提高漏洞分析的精确度,减少误判率。在此基础上,能够进一步发现多应用协作的隐私泄露行为,弥补了静态分析方法在检测效率和跨应用检测能力上的不足。
关键词: Android安全; 隐私泄露; 漏洞检测; 动态分析; 静态分析
中图分类号:TP309 文献标识码:A
文章编号:1009-3044(2020)30-0042-03
Abstract:This paper proposes a new approach, which detects privacy leakage vulnerabilities on Android with both dynamic and static ways. Based on dynamic analysis, this method firstly constructs the real execution status in order to recognizing those applications that have privacy leakage vulnerabilities and their execution path. Then, using the static analysis to locate the privacy leakage of those applications. The result of experiment shows that this fusion method can increase accuracy of vulnerability analysis and reduce misjudgment ratio while using less time. Besides that, this method can further discovery multiple application privacy leakage vulnerabilities, which makes up the static analysis method in detection efficiency and cross-application detection capability.
Key words:android security; privacy leakage; vulnerability detection; dynamic analysis; static analysis
1 引言
近年來,Android系统一直是市场占有率最高的移动智能终端操作系统,市场份额在2019年已达到了87%[1]。Android系统的开放性是一把双刃剑,在市场规模不断扩大的同时,多样的应用市场和宽松的审查机制导致Android应用的安全性一直饱受诟病。根据360安全公司的研究调查[2],Android系统截获的恶意程序出现次数呈现爆发式增长,仅2020年一季度拦截量已超过2019年全年拦截总量。新增恶意程序类型中占比第一的是资费消耗(83.6%),其次就是隐私泄露(11.5%)。隐私泄露(Privacy Leakage)利用各类手段窃取用户隐私信息,并将其暴露在各类黑色产业链的威胁之中,进而使得用户权益受到侵害。如何检测和防范个人隐私泄露成为各类研究的重点。
2 相关工作
动态检测和静态检测是目前检测应用隐私泄漏漏洞的两大方法。动态检测通过实际运行相关应用,并实时监控应用是否有涉及用户隐私泄露的相关高危操作,以此来判别程序中是否存在隐私泄露安全漏洞,其中Fuzzing和污点跟踪等分析方法是动态分析方法的代表。William Enck等设计的TaintDroid[3],利用插桩实现动态分析,监控敏感信息传播,实现不同层次的信息动态追踪。DroidBox[4]提出了一种可视化API调用分析方法,以直观展示动态程序对敏感API的调用。Yuan Yujie等设计的RunDroid[5],监控程序的方法执行,并捕获执行中的相关对象,以还原方法调用图。
相对应的,静态检测不依赖于实际运行响应应用,而是通过分析技术扫描程序代码的方式来识别应用中的安全问题。目前,对Android隐私泄露的静态分析手段有很多种。Fengguo Wei等设计的Amandroid[6]能够克服静态分析中跨组件通信的数据流缺失问题,从而提升精确性。Jin man Zhao等[7]提出利用神经网络模型寻找应用程序间的通讯,强化了静态分析在多应用间关联分析的能力。Yang Z等设计的AppIntent[8]将符号执行的方法应用于隐私泄露的检测,根据用户对敏感数据流出是否知情,来判断是否存在Android隐私泄露。Su[9]等提出了一种基于符号执行的静态漏洞检测方案。静态分析方法无须运行代码,覆盖率高而漏报率较低。但是静态分析需要构建出程序的控制流图,对于大体量的应用来说这一步骤需要大量的计算资源,且无法发现多应用间的关联关系。所以在使用静态分析技术时需要优化分析流程以提升检测效率。
动态分析真实性高,静态分析覆盖率高。两者相结合的安全分析技术是目前主流的研究方向之一。本文将动态分析技术与静态分析符号执行技术相结合,提出一种Android平台隐私泄露检测方法。首先通过动态分析技术,利用程序运行时的信息缩减程序高危行为的分析范围,然后利用静态分析符号执行技术对范围内的应用内容进行分析,最终定位隐私泄露漏洞。