🔴 【深度分析】严重安全漏洞:CVE-2026-62948

CVSS 评分: 严重(9.6)🔴  状态: Analyzed  发布时间: 2026-07-15


🔍 技术细节速览

字段 值
CVE ID CVE-2026-62948
CVSS 评分 9.6 🔴
严重程度 严重
CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H
CWE 分类 CWE-79,CWE-117,CWE-150
发布时间 2026-07-15
最后更新 2026-07-21
状态 Analyzed
数据来源 security-advisories@github.com

好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 数据,为您生成一篇关于 CVE-2026-62948 的深度分析文章。


⚠️ 高危漏洞预警:CVE-2026-62948 - OpenWrt odhcpd 命令注入与存储型XSS (CVSS 9.6)

CVSS 评分: 9.6 (Critical)
危害等级: 严重
攻击向量: 网络 (AV:N)
攻击复杂度: 低 (AC:L)
所需权限: 无 (PR:N)
用户交互: 需要 (UI:R)
影响范围: 已变更 (S:C)
机密性/完整性/可用性: 高 (H/H/H)


漏洞概述

CVE-2026-62948 是 OpenWrt 系统核心组件 odhcpd 中的一个高危漏洞。该漏洞允许未经身份验证的远程攻击者,通过精心构造一个 DHCPv6 请求(包含恶意 FQDN 选项),向 OpenWrt 设备注入恶意的 HTML 代码。当设备管理员访问 LuCI Web 管理界面中的“活跃 DHCPv6 租约”页面时,该恶意代码会作为活动 HTML 执行,导致存储型跨站脚本攻击 (Stored XSS)。由于攻击者可以窃取管理员会话 Cookie、执行任意操作(如修改设备配置、安装恶意软件)甚至完全控制设备,其危害性极高,CVSS 评分高达 9.6(严重)。

受影响组件与版本

  • 受影响组件: OpenWrt 系统中的 odhcpd 服务 (DHCP/DHCPv6/RA 服务器)
  • 影响版本: 低于 25.12.5 的所有 OpenWrt 版本
  • 修复版本: 25.12.5 及更高版本

漏洞原理分析

该漏洞是一个多阶段、组合触发的漏洞,涉及三个 CWE 分类:CWE-79(跨站脚本XSS)、CWE-117(日志输出注入)和 CWE-150(资源标识符转义不当)。其利用过程可分为以下两个关键阶段:

第一阶段:恶意数据注入(日志注入 / 资源标识符转义不当)

漏洞的根源在于 odhcpd 守护进程中的 src/statefiles.c 文件。

  1. FQDN 未转义: 当 odhcpd 处理来自 DHCPv6 客户端的 FQDN 选项(Option 39)时,会将该主机名未经任何转义处理直接写入租约文件 /tmp/odhcpd.leases。statefiles_write_state6() 和 statefiles_write_state4() 函数是写入点。
  2. 换行符注入 (CWE-150/CWE-117): 由于没有对输入的主机名字符串进行转义,攻击者可以在 FQDN 字段中注入换行符 (\n) 和其他特殊字符。例如,一个精心构造的主机名 a\n<恶意数据> 会破坏租约文件的格式,新插入一行伪造的租约条目。

攻击向量示例: 攻击者通过其客户端发送一个 DHCPv6 请求,其中 FQDN 选项内容为:

attacker_host\n<PAYLOAD>

当 odhcpd 处理并写入文件时,实际的 /tmp/odhcpd.leases 文件中将会新增两行:

  1. 正常的一行(包含 attacker_host)
  2. 完全由攻击者控制的伪造行 <PAYLOAD>,因为换行符将其分隔成了新的一行。

第二阶段:恶意数据渲染与执行(存储型跨站脚本)

  1. 数据读取未过滤: LuCI(OpenWrt 的 Web 管理界面)通过 rpcd-mod-luci 模块的 getDHCPLeases 方法,读取 /tmp/odhcpd.leases 文件内容,并将其传递给前端 JavaScript 代码。
  2. HTML 注入 (CWE-79): 前端文件 htdocs/luci-static/resources/view/status/include/40_dhcp.js 和 htdocs/luci-static/resources/luci.js 中的 dom.append 函数,负责将获取到的租约数据(包括主机名)动态地追加到页面 DOM 中。
  3. XSS 触发: 该过程并未对租约数据中的 HTML 标签和 JavaScript 代码进行任何转义或清理。因此,当管理员访问“状态 -> 概况 -> 活跃 DHCPv6 租约”页面时,攻击者在第一阶段注入的恶意 PAYLOAD(例如 <img src=x onerror=alert(1)> 或更复杂的 JavaScript 脚本)会作为合法的 HTML 代码被浏览器解析并执行。

影响评估

  • 攻击复杂度:低 (AC:L): 攻击者只需要能够发送恶意的 DHCPv6 请求。许多网络环境(尤其是公共 Wi-Fi、企业访客网络)允许未经身份验证的设备发送 DHCP 请求。
  • 所需权限:无 (PR:N): 攻击者在发起 DHCP 请求阶段不需要任何认证信息,可以利用任何连接到网络的设备发起攻击。
  • 用户交互:需要 (UI:R): 此处的“用户交互”并非指攻击者,而是指受害者——OpenWrt 设备的管理员。只要管理员有意或无意地访问了“活跃 DHCPv6 租约”页面,攻击就自动触发。由于这是一个常见的维护页面,交互门槛很低。
  • 潜在后果:
    • 设备完全沦陷: 攻击脚本可以执行任意命令,完全控制路由/设备,包括修改路由配置、转发流量、进行 DNS 劫持、加入僵尸网络(如 Mirai)等。
    • 数据窃取: 窃取管理员会话 Cookie,从而可以远程执行所有管理操作。
    • 横向移动: 被控制的 OpenWrt 设备可以作为跳板,对内部网络中的其他设备发起攻击。
    • 持久化后门: 攻击者可写入固件或启动脚本,实现长期驻留。
  • 总体评分 9.6 的合理性: 极低的利用门槛(网络可达、无需权限)、极低触发成本(管理员正常操作)、极高的影响(设备完全控制),三者结合使得此漏洞达到了“严重”级别。

修复建议

紧急措施(立刻执行)

  1. 更新 OpenWrt 版本: 立即将 OpenWrt 系统升级至 25.12.5 或更高版本。这是官方提供的修复版本。
    opkg update
    opkg upgrade odhcpd luci-mod-rpc
    

临时缓解措施(若无法立即升级)

  1. 限制 DHCPv6 客户范围: 在网络的接入层(如交换机、AP)启用 802.1X 或 MAC 地址过滤,仅允许受信任的设备发送 DHCP 请求。
  2. 禁用 DHCPv6 服务(不推荐): 如果业务不必要,可考虑停用 DHCPv6 服务,但这可能会严重影响网络功能。
  3. 避免访问易受攻击的管理页面: 在修复前,尽量避免访问 状态 -> 概况 -> 活跃 DHCPv6 租约 页面。
  4. 设置 Web 防火墙规则: 配置反向代理或者 WAF 规则,尝试过滤掉包含特定模式(如 onerror=、<script、<img 等)的查询参数,但这种方法风险较高,容易产生误杀或绕过。

官方补丁分析

官方补丁 25.12.5 的核心修复策略是针对 第一阶段:

  • 在 src/statefiles.c 的写入函数中,对 FQDN 等用户可控的字符串进行严格转义,特别是对换行符、回车符以及 HTML 特殊字符(如 <、>、&、"、')进行编码或过滤,从源头杜绝恶意数据的注入。
  • 同时,在前端 JavaScript 代码中很可能也增加了对租约数据的 HTML 编码 或使用安全的 DOM 操作方式(如 textContent 替代 innerHTML 或类似逻辑),提供纵深防御。

参考资料