当程序分析遇上字节码搜索:BackDroid中针对现代安卓应用的有目标且高效的过程间分析
密码学与安全
2020-05-26 v1 软件工程
摘要
广泛使用的安卓静态程序分析工具,例如Amandroid和FlowDroid,执行全应用过程间分析,这种分析虽然全面,但根本上难以处理现代(大型)应用。过去五年,应用的平均大小增加了三到四倍。在本文中,我们探索了一种有目标的过程间分析新范式,它可以跳过无关代码,仅关注安全敏感的sink API的数据流。为此,我们提出了一种称为即时字节码搜索的技术,该技术在需要定位调用者时,即时搜索反汇编的应用字节码文本。通过这种方式,它逐步引导有目标(且向后)的过程间分析,直到到达入口点,而无需依赖全应用图。然而,由于安卓应用中的Java多态性、回调、异步流、静态初始化器以及组件间通信,这种基于搜索的过程间分析具有挑战性。我们通过提出一套利用灵活搜索和前向对象污点分析的字节码搜索机制,克服了这些在我们上下文中的独特障碍。在这种新的过程间分析之上,我们进一步调整了传统的后向切片和前向常量传播,以提供sink API调用的完整数据流跟踪。我们实现了一个名为BackDroid的原型,并将其与Amandroid在分析3178个现代流行应用中的加密和SSL错误配置方面进行了比较。评估表明,对于此类基于sink的问题,BackDroid的速度提高了37倍(2.13分钟对比78.15分钟),并且没有超时失败(对比Amandroid的35%),同时保持了接近甚至更好的检测有效性。
引用
@article{arxiv.2005.11527,
title = {When Program Analysis Meets Bytecode Search: Targeted and Efficient Inter-procedural Analysis of Modern Android Apps in BackDroid},
author = {Daoyuan Wu and Debin Gao and Robert H. Deng and Rocky K. C. Chang},
journal= {arXiv preprint arXiv:2005.11527},
year = {2020}
}