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 提供。