6

Java プロジェクトで「HP Fortify v3.50」を使用していますが、Fortify は null に対する制御が別のメソッドにあることを認識しないため、「Null Dereference」で多くの誤検出を見つけました。誤検知を減らしてルールを維持するにはどうすればよいですか?

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
4

2 に答える 2

-4

null ポインターを逆参照したり、無限ループに入ったりすると、サービス拒否攻撃が可能になる可能性がありますが、攻撃者がよく考えられていないエラー処理コードを利用するのに必要な条件が作成される可能性もあります。

https://cwe.mitre.org/data/definitions/476.htmlおよびhttps://www.owasp.org/index.php/Null_Dereferenceを参照してください

于 2015-04-23T20:56:11.340 に答える