CS.NRE.GEN.CALL.MIGHT
null 定数のローカル割り当てまたは null を返す関数の呼び出しによって、オブジェクト参照値は、それを null についてチェックせずに逆参照する可能性がある関数に渡される場合があります。
脆弱性とリスク
null オブジェクト参照の逆参照は、一部のオペレーティングシステムでのアプリケーションのクラッシュや実行時例外のスローを引き起こす実行時の重大な問題です。
例 1
コピー
public class A {
public void abc() {}
public void foo(A a) {
if (flag2)
return;
a.abc();
}
public void var() {
A a = null;
if (flag)
foo(a);
}
private bool flag;
private bool flag2;
}
変数 'a' では、Klocwork は 12 行目で指摘レポート (CS.NRE.GEN.CALL.MIGHT) を生成します。変数 'a' は 10 行目で null 値に明示的に割り当てられます。それは、12 行目で引数 1 として (逆参照する可能性がある) 関数 'foo' に渡されます。
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。