一句话:提出 CleanDroid,通过智能清理 IFDS 路径边表来降低数据流分析的内存占用并加速求解。
静态数据流分析广泛应用于代码优化、安全与隐私分析等场景,而 IFDS 等精确算法虽能减少误报,却因在展开超图上做不动点迭代而内存开销巨大,中型应用即可消耗数百 MB 至数 GB。本文提出 CleanDroid 技术,在不影响终止性的前提下,从 IFDS 不动点迭代所用的路径边表中高效删除边,从而压缩内存占用。该技术被集成到流行的开源数据流求解器 FlowDroid 中。在 600 个来自 Google Play 的真实 Android 应用上的评估表明,CleanDroid 将每个应用的平均内存消耗降低约 63% 至 78%,同时最高可加速分析 66%。
Static data flow analysis is an integral building block for many applications, ranging from compile-time code optimization to security and privacy analysis. When assessing whether a mobile app is trustworthy, for example, analysts need to identify which of the user's personal data is sent to external parties such as the app developer or cloud providers. Since accessing and sending data is usually done via API calls, tracking the data flow between source and sink API is often the method of choice. Precise algorithms such as IFDS help reduce the number of false positives, but also introduce significant performance penalties. With its fixpoint iteration over the program's entire exploded supergraph, IFDS is particularly memory-intensive, consuming hundreds of megabytes or even several gigabytes for medium-sized apps. In this paper, we present a technique called CleanDroid for reducing the memory footprint of a precise IFDS-based data flow analysis and demonstrate its effectiveness in the popular FlowDroid open-source data flow solver. CleanDroid efficiently removes edges from the path edge table used for the IFDS fixpoint iteration without affecting termination. As we show on 600 realworld Android apps from the Google Play Store, CleanDroid reduces the average per-app memory consumption by around 63% to 78%. At the same time, CleanDroid speeds up the analysis by up to 66%.