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

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


🔍 技术细节速览

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

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


【严重漏洞预警】CVE-2026-54458:WWBN AVideo YPTSocket 插件未授权存储型 DOM XSS 致管理员账户接管

CVSS 评分:9.6(严重)
CVSS 向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:L


漏洞概述

CVE-2026-54458 是存在于 WWBN AVideo(开源视频平台)YPTSocket 插件中的一个严重级存储型 DOM 跨站脚本(Stored DOM XSS)漏洞。该漏洞允许任何未认证的远程攻击者,通过构造恶意的 WebSocket 连接,向所有在线管理员广播恶意负载。当管理员查看 YPTSocket 的在线用户调试面板时,恶意代码将在其浏览器中执行,导致 Cookie 窃取、CSRF 令牌泄露、管理员凭证劫持,乃至完全接管整个管理后台。

影响范围:WWBN AVideo 版本 < 29.0
危害等级:严重(Critical)

受影响组件与版本

  • 受影响组件:WWBN AVideo 中的 YPTSocket 插件
  • 受影响版本:AVideo 所有 29.0 之前的版本
  • 已修复版本:AVideo 29.0 及后续版本(补丁提交 8be71e53ccbe9b84b30870db386fb4d2b11e1c16)

漏洞原理分析

该漏洞是一个典型的数据验证缺失导致的 DOM XSS 攻击链。攻击者无需任何身份验证即可触发,整体流程如下:

  1. 获取 WebSocket Token:

    • 任意未认证用户都可以访问 plugin/YPTSocket/getWebSocket.json.php 端点,该端点会签发一个有效的 WebSocket 令牌(Signed WebSocket token)。这意味着攻击者可以合法地建立 WebSocket 连接到服务器。
  2. 注入恶意负载:

    • 当攻击者通过 WebSocket 建立连接时,AVideo 后端 MessageSQLiteV2.php 中的 onOpen 方法(第 91 行和第 110 行)会读取 WebSocket 连接 URL 中的 webSocketSelfURI 和 page_title 两个查询参数。
    • 问题核心:这些参数的值 没有经过任何验证或消毒(sanitization),直接被保存到内存中的 SQLite 连接表(users_id_online)中。攻击者可以在此处嵌入恶意的 JavaScript payload(例如 <img src=x onerror=alert(document.domain)>)。
  3. 数据广播(存储型 XSS):

    • 服务器会定期将 users_id_online 数组广播(Broadcast)给所有已连接的客户端,包括在后台仪表板页面的管理员。由于数据存储在服务端内存中并持续广播,这构成了存储型 XSS。
  4. 客户端触发与执行(DOM XSS):

    • 管理员的浏览器接收到广播数据后,前端脚本 plugin/YPTSocket/script.js 中的 updateSocketUserCard 函数会处理该数据。
    • 该函数直接使用 HTML 模板字面量(template literal) 将来自服务器的 page_title 字段插入到 HTML 字符串中,然后通过 jQuery $.append(html) 方法将这段字符串解析并注入到 DOM 树中。
    • 关键弱点:$.append(html) 会将字符串解析为活生生的 DOM 节点。恶意 payload(如 <img> 标签)中的内联事件处理器(Inline event handlers)会在 DOM 解析后立即执行。

攻击向量总结

[未认证攻击者] 
    -> 获取 Signed WebSocket Token 
    -> 建立 WebSocket 连接,URL中携带恶意 page_title (如 <img src=x onerror=alert(1)>) 
    -> 服务器将恶意数据存入SQLite并广播给所有在线管理员 
    -> [在线管理员] 浏览器收到广播,script.js 将其渲染到DOM中 
    -> 恶意 JS 代码在管理员上下文中执行

影响评估

评估维度 分析
攻击复杂度 (AC) 低 (L)。攻击者仅需发送一个构造好的 WebSocket 连接请求,无需绕过复杂的安全机制。
攻击向量 (AV) 网络 (N)。攻击完全通过远程网络进行,无需物理或局域网访问。
所需权限 (PR) 无 (N)。攻击在未认证状态下即可发起,大大降低了攻击门槛。
用户交互 (UI) 必需 (R)。需要管理员用户正在浏览 AVideo 后台并打开了 YPTSocket 的在线用户面板。
作用域 (S) 已变更 (C)。XSS 代码在受害者的浏览器上下文中执行(属于变更的作用域),可以访问受害者页面内的数据和 Cookie。
机密性影响 (C) 高 (H)。攻击者可以窃取会话 Cookie(非 HttpOnly)、CSRF Token 以及管理后台页面中的所有 DOM 内容。
完整性影响 (I) 高 (H)。攻击者可以以受害管理员的身份向任意后台接口发送认证请求,修改网站配置、创建恶意用户、上传恶意文件等。
可用性影响 (A) 低 (L)。虽然通常用于窃取和篡改,但理论上也可以通过恶意操作破坏网站功能。

核心威胁:从“0”权到“超级管理员”。攻击者利用一个无需认证的 WebSocket 请求,通过等待管理员查看一个面板,即可实现管理员账户的完全接管。这是非常危险的一键式、闭环攻击链路。

修复建议

1. 紧急升级补丁(推荐)

  • 立即将 AVideo 升级到 29.0 或更高版本。
  • 官方已在 8be71e53ccbe9b84b30870db386fb4d2b11e1c16 提交中修复了此问题。请确保您的代码包含此补丁。

2. 临时缓解措施(如无法立即升级)

  • 禁用 YPTSocket 插件:
    • 如果业务上不依赖 YPTSocket 的实时在线用户功能(如聊天、在线显示等),可以考虑暂时禁用该插件。
    • 这是最直接有效的临时方案。
  • 限制 WebSocket Token 发放:
    • 修改 plugin/YPTSocket/getWebSocket.json.php 的逻辑,要求只有登录用户才能获取 WebSocket Token。但这可能需要较大的代码改动,且可能影响平台上的匿名用户功能。
  • 加强输入验证:
    • 在 MessageSQLiteV2.php 的 onOpen() 方法中,对 webSocketSelfURI 和 page_title 参数进行严格的输入消毒,例如移除所有 HTML 标签或进行编码转义。
  • 前端输出编码:
    • 在 plugin/YPTSocket/script.js 的 updateSocketUserCard 函数中,不要使用 $.append(html) 或模板字面量直接插入用户控制数据。应使用 document.createTextNode() 或 $.text() 来设置文本内容,或者至少使用 innerText 代替 innerHTML。

参考资料

  • CVE 官方页面:https://nvd.nist.gov/vuln/detail/CVE-2026-54458
  • CWE 分类:CWE-79(跨站脚本 XSS)
  • GitHub 安全公告(源):该漏洞由 security-advisories@github.com 提供。
  • 官方修复 Commit:https://github.com/WWBN/AVideo/commit/8be71e53ccbe9b84b30870db386fb4d2b11e1c16

总结:CVE-2026-54458 是一个典型的因输入验证缺失与输出编码不当组合而成的严重漏洞。攻击者利用未授权访问、服务端数据存储和前端 DOM 渲染的薄弱环节,以极低的攻击成本实现了对管理员的高危控制。所有 AVideo 用户应将其视为最高优先级的安全隐患,立即进行修复。