论文部分内容阅读
Android操作系统在过去十年内获得了巨大的成功,数以百万计的Android应用程序为人们提供了各种各样的服务,极大的方便了人们的生活。但是,Android应用程序数量的快速增加,导致了Android应用程序质量良莠不齐,安全漏洞事故频发,严重威胁用户的信息安全。为此,工业界和学术界将目光聚集到了Android应用程序的安全漏洞检测,但实现Android应用程序的安全漏洞检测有诸多难点。一方面,工业界所面临的Android应用程序安全漏洞检测对象往往是大规模的Android应用程序集,以国内领先的安全服务提供商犇众信息为例,安全服务提供商需要在一次安全漏洞检测中完成对超过1100万个Android应用程序的检测,这需要安全漏洞检测系统能够保持较高的检测效率。另一方面,商业化Android应用程序具有较高的复杂性,在现有的程序分析技术中,静态分析技术通过探寻程序所有可能的执行路径,检查其是否符合特定的安全规范来完成安全分析,在对复杂性高的商业化Android应用程序进行安全分析时,会极大的拉长单个Android应用程序的分析时间。最后,现有的静态分析技术一个重要的技术难点Java反射调用尚未解决,Java反射调用的缺失会导致一定程度上的安全漏洞漏报。针对以上难点,本文以Internet Socket安全漏洞为研究目标,设计并实现了对应的安全漏洞检测系统ISVFinder。ISVFinder采用了安全漏洞特征技术过滤与目标安全漏洞不相关的Android应用程序,结合了静态分析技术和动态分析技术探索Android应用程序的内部行为,配合有限的人工审查,可以有效的应对大规模Android应用程序的安全漏洞检测和商业化Android应用程序的复杂性。本文提出了一种处理Java反射调用的算法,实验结果表明ISVFinder在配置了这种算法后可以有效的捕捉到包含Java反射调用的Internet Socket安全漏洞危险执行路径。我们利用ISVFinder找到了24个具有Internet Socket安全漏洞的Android应用程序和3个安全漏洞家族,其中每个安全漏洞家族的Android应用程序下载总量超过了5000万次。我们对3个典型的Internet Socket安全漏洞作了深入的案例分析,并根据本文的研究成果总结了3点经验教训和2条防御方法。