
CVE-2026-5006(볼트 템플릿 정책 슬래시 주입 취약점)을 위한 감사 및 교육용 툴킷입니다. Markdown 보고서를 생성하는 읽기 전용 감사 스크립트와 수정을 위한 대화형 워크스루를 포함합니다.
Vault 템플릿 기반 정책 슬래시 주입 취약점을 다루기 위한 두 가지 도구: 문제를 설명하고 범위를 파악하기 위한 대화형 워크스루와, 라이브 클러스터를 점검하여 결과를 Markdown으로 작성하는 감사 스크립트입니다.
vault-cve-2026-5006-walkthrough.html - 문제에 대한 대화형 독립형 워크스루vault-cve-2026-5006-audit.sh - 4개의 보고서를 생성하는 읽기 전용 클러스터 감사Vault 정책 경로는 템플릿을 통해 사용자의 부서와 같은 라이브 ID 값을 가져올 수 있습니다. Vault는 정책을 렌더링할 때 해당 값을 하나의 경로 세그먼트에 채웁니다. 값에 슬래시가 포함되는 것을 막는 장치가 없으며, 슬래시는 경로 구분자이므로 admin/super-secret 같은 값은 의도된 하나의 세그먼트를 두 개로 나누어 정책 작성자가 결코 부여하지 않은 접근 권한을 부여합니다. 이를 악용하려면 세 가지 조건이 맞아야 합니다: 인증된 공격자, 템플릿 기반 정책, 그리고 이를 공급하는 ID 값(엔티티 메타데이터, 별칭 이름, 사용자 지정 메타데이터 또는 그룹 메타데이터)에 대한 통제권.
수정 방법은 두 가지로 나뉩니다: 패치된 빌드로 업그레이드한 다음 서버 구성에서 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 | 엔티티 이름 및 메타데이터, 네임스페이스별 테이블 |
alias-and-custom-metadata.md | 별칭 이름 및 사용자 지정 메타데이터, 네임스페이스별 |
group-metadata.md | 그룹 이름 및 메타데이터, 네임스페이스별 |
각 파일은 권고 참조, UTC 타임스탬프, 클러스터 주소, 시작 네임스페이스 및 검사된 네임스페이스 수로 시작합니다.
policies.md에는 ID 데이터({{identity...}} 참조)에서 렌더링된 경로가 있는 정책만 나열됩니다. 슬래시로 확장될 수 있는 것은 바로 이러한 정책입니다.
세 가지 ID 보고서에는 Slash? 열이 추가됩니다. 이름 또는 메타데이터 값에 /가 포함된 경우 행에 플래그가 지정됩니다. 이름을 확인하는 것이 중요합니다: admin/injected라는 별칭은 메타데이터가 깨끗하더라도 노출이며, 이름 자체가 템플릿에 공급될 수 있기 때문입니다.
플래그는 노출 표면을 나타내며 침해의 증거가 아닙니다. 각 항목에 대해 해당 값을 쓸 수 있는 사람을 확인하고, 슬래시가 범위를 확장할 수 있는 정책을 재구성하세요.
Vault Enterprise와 HCP는 정책과 ID 저장소를 모두 네임스페이스별로 격리하므로 스크립트는 각 네임스페이스에서 모든 검사를 실행합니다. vault namespace list는 직접 하위 항목만 부분 경로로 반환하므로, 스크립트는 재귀적으로 내려가면서 각 전체 경로를 재구성한 다음 모든 호출에 대해 VAULT_NAMESPACE를 설정합니다.
깊은 네임스페이스 트리에서는 API 호출이 많아져 실행이 느려질 수 있습니다. 전체를 검사하기 전에 빠른 1차 검사를 위해 -n을 하위 트리로 지정하세요.
deny_slash_in_templated_paths = true를 활성화하고 각 서버를 재시작합니다. HCP에서는 서버 구성을 직접 편집할 수 없으므로 지원 요청이 필요합니다. 자체 관리형에서는 직접 설정합니다.워크스루의 수정 탭에는 HCP와 Kubernetes 모두에 대한 단계별 지침이 있습니다.
deny_slash_in_templated_paths이 도구는 보조 도구일 뿐이며 HashiCorp의 공식 성명이 아닙니다.