用途:该技能聚焦整数溢出漏洞(CWE-190),严重级别为高。当代码对用户可控的数值执行算术运算时,若结果超出数据类型最大值,会发生回绕为小值或负值,攻击者可借此绕过安全检查、触发缓冲区溢出或操纵金融交易。单独校验每个输入并不足够,因为合法输入组合后仍可能溢出。
主要能力:提供反模式说明、易受攻击与安全代码示例(C/C++、Python、JavaScript、Java)、检测方法与预防措施。示例涵盖乘法溢出、C 扩展中的溢出、JavaScript 精度丢失、Java 乘法溢出等场景。
使用方式:在生成或审查涉及用户输入算术的代码时应用。检测可审计乘加运算、查找缺少溢出前置检查的运算、用边界值(如 INT32_MAX、UINT32_MAX、INT64_MAX)进行模糊测试,或使用 SAST 工具(CodeQL 的 cpp/uncontrolled-arithmetic、Clang 静态分析器的 security.intoverflow、Semgrep 规则)。
预防:运算前检查(乘法用 a > MAX_INT / b,加法用 a > MAX_INT - b);使用更大数据类型;金融计算使用任意精度库(如 Java BigDecimal、Python decimal);启用编译器保护(如 GCC/Clang 的 -ftrapv)。
适用场景:金融计算、内存分配、缓冲区大小计算等对用户输入做算术的代码。
限制:资料未提供该技能的具体安装命令、平台支持、收费信息或实际使用效果,暂未提供。