Java程序的静态污点分析

3
我不确定这是否是正确的提问地点,但我需要帮助。我想要构建一个针对Java的静态污点分析工具。我的理解是该工具将从主入口开始扫描所有Java文件。对于每一行源代码,工具将对其进行解码并执行所需操作。
例如,
1- Boolean x=false;
2- String s = x.toString();   

第一行声明了一个布尔变量,第二行将其转换为字符串。第一行会记录布尔变量'x'已被声明,并在第二行将其转换为字符串。只有当我对toString()函数进行检查并执行所需操作时,我的工具才能理解它。

我的问题是,我是否需要为Java中定义的所有Boolean类型函数编写检查?其他数据类型和库函数呢?

例如,布尔类型可用的其他一些函数包括:

toString(boolean value)
compareTo(Boolean that)
etc.

如果我使用StringUtils或guava Strings呢?或者是decimal formatter?你有很多要涵盖的内容,需要花费更多的时间来研究这个主题。更不用提类型到对象转换和强制转换了...也许分析字节码或进行动态分析会更好? - damiankolasa
同意。这就是为什么我想知道其他静态污点分析工具是如何做到的?所有其他工具都只在字节码级别上工作吗? - Junaid
1个回答

3

为什么要重复造轮子?你看过findbugs了吗?如果你知道一些bug模式,那么使用findbugs编写自己的bug检测器即可。这里 是一些起点...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接