事件经过
mise 在解析期间通过 Tera 模板引擎处理 .tool-versions 配置文件,并在该上下文中注册 exec() 函数。与 .mise.toml 文件不同,.tool-versions 文件在非偏执模式下不受信任验证的约束。攻击者可以在提交到存储库的 .tool-versions 文件中嵌入任意 Tera exec() 调用;任何激活了 mise 的开发人员进入该目录时都会自动执行攻击者的命令,无任何提示或警告。
影响分析
mise 在 AI/ML 开发工作流中被大量使用,用于管理 Python、Node 和其他工具链版本。这是一个供应链/驱动式攻击:恶意开源仓库、社交工程诱饵或被破坏的上游存储库可以在任何激活了 mise 的开发人员机器上执行攻击者代码 — 立即窃取云凭证、API 密钥、模型权重或建立持久性访问,无需任何用户交互,仅需更改目录。
攻击途径
攻击者将恶意 .tool-versions 文件放在 git 存储库中。该文件包含调用已注册的 exec() 函数的 Tera 模板指令。当具有 mise shell 激活的受害者运行 'cd' 进入该目录时,mise 通过 Tera 引擎解析 .tool-versions(与 .mise.toml 文件不同,不执行任何信任检查),嵌入的 exec() 调用立即运行任意操作系统命令。
受影响系统
mise < 2026.3.10
缓解措施
升级到 mise 2026.3.10 或更高版本。公告:https://github.com/jdx/mise/security/advisories/GHSA-fjj5-v948-whjj