一句话:用 COVA 计算部分路径约束,对 1022 个 Android 应用的 FlowDroid 污点流做定性研究,揭示误报成因与精度提升方向。
静态污点分析在 Android 安全检测中应用广泛,但只有精度(信噪比)足够高才会被开发者采用;以往研究多只定量报告精度,难以指明如何进一步提升。本文对 Android 静态污点分析结果进行定性研究,并设计 COVA 工具计算污点流的部分路径约束,以刻画污点流在真实场景中可能发生的条件。作者基于 FlowDroid 在 1,022 个真实 Android 应用上报告的污点流开展分析,发现:许多污点流仅在环境设置、用户交互、I/O 等特定条件下出现,分析应考虑应用上下文;很少有污点流同时受多种条件约束,故动态确认真阳性的工具可一次专注一类条件(如仅模拟用户交互);大量误报来自过于宽松的 source/sink 配置,需要更谨慎地配置并借助更好的工具支持。
In the past, researchers have developed a number of popular taint-analysis approaches, particularly in the context of Android applications. Numerous studies have shown that automated code analyses are adopted by developers only if they yield a good "signal to noise ratio", i.e., high precision. Many previous studies have reported analysis precision quantitatively, but this gives little insight into what can and should be done to increase precision further. To guide future research on increasing precision, we present a comprehensive study that evaluates static Android taint-analysis results on a qualitative level. To unravel the exact nature of taint flows, we have designed COVA, an analysis tool to compute partial path constraints that inform about the circumstances under which taint flows may actually occur in practice. We have conducted a qualitative study on the taint flows reported by FlowDroid in 1,022 real-world Android applications. Our results reveal several key findings: Many taint flows occur only under specific conditions, e.g., environment settings, user interaction, I/O. Taint analyses should consider the application context to discern such situations. COVA shows that few taint flows are guarded by multiple different kinds of conditions simultaneously, so tools that seek to confirm true positives dynamically can concentrate on one kind at a time, e.g., only simulating user interactions. Lastly, many false positives arise due to a too liberal source/sink configuration. Taint analyses must be more carefully configured, and their configuration could benefit from better tool assistance.