CS.DBZ.CONST

ゼロ定数値が関数に渡され、ゼロによる除算で使用される可能性があります。

ゼロを除数として除算やモジュロ演算に使用しようとすると、ランタイムエラーが発生します。ゼロによる除算の欠陥は、効果的でないエラー処理または競合状態のためにしばしば起こります。通常、プログラム終了の異常が発生します。C# コードにおいて、値が除算またはモジュロ演算の除数として使用される前に、それがゼロに等しくないことを確認するためにチェックする必要があります。

DBZ チェッカーは、除算やモジュロ演算の除数としてゼロが使用されているインスタンスを検索します。

CS.DBZ.CONST チェッカーは、除算やモジュロ演算の除数としてゼロが明示的に使用されている状況にフラグを立てます。

脆弱性とリスク

通常、整数をゼロで除算すると、プロセスの失敗または例外を引き起こします。また、演算は成功するかもしれませんが、誤った答えになる可能性もあります。

軽減と防止

ゼロによる除算の指摘は通常、効果的でない例外処理が原因で発生します。この脆弱性を回避するために、これを除算やモジュロ演算の除数として使用する前に、ゼロ値がないかを確認してください。

脆弱コード例

コピー
  namespace test
  {
      class A
      {
          void do_dbz()
          {
              int size = 10;
              size = size % 0;
              int res = 19;
            res = res/0;
         }
         static void Main(string[] args)
         {
         }
     }
 }

Klocwork は 8 行目と 10 行目で指摘レポートを生成し、8 行目と 10 行目で除算の除数としてゼロ定数値を使用していることを示します。

このコードはゼロによる除算を削除することによって修正することができます。

外部参考資料

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

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