漏洞概述 漏洞名称: CWE-191: Integer Underflow (Wrap or Wraparound) 描述: 该漏洞发生在从一个整数中减去另一个整数时,结果小于最小允许的整数值,导致产生一个不等于正确结果的值。这种情况可能发生在有符号和无符号整数中。 影响范围 DoS (拒绝服务): 可能导致程序崩溃、退出或重启。 资源消耗 (CPU): 可能导致无限循环,增加CPU资源消耗。 资源消耗 (内存): 可能导致内存消耗增加。 数据损坏: 如果涉及的数据对数据(而非流程)重要,可能会导致简单的数据损坏。 执行未授权代码/命令: 在某些情况下,可能导致缓冲区溢出,从而执行任意代码。 修复方案 静态分析: 使用自动静态分析工具(如SAST)来检测潜在的整数下溢问题。 代码审查: 仔细检查代码,确保在进行整数运算时不会发生下溢。 输入验证: 对用户输入进行严格验证,防止恶意输入导致整数下溢。 POC代码 示例代码 相关漏洞 CVE-2004-0816: 整数下溢通过畸形包在防火墙中。 CVE-2004-1002: 整数下溢通过无效长度的包。 CVE-2005-0199: 长输入导致错误的长度计算。 CVE-2005-1891: 畸形图标导致循环计数器变量中的整数下溢。 参考 [REF-44] Michael Howard, David LeBlanc and John Viega. "24 Deadly Sins of Software Security". "Sin 7: Integer Overflows". Page 119. McGraw-Hill. 2010.