论文标题
当程序分析符合字节码搜索时:对卧底染色体中现代Android应用的有针对性且有效的术间分析
When Program Analysis Meets Bytecode Search: Targeted and Efficient Inter-procedural Analysis of Modern Android Apps in BackDroid
论文作者
论文摘要
广泛使用的Android静态程序分析工具,例如Amandroid和FlowDroid,执行了全面的手术间分析,该分析是全面的,但根本难以处理现代(大型)应用程序。在五年中,平均应用程序大小增加了三到四次。在本文中,我们探讨了有针对性的手术间分析的新范式,该范式可以跳过无关紧要的代码,并仅专注于对安全敏感的水槽API的流。为此,我们提出了一种称为“即时字节码”搜索的技术,该技术在需要找到呼叫者时及时搜索了拆卸的应用程序字节字节码文本。通过这种方式,它逐步指导(和向后)术间分析,直到到达入口点,而无需依赖整个应用图。然而,由于Java多态性,回调,异步流,静态初始化器和Android应用程序中的组件通信,这种基于搜索的术间分析是具有挑战性的。我们通过提出一组使用灵活搜索并转发对象污染分析的字体模式搜索机制来克服这些独特的障碍。在这项新的术间分析的顶部,我们进一步调整了传统的向后切片和前进的恒定传播,以提供Sink API调用的完整数据流跟踪。我们已经实施了一个名为backdroid的原型,并将其与Amandroid进行了比较,以分析3178个现代流行应用程序的加密和SSL错误配置。评估表明,对于此类基于水槽的问题,校长速度更快(2.13 v.s. 78.15分钟),并且没有定时失败(在Amandroid中为35%),同时保持接近甚至更好的检测效果。
Widely-used Android static program analysis tools, e.g., Amandroid and FlowDroid, perform the whole-app inter-procedural analysis that is comprehensive but fundamentally difficult to handle modern (large) apps. The average app size has increased three to four times over five years. In this paper, we explore a new paradigm of targeted inter-procedural analysis that can skip irrelevant code and focus only on the flows of security-sensitive sink APIs. To this end, we propose a technique called on-the-fly bytecode search, which searches the disassembled app bytecode text just in time when a caller needs to be located. In this way, it guides targeted (and backward) inter-procedural analysis step by step until reaching entry points, without relying on a whole-app graph. Such search-based inter-procedural analysis, however, is challenging due to Java polymorphism, callbacks, asynchronous flows, static initializers, and inter-component communication in Android apps. We overcome these unique obstacles in our context by proposing a set of bytecode search mechanisms that utilize flexible searches and forward object taint analysis. Atop of this new inter-procedural analysis, we further adjust the traditional backward slicing and forward constant propagation to provide the complete dataflow tracking of sink API calls. We have implemented a prototype called BackDroid and compared it with Amandroid in analyzing 3,178 modern popular apps for crypto and SSL misconfigurations. The evaluation shows that for such sink-based problems, BackDroid is 37 times faster (2.13 v.s. 78.15 minutes) and has no timed-out failure (v.s. 35% in Amandroid), while maintaining close or even better detection effectiveness.