IPBUF安全漏洞报告
English
CVE-2026-35044 CVSS 8.8 高危

CVE-2026-35044 BentoML模板注入致RCE

披露日期: 2026-04-06

漏洞信息

漏洞编号
CVE-2026-35044
漏洞类型
远程代码执行 (RCE) / 服务端模板注入 (SSTI)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
BentoML

相关标签

RCESSTIBentoMLJinja2容器安全Python

漏洞概述

BentoML 在 1.4.38 之前的版本中,其 Dockerfile 生成函数使用了未沙箱化的 Jinja2 环境来渲染用户提供的模板文件。当受害者导入包含恶意模板的 bento 归档并运行容器化命令时,攻击者可利用此漏洞在宿主机上执行任意 Python 代码,从而完全绕过容器的隔离机制。

技术细节

漏洞核心位于 `src/bentoml/_internal/container/generate.py` 文件的 `generate_containerfile()` 函数。该函数错误地使用了未设置沙箱的 `jinja2.Environment`,并加载了 `jinja2.ext.do` 扩展,直接对用户提供的 `dockerfile_template` 进行渲染。攻击者可以精心构造一个 Bento 归档包,其中包含恶意的 Jinja2 模板代码。当受害者执行 `bentoml containerize` 命令处理该归档时,恶意模板在宿主机上下文中被解析。由于 Jinja2 支持执行 Python 表达式,攻击者可以利用 `do` 扩展或标准表达式执行任意系统命令。此攻击发生在容器构建之前的宿主机环境中,因此容器隔离机制无法防御此攻击。

攻击链分析

STEP 1
制作恶意归档
攻击者创建一个包含恶意 Jinja2 模板代码的 Bento 归档文件,代码旨在在渲染时执行系统命令。
STEP 2
分发诱导
攻击者通过网络钓鱼或供应链攻击手段,诱导受害者下载并导入该恶意的 Bento 归档文件。
STEP 3
触发渲染
受害者对导入的归档文件执行 `bentoml containerize` 命令,试图生成 Docker 容器镜像。
STEP 4
代码执行
BentoML 调用存在漏洞的 `generate_containerfile()` 函数,使用未沙箱化的 Jinja2 环境渲染模板,导致恶意 Python 代码在宿主机上直接执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Malicious Dockerfile Template Example # This payload intends to execute a command on the host machine # using Jinja2 template injection. # In the malicious bento archive's dockerfile_template: FROM python:3.9-slim # Exploit using Jinja2 syntax to execute python code {% set cmd = ''.__class__.__mro__[1].__subclasses__()[104].__init__.__globals__['sys'].modules['os'].popen('cat /etc/passwd').read() %} RUN echo "{{ cmd }}" # Note: Actual payload depends on the python environment available to Jinja2, # typically leveraging subprocess or os module access via object references.

影响范围

BentoML < 1.4.38

防御指南

临时缓解措施
在未升级补丁前,严格禁止对来源不明的 Bento 归档文件执行 `bentoml containerize` 操作。建议在隔离的虚拟环境中运行 BentoML,并检查归档文件中的模板内容。

参考链接

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