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

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


🔍 技术细节速览

字段
CVE ID CVE-2024-58353
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

⚠️ 严重危害
CVSS 4.0 评分:9.3(Critical)
攻击向量:网络(AV:N) | 攻击复杂度:低(AC:L) | 所需权限:低(PR:L) | 用户交互:需要(UI:P)

漏洞概述

CVE-2024-58353 是开源日程管理与预约平台 Cal.com(社区版 calcom/cal.diy)中存在的跨站脚本(XSS)漏洞,影响版本 ≤ 4.7.15。攻击者可通过创建包含恶意预订问题(booking question)标签的事件类型,在公开的单次预订视图(如 /booking/<id>)中注入任意 HTML/JavaScript 代码。当受害者访问该预订视图 URL 时,脚本将在其浏览器中执行。该漏洞在自托管实例且开放注册的场景下风险尤为突出。官方已在版本 4.7.16 中修复。

受影响组件与版本

  • 组件:Cal.com(社区版 calcom/cal.diy)
  • 影响版本:≤ 4.7.15
  • 修复版本:4.7.16
  • 配置影响:自托管实例开启开放注册功能时,利用门槛更低(攻击者可直接注册并创建恶意事件类型)

漏洞原理分析

根据 NVD 描述及 CWE-80(跨站脚本 – 不恰当的输入净化)归类,漏洞成因如下:

  1. 输入点:攻击者可以通过创建或编辑事件类型(event type)时,在“预订问题”(booking question)的表单字段标签(label)中插入恶意代码。这些标签本应作为普通文本显示,但 Cal.com 在处理标签渲染时使用了 React 的 dangerouslySetInnerHTML 属性,直接将用户提供的 HTML 标记插入 DOM。

  2. 攻击向量:XSS 发生在公开的 /booking/<id> 路径,该视图通常用于外部用户查看预约详情并提交预约请求。无需任何额外权限即可访问该 URL(前提是攻击者已创建带恶意标签的事件类型)。攻击者需要拥有创建事件类型的权限(PR:L),例如在开放注册的自托管实例中,普通注册用户即可完成;若未开放注册,则攻击者至少需要低权限账户。

  3. 防御缺失:代码未对用户输入的标签进行 HTML 实体编码或过滤,也未实施内容安全策略(CSP)以限制脚本执行。CVSS 向量中 AT:N(攻击者无需绕过触发条件)表明触发攻击的前置条件简单,AC:L 表示攻击复杂度低(仅需构造一段 HTML/JavaScript 即可)。用户交互 UI:P 指受害者必须访问恶意构造的预订视图 URL(例如被诱导点击或通过社交工程传播)。

  4. 利用流程

    • 攻击者在 Cal.com 实例中创建一个事件类型,在“预订问题”字段中填入恶意脚本,例如 <img src=x onerror=alert(document.cookie)>
    • 获取该事件类型的公开预约链接,形如 https://instance/booking/<event-type-id>
    • 将该链接发送给目标用户(或通过其他方式诱导访问)。
    • 受害者浏览器加载该页面时,dangerouslySetInnerHTML 将恶意标签直接渲染为 DOM 节点,触发脚本执行。

影响评估

维度 分析
攻击复杂度 低(AC:L)。攻击者只需构造简单的 XSS payload,无需绕过特殊过滤器。
所需权限 低(PR:L)。攻击者必须具有创建/编辑事件类型的权限。在开放注册的自托管场景中,任何新注册用户均可获得此权限;在限制注册的环境中,攻击者需通过其他方式获取账户。
用户交互 需要(UI:P)。受害者必须访问构造的预定视图 URL。可通过钓鱼邮件、链接分享等方式实现。
潜在后果 机密性(VC:H)、完整性(VI:H)均受严重威胁。攻击者可窃取受害者会话 Cookie(可能导致账户劫持)、篡改页面内容、发起后续攻击(如凭证钓鱼、数据窃取)。可用性影响较低(VA:L)。注意到 CVSS 4.0 中的 SC:HSI:H 表示安全域内(如子域、原站)的机密性和完整性受损,SA:L 表示安全域可用性影响低。
利用条件 攻击者需具备低权限的账户,且 Cal.com 实例必须对外暴露 /booking/<id> 端点(默认开放)。自托管实例若未对用户注册申请进行审核,风险极高。

修复建议

官方补丁

  • 立即升级到 Cal.com 版本 4.7.16 或更高。该版本已禁用 dangerouslySetInnerHTML 或引入严格的输入净化逻辑,并可能补充了 CSP 头。

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

  • 限制用户注册:关闭自托管实例的开放注册功能,仅允许受信任的用户创建事件类型。可通过环境变量或管理面板设置。
  • 输入过滤:在应用层或反向代理层(如 Nginx、Cloudflare)增加对特定字段(如 label)的 HTML 编码或正则过滤规则。但需注意后端仍然可能绕过。
  • 实施内容安全策略(CSP):在 Web 服务器响应头中添加 Content-Security-Policy: default-src 'self'; script-src 'none' 等规则,阻止内联脚本执行。注意需充分测试以避免影响正常功能。
  • 监控与审计:定期检查用户创建的事件类型内容,尤其是预订问题标签,发现异常 HTML 脚本立即删除。

参考资料

  • CVE 详情https://nvd.nist.gov/vuln/detail/CVE-2024-58353
  • CWE 分类:CWE-80(Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS))
  • 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
    攻击者通过网络远程(AV:N)、复杂度低(AC:L)、无需额外触发条件(AT:N)、需要低权限(PR:L)、用户需点击链接(UI:P);影响范围覆盖主安全域及子安全域的高机密性、高完整性,低可用性。
  • 供应商安全公告:Cal.com 官方 GitHub Releases 页面及安全更新日志(例如 v4.7.16 Release Notes
  • 漏洞发现者disclosure@vulncheck.com(VulnCheck 负责任披露)

⚠️ 本文基于 NVD 公开数据及已知技术原理撰写,未编造未经验证的细节。关于漏洞根因的具体代码分析,建议参考官方修复提交或安全研究员的逆向分析报告。