-
Notifications
You must be signed in to change notification settings - Fork 12
数据流窗口
铲子科技 edited this page Nov 12, 2024
·
10 revisions
- 数据流窗口用于显示当前选中的漏洞的数据流信息,即污点分析的污点传播路径
- 数据流节点默认只显示数据流节点的变量名称,用户可以勾选显示文件名复选框,让数据流节点显示节点对应的代码文件名及行号
- 鼠标点击数据流节点可以在编辑器中打开对应的文件位置,并选择节点对应的代码中的变量
- 鼠标停留在数据流节点可以查看节点的详细信息
- 鼠标停留在数据流节点之前的小三角,会显示数据流的边,即污点的传播方式
- 数据流:这里的数据流指数据在代码中的流动,如果一个数据能从规则中定义的source点流到sink点,就会检测出漏洞,一个完整的数据流包括一些列数据流节点和边
- 数据流节点:这里主要是指各种变量、常量,代码中的表现形式:局部变量、成员变量、常量(字符串 布尔常量 整形常量等),包括这种变量常量的声明、引用。
- 数据流边:数据的传播方式:比如赋值、变量使用、方法调用、构造函数、foreach等都会引起数据传播,形成边。
- 注:对于无参call,我们会采用一个名称为noArg的占位参数,参数位置属性argPosition为-1,以形成完整的callgraph,但目前在数据流检测时尚未用到。对于接口和抽象类的call,数据流会流向它的子类的同一个方法的同一个参数,以应对spring 依赖注入类似的功能导致的数据流中断。
- 下图展示了数据流窗口的效果
铲子SAST,专注于发现Java代码安全漏洞