CVE-2025-23211:Tandoor Recipes Jinja2 SSTI漏洞导致远程代码执行

本文详细分析了Tandoor Recipes开源食谱管理应用中的严重Jinja2服务器端模板注入漏洞,该漏洞允许认证用户执行任意系统命令,在Docker部署环境下可获得root权限,导致系统完全被控制。

CVE-2025-23211:Tandoor Recipes Jinja2 SSTI到远程代码执行

CVE概述

2025年1月,开源食谱规划和管理应用Tandoor Recipes披露了一个严重的服务器端模板注入(SSTI)漏洞。该漏洞存在于1.5.24之前的版本,源于Jinja2模板中用户输入处理不当。此漏洞允许认证用户在服务器上执行任意系统命令。当使用提供的Docker Compose设置部署时,这些命令可以以root权限运行,导致系统完全被控制。

  • CVE ID: CVE-2025-23211
  • 严重性: 严重
  • CVSS评分: 9.9 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H)
  • EPSS评分: 0.05%
  • 发布日期: 2025年1月28日
  • 受影响版本: <= 1.5.23
  • 修复版本: 1.5.24

漏洞分析

漏洞源于未经过滤的用户输入直接嵌入到Jinja2模板中。具体来说,食谱说明中的用户提供内容在没有适当验证的情况下被渲染,允许攻击者注入恶意的Jinja2表达式。这可能导致在服务器上执行任意代码。

在默认的Docker Compose部署中,应用程序以root权限运行。在此类环境中利用此漏洞,攻击者可以获得对主机系统的root级别访问权限。

利用方式

攻击者可以使用Jinja2语法制作恶意负载,并将其插入到食谱说明中。例如:

1
{{ ()|attr(‘__class__’)|attr(‘__base__’)|attr(‘__subclasses__’)()|attr(‘__getitem__’)(418)(‘whoami’, shell=True, stdout=-1)|attr(‘communicate’)()|attr(‘__getitem__’)(0)|attr(‘decode’)(‘utf-8’) }}

当查看此食谱时,服务器执行whoami命令,显示结果。在Docker Compose设置中,这将返回root,确认命令以提升的权限执行。

影响

成功利用允许攻击者:

  • 在服务器上执行任意系统命令
  • 在Docker Compose部署中获得root访问权限
  • 破坏敏感数据和系统完整性
  • 可能转向网络内的其他系统

检测

  • 版本检查:验证安装的Tandoor Recipes版本。版本<=1.5.23易受攻击。
  • 日志分析:检查应用程序日志中的异常模板渲染错误或意外命令输出。
  • 文件监控:监控系统文件的未经授权更改或意外进程的存在。
  • 用户活动:审查用户行为中的可疑活动,特别是创建或修改包含异常内容的食谱的用户。

缓解措施

  • 立即行动:升级到Tandoor Recipes版本1.5.24或更高版本,其中包含必要的补丁。
  • 输入验证:实施严格的输入验证和清理,以防止恶意内容的注入。
  • 最小权限:避免以root权限运行应用程序。配置Docker容器以非root用户运行。
  • 安全监控:设置入侵检测系统以监控异常活动。

参考

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计