一句话:揭示 Android 直接跨应用代码调用机制的工作流程及其代码复用与安全绕过风险,并提出静态检测工具 DICIDer。
Android 生态中,除已被广泛研究的组件间通信(ICC)外,还存在直接跨应用代码调用机制,可让开发者调用其他应用中实现的 Java 类、方法或对象字段,带来合法复用与恶意复用的双重可能。本文首先刻画该机制的工作流程,并实验展示其可被用于“抄袭”受保护功能:作者绕过某流行视频广播应用对其视频数据库的外部访问限制。随后提出静态分析工具 DICIDer,用于检测应用中的直接跨应用代码调用,并进行使用流行度的实证分析。最后讨论该复用机制的使用场景及其影响。
The Android ecosystem offers different facilities to enable communication among app components and across apps to ensure that rich services can be composed through functionality reuse. At the heart of this system is the Inter-component communication (ICC) scheme, which has been largely studied in the literature. Less known in the community is another powerful mechanism that allows for direct inter-app code invocation which opens up for different reuse scenarios, both legitimate or malicious. This paper exposes the general workflow for this mechanism, which beyond ICCs, enables app developers to access and invoke functionalities (either entire Java classes, methods or object fields) implemented in other apps using official Android APIs. We experimentally showcase how this reuse mechanism can be leveraged to “plagiarize" supposedly-protected functionalities. Typically, we were able to leverage this mechanism to bypass security guards that a popular video broadcaster has placed for preventing access to its video database from outside its provided app. We further contribute with a static analysis toolkit, named DICIDer, for detecting direct inter-app code invocations in apps. An empirical analysis of the usage prevalence of this reuse mechanism is then conducted. Finally, we discuss the usage contexts as well as the implications of this studied reuse mechanism.
@inproceedings{paperbot5709,
title = {Borrowing your enemy’s arrows: the case of code reuse in Android via direct inter-app code invocation},
author = {Jun Gao and Li Li and Pingfan Kong and Tegawendé F. Bissyandé and Jacques Klein},
booktitle = {FSE},
year = {2020},
doi = {10.1145/3368089.3409745}
}