【问题标题】:How to avoid false positive "Null Dereference" error in Fortify如何避免 Fortify 中的误报“Null Dereference”错误
【发布时间】:2012-10-05 13:48:52
【问题描述】:

我在一个 java 项目中使用“HP Fortify v3.50”,我发现“Null Dereference”有很多误报,因为 Fortify 没有看到对 null 的控制是在另一种方法中。 如何减少误报并保持规则?

这是一个 POC

public class MyClass {
    public static void main(String[] args) {
        String string01 = null;
        String string02 = null;     
        int i;

        if (args[0].equals("A")) {
            string01 = "X";
            string02 = "Y";
        }

        if (!isNull(string02)){
            i = string02.length();} //False Positive
        else {
            i = string02.length();
        } // Yes, it is an error!
    }

    public static boolean isNull(Object toBeTested){
        return (null == toBeTested);        
    }
}

结果:

[E8837DB548E01DB5794FA71F3D5F51C8 : medium : Null Dereference : controlflow ]
    MyClass.java(13) : Assigned null : string02
    MyClass.java(16) : Branch not taken: (!args[0].equals("A"))
    MyClass.java(20) : Branch taken: (!isNull(string02))           //False Positive
    MyClass.java(21) : Dereferenced : string02

[E8837DB548E01DB5794FA71F3D5F51C9 : medium : Null Dereference : controlflow ]
    MyClass.java(13) : Assigned null : string02
    MyClass.java(16) : Branch not taken: (!args[0].equals("A"))
    MyClass.java(20) : Branch not taken: isNull(string02)
    MyClass.java(23) : Dereferenced : string02

【问题讨论】:

标签: java fortify


【解决方案1】:

取消引用空指针或进入无限循环可能会导致拒绝服务攻击,但它也可能为攻击者利用一些经过深思熟虑的错误处理代码创造必要条件。

https://cwe.mitre.org/data/definitions/476.htmlhttps://www.owasp.org/index.php/Null_Dereference

【讨论】:

    【解决方案2】:

    这看起来更像是一个 SCA 问题,您应该将其提交给他们的支持团队。或者只是将其审核为不是问题。这不是可以通过自定义规则解决的问题。

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多