DOM XSS via Unsanitized Display Name in WebSocket Call Notification 漏洞概述 AVideo 平台的 YPTSocket 插件在处理 WebSocket 来电通知时存在 DOM 型 XSS 漏洞。该插件使用 jQuery Toast Plugin 渲染来电通知,直接将呼叫者的显示名称作为 参数传入,而 Toast 插件使用 jQuery 的 方法将内容作为原始 HTML 插入 DOM,导致攻击者可通过构造恶意显示名称执行任意 JavaScript 代码。 存在两个注入点: 1. 主注入点: 参数通过 渲染 2. 次要注入点: 属性中直接拼接 JSON 字符串,单引号可突破属性边界 影响范围 软件: WWBN/AVideo ≤ 26.0 CVE: CVE-2024-34716 CVSS 3.1: 6.4 (Medium) CWE: CWE-79 (Cross-Site Scripting - DOM-based) 攻击后果 会话劫持(窃取 cookie 冒充用户) 账户接管(若受害者为管理员可获得完全控制权限) 蠕虫传播(自动修改受害者显示名称并呼叫其他在线用户) 键盘记录和凭证窃取 关键特性:零点击攻击,受害者无需交互,仅需在线并连接 WebSocket 即可触发。 POC 代码 攻击向量说明 在 使用 进行服务端过滤,但 WebSocket 服务器直接中继消息,不验证 字段,允许恶意 WebSocket 客户端绕过服务端过滤。 Step 1: 恶意 WebSocket 客户端发送伪造呼叫消息 Step 2: 高级凭证窃取载荷 修复方案 在 中对 值进行 HTML 转义后再传入 : 使用 jQuery 的 方法安全编码用户可控字符串,然后通过 获取转义后的 HTML。