两个用于处理 Vault 模板化策略斜杠注入漏洞的工具:一个用于解释和界定该问题的交互式演练,以及一个用于检查实时集群并将结果写入 Markdown 的审计脚本。
vault-cve-2026-5006-walkthrough.html - 关于该问题的交互式、自包含演练vault-cve-2026-5006-audit.sh - 生成四份报告的只读集群审计Vault 策略路径可以通过模板化引入实时身份值,例如用户的部门。Vault 在渲染策略时会将该值填入一个路径段中。没有任何机制阻止该值携带斜杠,而斜杠是路径分隔符,因此像 admin/super-secret 这样的值会将一个预期段变成两个,从而授予策略作者从未编写的访问权限。利用该漏洞需要三个条件同时满足:一个已认证的攻击者、一个模板化策略,以及对该策略所依赖的身份值(实体元数据、别名名称、自定义元数据或组元数据)的控制权。
修复措施分为两部分:升级到已修补的构建版本,然后在服务器配置中设置 deny_slash_in_templated_paths = true 并重启。该标志默认关闭,因此仅升级并不能消除风险。
| 版本 | 受影响版本 | 修复版本 |
|---|---|---|
| Community | 0.11.0 至 2.0.3 | 2.0.4 |
| Enterprise | 0.11.0 至 2.0.3 | 2.0.4 |
| Enterprise LTS | 最高 1.21.8 / 1.20.13 / 1.19.19 | 1.21.9 / 1.20.14 / 1.19.20 |
vault-cve-2026-5006-walkthrough.html)一个自包含的 HTML 文件。在任何浏览器中打开即可。
deny_slash_in_templated_paths 的开启和关闭,让你实时看到修复措施如何阻止该规则。helm upgrade、有序的 Pod 轮换(先备节点后主节点),以及验证。平台或安全团队。从攻击标签页开始以了解该问题的背景,使用检查标签页交接命令,并将修复标签页切换到他们实际运行的部署方式。
vault-cve-2026-5006-audit.sh)遍历你能访问的每个命名空间并生成四份 Markdown 报告。它从不修改 Vault;每次调用都是列表或读取操作。
vault CLI 和 jqVAULT_ADDR 设置为集群地址VAULT_TOKEN,也可以是之前执行过的 vault login。在 HCP 上,需要一个限定在你的 admin 命名空间范围内的令牌。# HCP Vault Dedicated(默认起始命名空间为 "admin")
./vault-cve-2026-5006-audit.sh
# 使用根令牌的自管理:从真正的根开始
./vault-cve-2026-5006-audit.sh -n ""
# 从特定子树开始并选择输出目录
./vault-cve-2026-5006-audit.sh -n admin/team-a -o ./team-a-audit
| 标志 | 含义 | 默认值 |
|---|---|---|
-n | 遍历起始的命名空间 | admin |
在 HCP 上从 admin 开始,因为真正的根命名空间在那里对你不可见。仅当你在自管理集群上持有根令牌时才使用 -n ""。
| 文件 | 内容 |
|---|---|
policies.md | 按命名空间分组的模板化策略,附 HCL |
entity-metadata.md | 实体名称和元数据,每个命名空间一个表格 |
alias-and-custom-metadata.md |
每个文件开头都包含公告引用、UTC 时间戳、集群地址、起始命名空间以及扫描的命名空间数量。
policies.md 仅列出路径由身份数据({{identity...}} 引用)渲染的策略。这些才是可能被斜杠扩权的策略。
三份身份报告添加了 Slash? 列。当名称或任何元数据值包含 / 时,该行会被标记。检查名称很重要:即使元数据是干净的,名为 admin/injected 的别名也是一种暴露风险,因为名称本身可以输入到模板中。
标记表示暴露面,而非被入侵的证据。对于每个标记项,确认谁被允许写入该值,并在斜杠可能扩大范围的地方重构策略。
Vault Enterprise 和 HCP 将策略和身份存储都按命名空间隔离,因此脚本会在每个命名空间中执行所有检查。vault namespace list 仅以部分路径形式返回直接子命名空间,因此脚本会递归并在下降过程中重建每个完整路径,然后为每次调用设置 VAULT_NAMESPACE。
在深层命名空间树上,这会发起大量 API 调用并可能运行缓慢。在全面扫描之前,先将 -n 指向一个子树以进行快速的首轮检查。
deny_slash_in_templated_paths = true 并重启每台服务器。在 HCP 上,这是一项支持请求,因为服务器配置不属于你可编辑的范围。在自管理环境中,你可以自行设置。演练的修复标签页提供了 HCP 和 Kubernetes 的分步说明。
deny_slash_in_templated_paths这些工具是辅助手段,并非 HashiCorp 的官方声明。
-o | Markdown 文件的输出目录 | ./vault-audit |
-h | 打印用法说明并退出 |
| 别名名称和自定义元数据,按命名空间列出 |
group-metadata.md | 组名称和元数据,按命名空间列出 |