论文部分内容阅读
随着Android智能手机、平板等设备在近几年的普及,海量的Android应用被厂商开发出来供用户使用。但是开发者对这些Android应用的安全性却往往没有足够的重视。由于开发者能力的良莠不齐和资金投入的限制,近年来各类严重的安全问题频频发生。Android 中最重要的四大组件为 Activity、Service、Broadcast Receiver 和ContentProvider。它们各司其职,共同协作组成了一个应用。其中Intent作为启动组件和跨进程通信、交换数据的消息对象,将各组件链接起来共同组成一个有机整体。为了方便代码和功能复用,app可以将组件声明为公共类型,任何app都能通过Intent来启动公共组件。而对于隐私有要求的场景,则可以将组件声明为私有类型,Android系统将保证只有自身app才能启动私有类型的组件。然而,一种新型的基于Intent的跨域漏洞可以跨过此限制,攻击者利用它可以在外部直接调用漏洞app中的私有组件。当前并没有相关工作对该漏洞进行大规模的检测,所以也无法知晓漏洞对现实世界中的应用产生的影响。为了解决这些问题,本文首先对此基于Intent的跨域漏洞的原理进行了总结,并探究了如何利用漏洞发动攻击。接着,我们设计了一个采用静态分析和动态分析相结合的框架,用于在大批量范围里对该漏洞进行快速检测。框架采用模块化设计,极易扩展,为未来加入其他漏洞的检测逻辑提供了空间。分析框架主要分为两部分:漏洞扫描部分和漏洞触发部分。漏洞扫描部分通过静态扫描反编译后的代码来快速匹配漏洞,并为接下来的动态分析提供必要信息。该部分最重要的工作就是采用了自行设计的Intent流分析技术对Intent进行追踪,当满足定义的漏洞特征后,会提示发现一处疑似漏洞。漏洞触发部分根据漏洞扫描部分提供的相关信息,生成触发漏洞的各种测试用例并释放。同时在人工给予基本的账号信息后,利用自动化技术来实现过程中可能的登录流程。整个分析过程中框架都会实时监控日志,用于分析测试用例是否成功触发了漏洞。最后,本文使用实现的分析框架对2万个谷歌官方商店中的app进行了真实的检测分析,最后发现并确认了 190个应用中存在漏洞,其中的一些漏洞app甚至拥有过亿的下载量。在进一步分析后,我们还在开源项目和第三方SDK中也发现了此漏洞。