漏洞总结:Cal.com OAuth Account Linking CSRF (Allowlist Bypass) 漏洞概述 标题:Account Takeover via OAuth Account Linking CSRF (Allowlist Bypass) 描述:Cal.com 的 OAuth 回调处理程序存在严重的跨站请求伪造 (CSRF) 漏洞。攻击者可以利用此漏洞将受控的第三方应用(如 Basecamp3)强制绑定到受害者的账户中。 核心原因: 1. 状态豁免模式 (State Exemption Pattern):代码中存在一个硬编码的 列表。如果应用标识符匹配该列表,系统会跳过 HMAC 签名验证,直接返回成功,导致 CSRF 防护失效。 2. 执行顺序失败 (Order of Execution Failure):在处理回调时,系统先处理外部应用代码并立即发起外部 API 调用,随后才进行数据库持久化。由于数据库提交发生在验证逻辑之前,攻击者可以绕过验证并永久绑定恶意集成。 影响范围 受影响产品:Cal.com 生态系统:Node.js 受影响版本:<= v4.9.4 (未更新至当前部署的 main 分支) 严重程度:High (高) CVSS 向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N 潜在危害: 1. 监控与数据窃取:攻击者可通过集成的日历矩阵直接查看受害者所有日程安排。 2. 身份冒充勒索:利用恶意 Webhook 钩子生成虚假会议事件,利用受害者的凭证进行勒索。 修复方案 CWE 分类:CWE-352: Cross-Site Request Forgery (CSRF) 修复建议: 1. 移除或严格限制 的硬编码豁免列表,确保所有 OAuth 回调均强制进行 HMAC 签名验证。 2. 调整代码执行顺序,确保在数据库持久化(Commit)之前完成所有 CSRF 和状态验证逻辑。 POC 代码 (利用代码)