漏洞总结:CORS 源反射绕过导致认证 API 响应泄露 漏洞概述 在 项目中,2024年4月发布的 提交试图修复 CORS 源验证问题,但修复不完整。存在两个独立的代码路径仍可反射任意 头,导致攻击者可以发起跨域凭证请求并读取包含用户 PII(个人身份信息)、邮箱、管理员状态和会话敏感数据的认证 API 响应。 漏洞核心: 1. 中的独立 CORS 处理逻辑(第4-8行)无条件反射任意 头。 2. 和 调用的 函数(在 中)也反射任意带凭证的 头。 额外问题: 第4行在 缺失时会回退到 ,注入攻击者控制的完整 URL 到 头,这是非标准行为。 影响范围 受影响版本: Composer 包 严重程度: 高 (7.1 / 10) CVSS v3 基础指标: 攻击向量:网络 攻击复杂度:低 所需特权:无 用户交互:必需 范围:未改变 机密性:高 完整性:低 可用性:无 数据暴露影响: 视频列表端点 ( ): 敏感用户字段(邮箱、isAdmin 等)仅对未认证请求剥离,因此认证的 CORS 请求会返回完整数据。 用户资料端点 ( ): 当 为真时,所有敏感字段(包括邮箱、管理员状态、恢复令牌、PII)均未被剥离。 数据窃取: 任何第三方网站均可读取已登录 Avideo 用户的认证 API 响应,包括用户资料数据(真实姓名、地址、电话、管理员状态、PII)、视频列表(含创作者 PII)及其他会话特定数据。 账户信息泄露: 用户资料端点返回完整用户记录,包括 (密码恢复令牌)、 状态及所有 PII 字段。 以用户身份操作: 等写入端点同样受影响,允许跨域状态更改请求(创建播放列表、修改内容等),从而劫持用户会话。 有意绕过: 此漏洞直接绕过了 提交中的 CORS 强化措施。 修复方案 1. 移除 中的独立 CORS 处理程序: 让 统一处理所有 CORS 逻辑。 2. 修复 以验证来源: 或停止在 API 端点中使用它。 仅对真正公共且不含会话敏感数据的端点(如 VAST/VMAP 广告 XML)保留 。 3. 作为纵深防御: 设置 于会话 cookie,防止浏览器在跨源请求中默认发送它们。 POC 代码 步骤 1: 在攻击者控制的域上托管以下 HTML: 步骤 2: 受害者在登录 Avideo 时访问攻击者页面。 步骤 3: 浏览器使用受害者的会话 cookie 发送请求。 第8行反射攻击者的 origin。 调用 ,将 重置为攻击者的 origin,并设置 。 步骤 4: 浏览器允许跨源读取。攻击者接收受害者的完整用户资料,包括邮箱、姓名、地址、管理员状态和其他 PII。 对于需要预检的 POST 端点:** 预检 OPTIONS 由 第14-18行处理,它们反射 origin 并退出—— 中的 CORS 修复不会执行。