漏洞概述 项目名称: Teable 文件路径: 漏洞类型: DOM跨站脚本(XSS) 严重程度: 高(CVSS 3.1 基础评分: 8.2) 报告日期: 2026年3月7日 影响范围 受影响组件和代码: - 文件: - 具体行: - 说明: 的值直接从浏览器URL中获取。随后的 赋值不会阻止 协议,导致XSS。这是因为 将URI参数传递给 。(注意:NextJS维护者决定这是一个不会修复的问题,因此责任落在库用户身上。参见此NextJS GitHub Issue。) 攻击向量与概念验证(PoC): - 攻击者通过构造一个恶意链接来利用此漏洞,诱使用户点击并登录或注册。 - 示例恶意URL: - 更复杂的载荷可以通过插入额外的查询参数或使用URL编码来隐藏JavaScript,使链接看起来不那么可疑。 - 受害者操作: 受害者点击链接,输入凭据并成功登录或注册后, 调用被触发,XSS载荷执行。 屏幕截图: - XSS在登录时执行。 - 示例影响 - 调用认证API(payload: )。 - 注意:当链接由已认证用户打开时,会出现“网络错误”。 修复方案 修复建议: - 应用程序必须在重定向之前验证和清理 参数。 - 验证重定向路径是否在同一源内并使用安全方案。使用 构造函数解析路径相对于当前源,并检查源和协议。 - 示例验证函数: - 此验证正确处理: - 相对路径(解析为 ) - 同一源内的绝对路径,如 - 阻止危险方案,如 、 、 等 - 阻止跨源重定向 - 在任何导航之前应用验证。如果 通过验证,则可以安全使用;否则,回退到默认安全路径,如 。 - 示例代码: - 注意: 还建议审查和修补其他使用未清理用户输入的 的地方。 时间线和披露过程 2026-03-07: 发现漏洞并准备报告。 2026-03-07: 报告发送给Teable安全联系人/维护者。 [待定]: 维护者确认收到报告。 [待定]: 维护者通过GitHub安全公告程序发布安全公告。 披露政策 45天的披露截止日期为2026年4月21日,符合标准协调披露实践。除非发布修复或维护者拒绝解决该问题,否则将在该日期发布详细信息。