Leveraging Historical Versions of Android Apps for Efficient and Precise Taint Analysis

Today, computing on various Android devices is pervasive. However, growing security vulnerabilities and attacks in the Android ecosystem constitute various threats through user apps. Taint analysis is a common technique for defending against these threats, yet it su?ers from challenges in attaining practical simultaneous scalability and e?ectiveness. This paper presents a novel approach to fast and precise taint checking, called incremental taint analysis, by exploiting the evolving nature of Android apps. The analysis narrows down the search space of taint checking from an entire app, as conventionally addressed, to the parts of the program that are di?erent from its previous versions. This technique improves the overall efciency of checking multiple versions of the app as it evolves. We have implemented the techniques as a tool prototype, EvoTaint, and evaluated our analysis by applying it to real-world evolving Android apps. Our preliminary results show that the incremental approach largely reduced the cost of taint analysis, by 78.6% on average, yet without sacrifcing the analysis e?ectiveness, relative to a representative precise taint analysis as the baseline.

[1]  Gregg Rothermel,et al.  Incremental dynamic impact analysis for evolving software systems , 2003, 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003..

[2]  Mary Lou Soffa,et al.  An Incremental Version of Iterative Data Flow Analysis , 1989, IEEE Trans. Software Eng..

[3]  Wenke Lee,et al.  Checking More and Alerting Less: Detecting Privacy Leakages via Enhanced Data-flow Analysis and Peer Voting , 2015, NDSS.

[4]  Václav Rajlich,et al.  Incremental change in object-oriented programming , 2004, IEEE Software.

[5]  Susan Horwitz,et al.  Incremental program testing using program dependence graphs , 1993, POPL '93.

[6]  Jeff H. Perkins,et al.  Information Flow Analysis of Android Applications in DroidSafe , 2015, NDSS.

[7]  Eric Bodden,et al.  Reviser: efficiently updating IDE-/IFDS-based data-flow analyses in response to incremental program changes , 2014, ICSE.

[8]  R. E. Kurt Stirewalt,et al.  Incremental dependence analysis for interactive parallelization , 1990, ICS '90.

[9]  Raúl A. Santelices,et al.  Abstracting Program Dependencies Using the Method Dependence Graph , 2015, 2015 IEEE International Conference on Software Quality, Reliability and Security.

[10]  Yajin Zhou,et al.  Dissecting Android Malware: Characterization and Evolution , 2012, 2012 IEEE Symposium on Security and Privacy.

[11]  Jacques Klein,et al.  FlowDroid: precise context, flow, field, object-sensitive and lifecycle-aware taint analysis for Android apps , 2014, PLDI.

[12]  Rossouw von Solms,et al.  Special Features: Incremental Information Security Certification , 2001 .

[13]  Muttukrishnan Rajarajan,et al.  Android Security: A Survey of Issues, Malware Penetration, and Defenses , 2015, IEEE Communications Surveys & Tutorials.

[14]  Raúl A. Santelices,et al.  Method-level program dependence abstraction and its application to impact analysis , 2016, J. Syst. Softw..

[15]  Haipeng Cai Cost-effective dependency analysis for reliable software evolution , 2015 .

[16]  Sarfraz Khurshid,et al.  Directed incremental symbolic execution , 2011, PLDI '11.

[17]  Benjamin Livshits,et al.  Cheetah: Just-in-Time Taint Analysis for Android Apps , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).

[18]  Petar Tsankov,et al.  Statistical Deobfuscation of Android Applications , 2016, CCS.

[19]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[20]  Chao Wang,et al.  Conc-iSE: Incremental symbolic execution of concurrent software , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).