SCWE-041: Unsafe Downcasting (不安全的向下转换) 漏洞概述 当较大的整数类型隐式或显式转换为较小的整数类型时发生。Solidity 不会自动检查溢出,这使得在显式类型转换时可能无意中截断值,导致精度丢失、意外的值改变或整数溢出。 影响范围 关联漏洞: CWE-681: Incorrect Conversion between Numeric Types (数值类型之间的不正确转换)。 具体后果: 如果较大的数值(如 )超过了目标类型(如 )的范围(例如 > 255),高位比特会被截断,导致静默失败(silent failures)和意外值。 修复方案 验证范围: 在转换前始终验证值是否适合目标数据类型。 使用安全库: 使用安全的数学库(如 OpenZeppelin 的 )来确保正确的转换。 避免不必要的转换: 除非为了 gas 优化,否则避免不必要的向下转换。 代码示例 漏洞代码 (Vulnerable Contract Example): 修复代码 (Fixed Contract Example):