CS.NRE.FUNC.MIGHT

null を返す可能性がある関数の呼び出しによってオブジェクト参照値は、明示的に、またはそれを null についてチェックせずに逆参照する可能性がある関数を呼び出すことによって、逆参照される場合があります。

脆弱性とリスク

null オブジェクト参照の逆参照は、一部のオペレーティングシステムでのアプリケーションのクラッシュや実行時例外のスローを引き起こす実行時の重大な問題です。

例 1

コピー
namespace CS.NRE.FUNC.MIGHT
{
    class Program
    {
        public Program foo()
        {
            if (flag)
                return null;
            
            return new Program();
        }


        public void var(bool b)
        {            
            Program a = foo();
            if (b)
                a.foo();
        }
        private bool flag;
    }
}

変数 'a' では、Klocwork は 18 行目で指摘レポート (CS.NRE.FUNC.MIGHT) を生成します。変数 'a' が、16 行目で null になる可能性がある値、および関数 'foo' の呼び出しによって返される値に割り当てられる場合、18 行目で逆参照されると、null になる可能性があります。

セキュリティトレーニング

Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。