CS.WRONG.CAST.MIGHT
この警告は、1 つのオブジェクトが、データを失ったかプログラム障害が発生した可能性がある別のオブジェクトにキャストされる可能性がある状況で報告されます。
脆弱性とリスク
データが失われるか、プログラムが失敗する可能性があります。この状況は、キャストの後にプログラムが存在しないクラスフィールドにアクセスしようとすると、発生する可能性があります。
例 1
1 public class Object1 : Object2 { 2 public int a; 3 } 4 public class Object2 { 5 public int b; 6 } 7 public class ClassCastTests { 8 public void foo() { 9 Object1 o1; 10 Object2 o2 = new Object2(); 11 if (flag) 12 o1 = (Object1)o2; 13 } 14 private bool flag; 15 }
クラス Object1 のオブジェクト o1 とクラス Object2 のオブジェクト o2 は 9 ~ 10 行目で宣言されます。12 行目で、Object2 は 11 行目のフラグに応じて Object1 にキャストされる可能性がありますが、これは無効です。
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。