漏洞总结 漏洞概述 该提交修复了 OSPF(开放最短路径优先)协议实现中的多个缓冲区溢出漏洞。这些漏洞存在于处理 OSPF 链路状态通告(LSA)和扩展链路 TLV(类型-长度-值)数据时,由于未正确验证数据长度,导致可能读取或写入超出分配内存边界的内存。 影响范围 受影响组件: 守护进程中的 和 文件。 触发场景:当 OSPF 路由器接收到包含畸形(malformed)或恶意构造的 OSPF 数据包(特别是包含扩展链路 TLV 或 TE LSA)时。 潜在后果: 程序崩溃(拒绝服务)。 信息泄露。 远程代码执行(如果攻击者能精确控制内存布局)。 修复方案 在解析 OSPF TLV 数据(如 , , , 等函数)时,增加了对 和剩余长度 的严格边界检查。 核心修复逻辑: 1. 在遍历 TLV 子项时,确保 不超过当前可用的剩余长度 。 2. 如果检测到 ,则记录错误日志并跳出循环,防止后续越界访问。 3. 在累加 时,先检查 是否会导致溢出或超出 ,再进行累加。 关键代码变更示例(来自 和 ): 其他修复点包括: 在 中处理 TE LSA 的 TLV 时,同样增加了 的检查。 在 中处理 LSA 属性时,也增加了类似的边界检查。 在 中处理扩展链路 TLV 时,也增加了边界检查。 这些修复确保了在处理任何来自不可信源的 OSPF 数据时,程序不会因长度验证缺失而发生内存越界访问。