--- 漏洞概述 该漏洞存在于 FastNetMon 的 BGP 协议解析器中,具体在 函数处理 属性时。开发者在代码中明确标注了 ,但此安全检查从未实现。 攻击者可构造恶意的 属性,利用以下三个未经验证的字段驱动越界读取: 1. 结构体强制转换无大小验证:将原始字节指针强制转换为 结构体指针,但未检查属性长度是否足够容纳该结构体。 2. 无界 memcpy 操作:使用从属性中读取的 字段(攻击者可设为 255)作为 长度,导致读取超出属性边界。 3. 复合指针算术无边界检查:计算 指针时,基于攻击者控制的偏移量进行指针算术,可能导致读取任意内存位置。 --- 影响范围 受影响软件:FastNetMon Community Edition 1.2.9 及更早版本 攻击方式:远程攻击者可通过发送特制的 BGP 更新消息触发漏洞 潜在影响: - 越界读取可能导致信息泄露 - 堆内存溢出可被利用进行堆喷射攻击 - 栈溢出可被利用进行栈溢出攻击 - 可能实现任意代码执行 --- 修复方案 代码修复建议 补偿控制措施 1. 禁用 IPv6 BGP:如果部署只处理 IPv4 流量,可配置 GoBGP 不通告 IPv6 地址族,从而避免调用 IPv6 解码器。 2. 严格 BGP 对等体白名单:仅允许已知、可信、业务关系对等体连接,限制攻击面。 3. 限制入站 BGP 属性大小:在 GoBGP 中设置合理的属性大小上限(如 4096 字节),拒绝过大的属性。 4. 启用栈保护:使用编译时标志 和 ,将潜在的栈溢出转化为 abort 检测。 --- 披露时间线 2026-04-25:漏洞在 Lorikeet Security 对 FastNetMon 1.2.9 的源代码审计中被发现 2026-04-25:向 MITRE 请求 CVE ID 2026-04-25:通知 FastNetMon LTD 联系人 2026-05-22:CVE-2026-48688 由 MITRE 分配 2026-05-23:Lorikeet Security 发布负责任披露报告 --- 根本原因分析 该漏洞反映了 BGP 解析器中普遍存在的安全问题: 每个解析器都实现自己的边界检查逻辑 缺乏统一的、经过充分测试的解析框架 开发者可能低估了外部输入的危险性 测试用例未能覆盖边界情况 建议项目采用统一的解析框架,将所有 和指针算术操作封装在带边界检查的辅助函数中,从根本上消除此类漏洞。