漏洞概述 CVE-2026-48686: FastNetMon BGP NLRI 解码器中的 28 字节栈溢出漏洞 CVSS 评分: 9.8 (Critical) CWE: CWE-787 (Out-of-bounds Write), CWE-120 (Buffer Copy without Checking Size) 受影响版本: FastNetMon Community Edition <= 1.2.9 漏洞代码位置: 函数 ,第 93-111 行 攻击向量: 远程(通过 GoBGP 的 BGP 对等体) 发现者: Lorikeet Security 影响范围 漏洞描述: 在 函数中,从 BGP NLRI 字节流读取前缀位长度,派生字节计数,并执行 将该字节计数复制到栈上的固定 4 字节变量。没有对“从 wire 读取 1 个字节”和“将许多字节复制到栈”之间进行边界检查。 具体细节: 对于 IPv4 NLRI,前缀位长度必须在 [0, 32] 范围内。如果攻击者将其设置为 255,则辅助函数 计算 。目标变量 恰好 4 字节。 将 32 字节写入 4 字节槽,溢出 28 字节。 远程代码执行: 默认 FastNetMon CMake 构建没有安全标志(如 、 、 、 ),没有栈金丝雀检测溢出,没有 FORTIFY 增强的 来拒绝过度大小的复制,二进制文件位于静态基址。20 字节足以用攻击者控制的值覆盖保存的返回地址。 修复方案 直接修复: 在函数顶部添加条件检查,确保 不超过 32 位。 结构改进: 避免使用 到固定大小的栈变量,而是使用动态大小的目标。复制长度应为 。 编译标志: 添加 、 、 到 CFLAGS 和 到 LDFLAGS。 补偿控制: - 限制 BGP 对等体集为受信任的对等体。 - 使用加固标志重新构建 FastNetMon。 - 以特权分离用户运行 FastNetMon。 - 监控 BGP 会话日志以检测畸形 UPDATE 消息或异常的 NLRI 长度。 - 如果不使用 BGP,禁用 BGP 集成。 披露时间线 2026-04-25: 在 Lorikeet Security 对 FastNetMon Community Edition 1.2.9 的源代码审计中发现漏洞。 2026-04-25: 向 MITRE 请求 CVE ID。 2026-04-25: 通知供应商(Pavel Odintsov / FastNetMon LTD)。 2026-05-22: CVE-2026-48686 由 MITRE 分配。 TBD: 供应商响应。 TBD: 漏洞发布。