Vault のテンプレート化ポリシーにおけるスラッシュインジェクションの脆弱性に対処するための2つのツールです。問題の説明と影響範囲の把握に役立つ対話型ウォークスルーと、稼働中のクラスターを検査して結果を Markdown に書き出す監査スクリプトです。
vault-cve-2026-5006-walkthrough.html - 問題を解説する対話型の自己完結型 HTML ファイルvault-cve-2026-5006-audit.sh - 読み取り専用のクラスター監査スクリプト。4つのレポートを生成しますVault のポリシーパスは、テンプレート化を通じてユーザーの部署などのライブなアイデンティティ値を取り込むことができます。Vault はポリシーをレンダリングする際に、その値を1つのパスセグメントに埋め込みます。しかし、その値にスラッシュが含まれることを防ぐ仕組みはなく、スラッシュはパス区切り文字であるため、admin/super-secret のような値は意図した1つのセグメントを2つに分割し、ポリシー作成者が決して記述していないアクセス権を付与してしまいます。これを悪用するには3つの条件が揃う必要があります:認証済みの攻撃者、テンプレート化されたポリシー、そしてそれを供給するアイデンティティ値(エンティティメタデータ、エイリアス名、カスタムメタデータ、グループメタデータ)への制御権です。
修正には2つの側面があります:パッチ適用済みビルドへのアップグレード、そしてサーバー設定で 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、順序付けられたポッドの循環(スタンバイを先に、アクティブを最後に)、および検証について説明します。プラットフォームまたはセキュリティチーム向けです。攻撃タブから始めて問題の背景を把握し、チェックタブを使用してコマンドを引き継ぎ、修復タブを各自のデプロイメントに合わせて切り替えてください。
vault-cve-2026-5006-audit.sh)到達可能なすべての名前空間を巡回し、4つの Markdown レポートを書き出します。Vault を変更することは一切なく、すべての呼び出しはリストまたは読み取りです。
vault CLI と jq が含まれていることVAULT_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 |
-o | Markdown ファイルの出力ディレクトリ | ./vault-audit |
-h | 使用方法ヘッダーを表示して終了 |
HCP では真のルート名前空間が見えないため、admin から開始します。-n "" は、セルフマネージドクラスターでルートトークンを保持している場合にのみ使用してください。
| ファイル | 内容 |
|---|---|
policies.md | 名前空間ごとにグループ化されたテンプレート化ポリシーと HCL |
entity-metadata.md | エンティティ名とメタデータ(名前空間ごとに1つのテーブル) |
alias-and-custom-metadata.md | エイリアス名とカスタムメタデータ(名前空間ごと) |
group-metadata.md | グループ名とメタデータ(名前空間ごと) |
各ファイルは、アドバイザリ参照、UTC タイムスタンプ、クラスターアドレス、開始名前空間、およびスキャンされた名前空間の数で始まります。
policies.md には、アイデンティティデータ({{identity...}} 参照)からレンダリングされたパスを持つポリシーのみがリストされます。これらがスラッシュによって拡大される可能性があるポリシーです。
3つのアイデンティティレポートには 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 の公式見解ではありません。