当前位置: 首页 > ai >正文

机器学习漏洞大汇总——利用机器学习服务

在本节中,我们将展示机器学习框架中存在的漏洞,这些漏洞会直接处理模型工件,或者通过工件存储或模型注册表的凭证来处理。利用此类漏洞,攻击者可以在企业系统内部进行非常强大的横向移动,从而劫持被利用的模型注册表中的机器学习模型。

WANDB Weave 目录遍历 - CVE-2024-7340

[Weave]是一个用于评估和跟踪大型语言模型 (LLM) 应用程序的工具包,由 Weights & Biases (WANDB) 构建。

Weave 允许从特定目录获取文件,但由于缺乏输入验证,因此也可能通过目录遍历读取整个文件系统的文件。此漏洞已在 Weave 0.50.8 版本中修复。

当 Weave 作为 WANDB 服务器的一部分运行时,通过读取特定文件,该漏洞允许低权限的经过身份验证的用户将其权限升级到管理员角色。

技术细节

Weave Server API 路径 __weave/file/path:path 允许低权限的认证用户从文件系统的特定目录中获取文件。服务器代码旨在检查用户提供的路径是否位于特定目录中,但其逻辑很容易被绕过,从而访问文件系统中的任何文件:

@blueprint.route("/__weave/file/<path:path>")
def send_local_file(path):# path is given relative to the FS root. check to see that path is a subdirectory of the# local artifacts path. if not, return 403. then if there is a cache scope function defined# call it to make sure we have access to the pathabspath = "/" / pathlib.Path(path)  # add preceding slash as werkzeug strips this by default and it is reappended below in send_from_directorytry:local_artifacts_path = pathlib.Path(filesystem.get_filesystem_dir()).absolute()except errors.WeaveAccessDeniedError:abort(403)if local_artifacts_path not in list(abspath.parents):abort(403)return send_from_directory("/", path)

用户提供的路径参数附加到 / 后,并存储在名为 abspath 的变量中。然后,代码检查 abspath 是否以 local_artifacts_path 开头(通过将其与 abspath 的任意父目录进行比较)。

由于代码从未规范化 abspath 变量,因此 abspath 可以包含 …/ 序列以进行目录遍历。

因此,如果 local_artifacts_path 目录是 /some/authorized/path,攻击者可以提供以下路径:some/authorized/path/…/…/…/…/evil/path 以绕过检查,其路径指向 /evil/path 文件。

函数的最后一行将路径传递给 send_from_directory 函数,该函数是一个安全的函数,用于避免目录遍历,详见此处。它不允许在第一个参数指定的目录之外提供文件。但是,当指定的目录是文件系统的根文件夹 (/) 时,它将允许从整个文件系统获取文件,这违背了防止目录遍历的初衷。简而言之,这允许攻击者从文件系统下载&#

http://www.xdnf.cn/news/1492.html

相关文章:

  • Scrapy框架爬虫官网的学习
  • 放爱心烟花
  • # 构建和训练一个简单的CBOW词嵌入模型
  • GCoNet+:更强大的团队协作 Co-Salient 目标检测器 2023 GCoNet+(总结)
  • 【Deepseek学习大模型推理】MOONCAKE: A KVCache-centric Architecture调度(中)调度
  • win10 快速搭建 lnmp+swoole 环境 ,部署laravel6 与 swoole框架laravel-s项目3
  • 代码随想录算法训练营第二十五天
  • 卡方检验(Chi-square test)
  • 奇安信春招面试题
  • 在线测试来料公差
  • Java工厂模式解析:三种实现与最佳实践
  • 03-Java入门-JDK的安装和下载
  • 【KWDB 创作者计划】_上位机知识篇---PlatformIO
  • 用 Firebase 和 WebRTC 快速搭建一款浏览器视频聊天应用
  • 布布のC语言课堂——第一讲:揭开C语言的神秘面纱
  • 【KWDB 创作者计划】_深度学习篇---归一化反归一化
  • QtDesigner入门
  • bert4keras
  • mybatis框架补充
  • Spring JDBC 的开发步骤(非注解方式)
  • HashedWheelTimer源码分析
  • 网络安全中Base64编码到后端是何解了
  • 图解Mysql原理:深入理解事务的特性以及它的实现机制
  • IDEA设置手动代理,用户名密码被加密无法通过代码修改的解决方案
  • 4082P 信号/频谱分析仪
  • Javase 基础入门 —— 03 面向对象编程
  • (三)垂直分库架构、分布式数据库
  • MySQL 锁机制
  • 【EasyPan】MySQL FIELD() 函数实现自定义排序
  • [KVM] KVM挂起状态恢复失败与KVM存储池迁移