IPBUF安全漏洞报告
English
CVE-2025-69286 CVSS 9.8 严重

RAGFlow 0.22.0之前版本API密钥与Token可相互推导漏洞

披露日期: 2025-12-31

漏洞信息

漏洞编号
CVE-2025-69286
漏洞类型
加密算法缺陷
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
RAGFlow

相关标签

加密算法缺陷密钥推导认证绕过RAGFlow开源RAG引擎URLSafeTimedSerializer

漏洞概述

RAGFlow是一款开源的RAG(检索增强生成)引擎。在0.22.0之前的版本中,存在一个严重的安全漏洞,源于API密钥和beta token(助手/代理共享认证令牌)生成过程中使用了不安全的密钥生成算法。该漏洞允许攻击者通过获取到的共享助手/代理URL,推导出令牌所有者的个人API密钥,从而获得受害者账户的完全控制权。由于RAGFlow常被用于企业级知识管理和AI应用开发,此漏洞可能影响大量使用该系统的组织和个人用户。攻击者利用此漏洞可以访问受害者账户中的所有资源、执行任意操作,严重威胁数据安全和系统完整性。

技术细节

漏洞根源在于RAGFlow的令牌生成机制存在设计缺陷。在系统应用的密钥生成代码中,API密钥和beta token都使用相同的`URLSafeTimedSerializer`类进行生成,且使用了可预测的输入参数。具体来说,这两个令牌共享相同的加密算法和盐值(salt),使得它们之间存在数学关联性。攻击者只需要获取到beta token(即共享助手/代理的URL中的token部分),通过分析其生成算法和参数,结合`URLSafeTimedSerializer`的反向操作,即可推导出对应的API密钥。由于生成过程中未引入足够的随机性和复杂性,导致整个认证体系的安全性被完全破坏。攻击者获取API密钥后,可以绕过正常的认证流程,以受害者身份执行任何API操作。

攻击链分析

STEP 1
步骤1
攻击者获取目标用户的共享助手/代理URL,该URL中包含beta token
STEP 2
步骤2
攻击者分析RAGFlow的令牌生成代码,发现API密钥和beta token使用相同的URLSafeTimedSerializer
STEP 3
步骤3
攻击者利用URLSafeTimedSerializer的反向操作,从beta token推导出用户对应的API密钥
STEP 4
步骤4
攻击者使用推导出的API密钥调用RAGFlow API,以受害者身份进行认证
STEP 5
步骤5
攻击者完全控制受害者账户,访问、修改或删除所有数据,执行任意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import hashlib import base64 from itsdangerous import URLSafeTimedSerializer def derive_api_key(beta_token, secret_key, salt='api-key-salt'): """ Derive API key from beta token This PoC demonstrates the vulnerability in CVE-2025-69286 """ # Beta token and API key use the same serializer with predictable inputs beta_serializer = URLSafeTimedSerializer(secret_key) api_serializer = URLSafeTimedSerializer(secret_key) # The vulnerable code uses similar generation logic # Both tokens can be derived from each other try: # Extract data from beta token beta_data = beta_serializer.loads(beta_token) # Generate API key using the same mechanism api_key = api_serializer.dumps(beta_data) return api_key except Exception as e: return f"Derivation failed: {str(e)}" # Example usage # beta_token = 'obtained_from_shared_assistant_url' # secret_key = 'application_secret_key' # api_key = derive_api_key(beta_token, secret_key)

影响范围

RAGFlow < 0.22.0

防御指南

临时缓解措施
立即升级RAGFlow至0.22.0版本,该版本修复了不安全的密钥生成算法问题。在无法立即升级的情况下,应限制共享助手/代理URL的传播范围,避免将包含token的URL发布到公共渠道,并定期更换用户密码和API密钥以降低被利用的风险。

参考链接

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