首页
/ ONNX框架中download_model函数的路径遍历漏洞分析

ONNX框架中download_model函数的路径遍历漏洞分析

2025-05-12 08:34:34作者:江焘钦

问题概述

在ONNX框架1.16.1版本中,研究人员发现了一个存在于download_model函数中的安全问题。该问题可能允许攻击者通过精心构造的特定tar文件实现文件覆盖,属于典型的路径安全问题类型。这个问题与之前已报告的CVE-2024-5187问题具有相似的性质和影响。

技术背景

ONNX(Open Neural Network Exchange)是一个用于表示机器学习模型的开放格式。在模型测试过程中,框架提供了download_model函数用于从远程服务器下载测试模型。该函数位于onnx/backend/test/Runner/__init__.py文件中,主要功能是下载模型文件并解压到指定目录。

问题细节

问题的核心在于解压过程中缺乏对文件路径的安全检查。具体来看:

  1. 函数首先创建一个临时文件用于存储下载的模型
  2. 使用urlretrieve方法从指定URL下载模型文件
  3. 直接使用tarfile.open打开下载的文件并调用extractall方法解压

关键的安全缺陷在于解压时没有对压缩包中的文件路径进行验证,攻击者可以构造包含特殊路径(如../../specific_file)的tar文件,当解压时就会覆盖系统上的其他文件。

影响分析

该问题的影响程度取决于具体使用场景:

  1. 权限提升:如果ONNX工具以高权限运行,攻击者可能覆盖关键系统文件
  2. 数据破坏:可能导致重要数据被覆盖或删除
  3. 代码执行风险:通过覆盖特定文件可能实现代码执行

虽然实际利用需要用户主动下载特定模型,但在自动化测试或CI/CD环境中风险会显著增加。

修复建议

参考ONNX团队对类似问题的修复方案,建议采取以下措施:

  1. 在解压前验证压缩包中的文件路径
  2. 使用安全解压方法,限制文件只能解压到目标目录内
  3. 添加文件白名单机制,只允许特定扩展名的文件被解压
  4. 实现解压后的文件完整性检查

总结

这个问题再次提醒我们,在处理来自不受信任来源的压缩文件时必须格外小心。对于ONNX框架用户,建议及时关注官方更新,在修复版本发布后尽快升级。对于开发者而言,在文件操作相关功能实现中应当始终考虑路径安全等风险,采取适当的防护措施。

登录后查看全文
热门项目推荐