一种基于 Sink 驱动的 Android 应用暴露组件漏洞检测方法
密码学与安全
2014-05-27 v1
摘要
Android 应用可暴露其组件以与其他应用协作。然而,这种便利性使得应用易受暴露组件漏洞(ECV)的影响,即其他(恶意)应用可触发其组件内的危险 API(通常称为 sink)。在先前的工作中,检测这些 ECV 使用的是与待检测 ECV 相关的一组 sink。在本文中,我们认为更有效且全面的方法应始于对特定于漏洞的 sink(VSinks)进行系统性的选择与分类。VSinks 集合远大于先前工作中所使用的集合。基于这些 VSinks,我们的 sink 驱动方法可通过两个步骤检测应用中的各类 ECV。首先,通过典型的前向可达性分析识别 VSinks 及其类别。其次,基于每个 VSink 的类别,采用相应的检测方法,通过定制的后向数据流分析来识别 ECV。我们还设计了一种半自动引导分析与验证能力,用于系统级广播检查,以消除部分误报。我们将该 sink 驱动方法实现为名为 ECVDetector 的工具,并使用排名前 1000 的 Android 应用对其进行评估。利用 ECVDetector,我们成功识别出总共 49 个存在漏洞的应用,涵盖我们定义的全部四类 ECV。据我们所知,其中大多数此前未被披露,例如非常流行的 Go SMS Pro 和 Clean Master。此外,ECVDetector 的性能较高,处理每个组件平均仅需 9.257 秒。
引用
@article{arxiv.1405.6282,
title = {A Sink-driven Approach to Detecting Exposed Component Vulnerabilities in Android Apps},
author = {Daoyuan Wu and Xiapu Luo and Rocky K. C. Chang},
journal= {arXiv preprint arXiv:1405.6282},
year = {2014}
}
备注
This is a technical report from HKPolyU