面向已声明SDK版本及其与API调用一致性的Android应用可扩展在线审查
软件工程
2020-09-01 v3 密码学与安全
摘要
Android 已成为最流行的智能手机系统,市场中活跃着多个平台版本。为管理应用对一个或多个平台版本的兼容性,Android 允许应用在清单文件中声明所支持的平台 SDK 版本。本文对这一现象级软件机制开展系统性研究。我们的目标是度量真实应用中已声明 SDK 版本(后文称之为 DSDK 版本)的现状,以及 DSDK 版本与其宿主应用 API 调用之间的(不)一致性。为成功分析由 22,687 个流行应用(平均应用大小 25MB)组成的现代数据集,我们设计了一种可扩展方法,该方法在 Android 字节码层运作,并采用轻量级字节码搜索进行分析。该方法性能良好,适用于应用市场中的在线审查,平均仅需约 5 秒处理一个应用。除揭示现实中 DSDK 的特征外,我们的研究定量度量了不当 DSDK 版本的两类副作用:(i) 约 35% 的应用低估了最小 DSDK 版本,可能导致运行时崩溃,但幸运的是仅 11.3% 的应用会在 Android 6.0 及以上崩溃;(ii) 约 2% 的应用因低估目标 DSDK 版本,可能被远程代码执行利用,其中一半通过嵌入式第三方库调用了易受攻击的 API。这些结果表明声明正确 DSDK 的重要性与困难,而我们的工作可助开发者达成此目标。
引用
@article{arxiv.1912.12982,
title = {Scalable Online Vetting of Android Apps for Measuring Declared SDK Versions and Their Consistency with API Calls},
author = {Daoyuan Wu and Debin Gao and David Lo},
journal= {arXiv preprint arXiv:1912.12982},
year = {2020}
}
备注
This article extends our preliminary conference version at WASA'17, see https://link.springer.com/chapter/10.1007/978-3-319-60033-8_58 and arXiv:1702.04872