漏洞概述 在 文件中, 函数返回的 值未进行上界检查,导致在 32 位目标平台上可能发生整数溢出。具体表现为: 乘以 或 时,如果 值过大,乘法结果会溢出,导致 分配过小的内存。 后续对分配内存的写入操作会导致堆缓冲区溢出。 影响范围 受影响文件: (第 222、231、245、300 行) 溢出条件: - 在 32 位目标上, 。 - 当 为 6,710,880 时,乘法结果为 4,294,967,040,超过 32 位整数范围,导致溢出。 - 当 为 6,710,887 时,乘法结果为 4,294,967,680,同样导致溢出。 可利用性: - 需要 文件的写权限(默认由 root 拥有)。 - 攻击者可以通过修改配置文件并在 32 位主机上加载,触发认证过程中的堆损坏。 - CVSS 4.0 估计在 32 位上的评分为 AV:L/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/SC:H。 修复方案 1. 添加上界检查: - 在 中添加 宏定义,并在分配内存前进行上界检查。 - 示例代码: 2. 应用相同的上界检查: - 在第 300 行的 分配块前也应用相同的上界检查。 - 第 231 和 245 行的分配是安全的,因为 。 3. 验证: - 添加单元测试 ,模拟 返回 ,并断言 返回 0。 - 验证错误消息出现在 syslog 中。 - 运行 确保测试通过。 - 为 目标构建(通过 Docker: )并运行测试套件。 代码块