漏洞概述 标题: Calendar Availability API 中的跨站请求伪造(CSRF)漏洞 描述: 在 Calendar Availability API 的 端点中存在一个关键的跨站请求伪造(CSRF)漏洞。该漏洞是由于对 类型的传入请求处理不当,以及在生产部署中 cookie 设置的问题导致的。攻击者可以通过提交跨域请求,对用户的日历数据进行未经授权的修改。 总结: 未认证的远程攻击者可以利用此漏洞,强制拥有活跃 Cal.com 会话的用户静默修改其日历可用性配置。在正常的 HTTPS 生产操作中,Cal.com 会附加 的 cookie 策略以支持 widget 嵌入。然而,目标 API 路由缺乏明确的 CSRF 措施,并且盲目接受松散格式化的 JSON 负载,通过 绕过 CORS 预检。攻击者可以利用标准的 JavaScript 执行 来封装纯 负载,携带明确的 CSRF 语义。Next.js 模块 会原样吸收并解析此文本,随后执行 方法,成功修改用户的日历状态。 影响范围 生态系统: Node.js 包名称: cal.com 受影响版本: <= v4.9.4(未修补至当前提交 ) 已修补版本: 无 严重性: 严重性: 高 向量字符串: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:H 弱点: CWE: CWE-352: 跨站请求伪造 (CSRF) 修复方案 1. NextAuth 生产配置: 在 中,Cal.com 默认 无条件地检测 iframe 小部件。 2. 缺失输入验证: Next.js App Router API 缺乏明确的反 CSRF 措施,如校验和验证头或令牌(TRPC 端点严重依赖于此来阻止任意执行)。 3. CORS 预检绕过通过负载欺骗: 传统的 CSRF 防御是期望浏览器阻止 API 执行,当传输非标准头(如 )时。然而,攻击者可以利用标准 JavaScript 执行 来封装纯 负载,携带明确的 CSRF 语义。Next.js 模块 会原样吸收并解析此文本,随后执行 方法,成功修改用户的日历状态。 POC 代码 证据日志 影响 此漏洞代表了一个未授权的远程操纵缺陷,导致基于逻辑的拒绝服务和数据污染。由于 API 控制用户的可用性计算,恶意攻击者可以静默注入自己的 ,在多个连接的外部日历架构中生成大量永久阻塞事件。这隐式地为业务目标(如阻止医生、顾问或业务领导者)生成“无可用性”配置文件,从而执行完全不对称的服务中断。 发生情况