跳转至

CVE-2026-20182: Unauthenticated Cisco SD-WAN Control Plane Compromise via vHub Authentication Bypass

Ch12.066 CVE-2026-20182: Unauthenticated Cisco SD-WAN Control Plane Compromise via vHub Authentication Bypass

📊 Level ⭐⭐ | 7.3KB | entities/cve-2026-20182-cisco-sd-wan-vhub-bypass.md

CVE-2026-20182: Unauthenticated Cisco SD-WAN Control Plane Compromise via vHub Authentication Bypass

摘要

CVE-2026-20182 是一个 CVSS 10.0 的严重认证绕过漏洞,影响 Cisco Catalyst SD-WAN Controller 和 Manager。漏洞位于 vdaemon 服务的 vbond_proc_challenge_ack() 函数中,当连接对端声明自己为 vHub 设备(device_type = 2)时,会完全跳过证书验证和信任验证逻辑,直接将 peer->authenticated 设为 true。远程未认证攻击者可利用此漏洞成为受信任的 SD-WAN 控制平面对端,进而操纵路由、注入 SSH 密钥实现持久化访问。Rapid7 的 Jonah Burgess 和 Stephen Fewer 发现了该漏洞。

核心要点

受影响组件

Cisco Catalyst SD-WAN 平台由四个核心组件构成:

组件 功能 受影响
vManage 集中管理仪表板
vSmart 控制平面控制器(路由策略分发)
vBond 编排服务(设备认证与连接) ✅(信任锚)
WAN Edge Routers 分支/云环境的物理/虚拟路由器 间接影响

漏洞影响所有部署模型:本地部署、Cisco 托管云、FedRAMP 政府云。

漏洞根因

vdaemon 服务通过 DTLS(UDP/12346)进行控制平面通信。认证流程中,vbond_proc_challenge_ack() 函数对不同设备类型执行不同的验证逻辑:

设备类型 验证逻辑 结果
vEdge 1 硬件证书 + TPM + board-ID + OTP 验证后认证
vHub 2 无验证 直接设为已认证
vSmart 3 证书链 + 序列号查重 + DTLS 对端证书 验证后认证
vBond 4 信任锚处理(独立逻辑路径) 其他路径验证
vManage 5 证书链 + 序列号查重 + DTLS 对端证书 验证后认证

关键缺陷device_type == 2(vHub)没有对应的验证代码块,函数直接跳过所有验证逻辑,最终执行 peer->authenticated = 1

攻击流程

  1. DTLS 握手:攻击者使用任意/无效证书发起 DTLS 连接到 vSmart(UDP/12346)
  2. CHALLENGE 响应:vdaemon 发送 CHALLENGE 消息(msg_type=8),包含 256 字节随机数据
  3. 伪造 CHALLENGE_ACK:攻击者回复 CHALLENGE_ACK(msg_type=9),设置 device_type = 2
  4. 认证状态设置:控制器发送 CHALLENGE_ACK_ACK(msg_type=10),标记 peer->authenticated = true
  5. Hello 交换:攻击者发送 Hello(msg_type=5),对端状态转为 UP
  6. 加入 SD-WAN Fabric:攻击者成为受信任的控制平面对端

后渗透能力

成功利用后,攻击者获得以下能力:

  • 路由操纵:修改路由通告、改变路径选择、操纵 SD-WAN 流量
  • 流量重定向:将企业流量重定向或拦截到攻击者控制的基础设施
  • SSH 密钥注入:通过 MSG_VMANAGE_TO_PEER(msg_type=14)向 vmanage-admin 账户的 authorized_keys 注入公钥,实现持久化访问
  • NETCONF 滥用:通过注入的 SSH 密钥访问 TCP/830 的 NETCONF 管理接口
  • 全控制平面妥协:vSmart 编排整个企业 WAN 的路由和信任关系,被攻陷意味着整个 SD-WAN 基础设施沦陷

深度分析

CHALLENGE_ACK 可达性分析

漏洞利用的前提是未认证的 CHALLENGE_ACK 消息能到达 vbond_proc_challenge_ack() 处理器。vdaemon 的预分发认证门控(vbond_proc_msg())实现了一个白名单机制

if (peer->authenticated != 1
    && msg_type != 5   // Hello
    && msg_type != 8   // CHALLENGE
    && msg_type != 9   // CHALLENGE_ACK
    && msg_type != 10  // CHALLENGE_ACK_ACK
    && msg_type != 7   // NEW_CHALLENGE_ACK
    && msg_type != 11  // TEAR_DOWN
) { return 20; }  // 拒绝

CHALLENGE_ACK(msg_type=9)在白名单中,因此未认证攻击者可以直接发送此消息到达漏洞函数。

SSH 密钥注入机制

后渗透阶段的 SSH 密钥注入通过 vbond_proc_vmanage_to_peer() 实现:

  • 文件以 a+(追加)模式打开 /home/vmanage-admin/.ssh/authorized_keys
  • 攻击者控制的 SSH 公钥通过 fputs() 直接写入
  • 消息结构为固定的 769 字节:768 字节密钥缓冲区 + 1 字节 TLV 计数
  • 前导换行符确保追加正确,嵌入的 null 字节终止字符串
  • 无消毒、过滤或验证(仅基本重复检查)
  • 追加模式不替换现有密钥,允许在不中断合法管理访问的情况下实现持久化

Metasploit 利用模块

Rapid7 已发布 Metasploit 辅助模块,自动化完整的利用流程:

  1. 使用自签名证书进行 DTLS 握手
  2. 发送伪造的 vHub CHALLENGE_ACK
  3. 绕过 SD-WAN 认证
  4. 转换为 UP 状态
  5. 注入 SSH 公钥到 vmanage-adminauthorized_keys
  6. 建立持久化特权访问
  7. 提供 NETCONF 管理服务访问(TCP/830)

已在 Cisco Catalyst SD-WAN Controller 20.12.6.1 上成功测试。

实践启示

修复优先级

紧急修补 — Cisco 已发布修复版本,无可用的配置级变通方案:

SD-WAN 版本 修复版本
20.9 20.9.9.1
20.10 20.12.7.1
20.12 20.12.5.4 / 20.12.6.2 / 20.12.7.1
20.15 20.15.4.4 / 20.15.5.2
20.18 20.18.2.2
26.1.1 26.1.1.1

事件响应检查清单

  1. 立即升级所有外部可达的 vSmart/vBond/vManage 控制器
  2. 审查 DTLS 和认证日志:异常 DTLS 连接、未知对端标识、可疑 CHALLENGE_ACK 活动、意外的 state = UP 转换
  3. 审计 SSH 授权密钥:检查 /home/vmanage-admin/.ssh/authorized_keys 中的未知公钥
  4. 检查控制平面对端:异常的 vHub 对端、对端序列号、控制器关系
  5. 轮换凭据和信任材料:SSH 密钥、证书、API 凭据、SD-WAN 信任关系
  6. 保留取证证据:控制器日志、DTLS 会话数据、内存快照、配置快照

安全设计启示

  • 设备类型验证不应有"空路径":每种设备类型都应有明确的验证逻辑,默认拒绝未验证的类型
  • 认证状态不应由单一标志位控制peer->authenticated = true 不应仅基于设备类型声明
  • 后渗透原语应有额外授权:SSH 密钥注入等高危操作应有独立的授权检查
  • 协议设计中的信任模型:vHub 作为"中心路由器"角色被隐式信任,这种信任假设在安全设计中是危险的

相关实体