一句话:提出一种与框架和分析工具无关的 Java 框架行为通用建模方法,提升调用图完整性与客户端分析效果。
跨过程静态分析(如安全分析)依赖高质量调用图,但面向框架应用时难以扩展到直接分析框架代码,因此多数工具转而手工建模框架语义;这类模型针对特定分析定制,且本质上不完整。本文提出一种通用的 Java 框架行为建模方法,不绑定特定框架或分析工具,因而具有高度可复用性。作者指出通用近似可能引入噪声,但通过精心构造的模型可取得较好效果。在 Android 上以客户端污点分析进行评估,结果表明该方法比原始分析生成更完整的调用图,并使客户端分析同时提升精度(0.83 至 0.86)和召回率(0.20 至 0.31)。
Interprocedural static analysis tools such as security analyses need good call graphs, which are challenging to scale for framework-based applications. So most tools model rather than analyzing frameworks. These models are manually crafted to capture framework semantics crucial for the particular analysis, and are inherently incomplete. We propose a general approach to modeling Java frameworks. It is not limited to any framework or analysis tool, therefore, highly reusable. While a generic approximation can be noisy, we show our carefully-constructed one does well. Experiments on Android with a client taint analysis show that our approach produces more complete call graphs than the original analysis. As a result, the client analysis works better: both precision (from 0.83 to 0.86) and recall (from 0.20 to 0.31) are improved.
DOI 原文 ·
@inproceedings{paperbot6349,
title = {A general approach to modeling Java framework behaviors},
author = {Linghui Luo},
booktitle = {FSE},
year = {2021},
doi = {10.1145/3468264.3473489}
}