IPBUF安全漏洞报告
English
CVE-2025-68437 CVSS 6.8 中危

CVE-2025-68437 Craft CMS GraphQL API服务器端请求伪造漏洞

披露日期: 2026-01-05

漏洞信息

漏洞编号
CVE-2025-68437
漏洞类型
SSRF
CVSS评分
6.8 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Craft CMS

相关标签

SSRFCraft CMSGraphQL服务器端请求伪造CVE-2025-68437内容管理系统API安全云安全元数据泄露

漏洞概述

CVE-2025-68437是Craft CMS中一个严重的服务器端请求伪造(SSRF)漏洞。该漏洞存在于Craft CMS的GraphQL API中,具体位于save_<VolumeName>_Asset mutations(资产保存操作)功能模块。Craft CMS是一款广泛使用的PHP内容管理系统,为用户提供创建数字体验的平台。该漏洞影响范围覆盖Craft CMS 5.0.0-RC1至5.8.20版本以及4.0.0-RC1至4.16.16版本。攻击者可以通过构造恶意的GraphQL请求,利用_file输入参数中的url字段,迫使服务器向任意指定的目标地址发起HTTP请求。由于GraphQL API通常部署在企业内部网络或云环境中,攻击者可以利用此漏洞访问内部服务、云元数据端点(如AWS 169.254.169.254)、内网API等敏感资源。获取的内容会被保存为系统资产文件,攻击者随后可以访问这些文件并窃取敏感数据。该漏洞的利用需要攻击者具备特定GraphQL权限,能够对目标Volume进行资产管理操作。建议受影响的用户立即升级到5.8.21或4.16.17版本以修复此安全问题。

技术细节

Craft CMS的GraphQL API在处理save_<VolumeName>_Asset mutation时存在输入验证不足的问题。当用户提交_asset请求时,系统会处理_file输入对象中的url参数。问题在于该url参数缺乏充分的URL验证机制,允许攻击者指定任意URL地址(包括内部IP地址、localhost、云服务元数据端点等)。服务器端代码在接收到包含url参数的请求后,会直接使用PHP的file_get_contents、curl或其他HTTP客户端函数发起网络请求,获取远程资源内容。随后,系统将获取到的内容作为文件资产保存到指定Volume中。攻击者可以通过构造如下类型的请求来利用此漏洞:指定url为http://169.254.169.254/latest/meta-data/来获取AWS EC2实例元数据,或指定为http://127.0.0.1:port/internal-api来访问本地内部服务。由于服务器通常具有访问内部网络的权限,攻击者可以绕过网络边界防护直接访问受限资源。修复后的版本(5.8.21和4.16.17)在url参数处理逻辑中添加了URL白名单验证和域名/协议限制,防止服务器向不可信的地址发起请求。

攻击链分析

STEP 1
步骤1
攻击者获取目标Craft CMS站点的GraphQL API访问权限,并确认拥有目标Volume的资产管理权限
STEP 2
步骤2
攻击者构造恶意的GraphQL save_<VolumeName>_Asset mutation请求,将url参数设置为内部服务地址(如云元数据端点169.254.169.254)
STEP 3
步骤3
Craft CMS服务器接收请求后,使用内部网络连接向指定的内部地址发起HTTP请求,获取敏感数据
STEP 4
步骤4
服务器将获取到的响应内容(包含敏感信息)作为资产文件保存到指定Volume中
STEP 5
步骤5
攻击者通过GraphQL查询或直接访问资产URL获取保存的敏感数据,完成数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
mutation { save_myVolume_Asset( file: { url: "http://169.254.169.254/latest/meta-data/iam/security-credentials/" } ) { id title url ... on Asset { filename width height } } } # Alternative PoC for internal service access: mutation { save_assets_VolumeAsset( file: { url: "http://192.168.1.1/admin/api/status" } ) { id url } } # Cloud metadata exfiltration example: mutation { save_public_Asset( file: { url: "http://169.254.169.254/latest/user-data" } ) { id filename url } }

影响范围

Craft CMS 5.0.0-RC1 至 5.8.20
Craft CMS 4.0.0-RC1 至 4.16.16

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)限制GraphQL API的访问来源,仅允许受信任的IP段访问;2)在网络层配置防火墙规则,阻止服务器对内部IP段(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)及云元数据端点(169.254.169.254)的访问;3)审查并限制具有资产管理权限的用户账户;4)启用详细的GraphQL查询日志记录以便及时发现异常攻击行为;5)考虑暂时禁用save_*_Asset mutations功能,待官方补丁发布后再恢复使用。

参考链接

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