HashiCorp Vault Secrets Operator 修補 AppRole 路徑漏洞:惡意租戶可竊取 Operator 的 ServiceAccount Token
HashiCorp Security Advisory HCSEC-2026-28 · 2026-08-13(oss-security 郵件論壇於 2026-08-28 轉發討論)
HashiCorp 在 HCSEC-2026-28 公告中揭露 Vault Secrets Operator(VSO)自 1.3.0 版引入的 secretIDPath 欄位存在任意檔案讀取漏洞,編號為 CVE-2026-8715。具備 Kubernetes 命名空間內建立 VaultAuth 與 VaultConnection 資源權限的租戶,可誘使 Operator Pod 把任意本機檔案內容回傳到租戶控制的端點,包括 Operator 自身掛載的 ServiceAccount token。此問題已於 8 月中旬公開,並在月底透過 oss-security 郵件論壇再度被提出討論。
VSO 是 HashiCorp 官方提供的 Kubernetes Operator,用途是讓叢集內的 Pod 不需自行呼叫 Vault API,就能以宣告式的 CRD 把 Vault 中的機密同步成 Kubernetes Secret。正因為它通常以叢集層級的高權限 ServiceAccount 執行,一旦這個 Operator 本身的身分被外洩,影響範圍就不只限於單一租戶的機密,而是可能牽動整個叢集的機密管理鏈。這也是本次漏洞受到多方關注的原因之一。
漏洞機制
VSO 讓叢集管理者透過 VaultAuth CRD 設定 AppRole 認證所需的 Secret ID,其中 secretIDPath 讓使用者指定一個檔案路徑,Operator 會讀取該路徑內容作為 Secret ID 送往 Vault 完成認證。問題在於 Operator 對 secretIDPath 的檢查只驗證了路徑穿越字元與檔案大小上限,並未限制實際可讀取的檔案範圍。攻擊者只要擁有在目標命名空間建立 VaultAuth、VaultConnection、VaultStaticSecret 的權限,就能把 secretIDPath 指向 Operator Pod 上任何可讀檔案,例如自身的 ServiceAccount token 掛載路徑 /var/run/secrets/kubernetes.io/serviceaccount/token。接著只要把對應 VaultConnection.spec.address 改指向攻擊者控制的伺服器,Operator 嘗試以 AppRole 認證時就會把讀到的檔案內容當成 Secret ID,以 HTTP 請求送往該端點,等同把檔案內容外洩出去。
apiVersion: secrets.hashicorp.com/v1beta1
kind: VaultAuth
metadata:
name: attacker-auth
spec:
vaultConnectionRef: attacker-conn
method: appRole
appRole:
roleId: any
secretIDPath: /var/run/secrets/kubernetes.io/serviceaccount/token
# 對應 VaultConnection.spec.address 另指向攻擊者伺服器由於 Operator 通常以叢集層級的 ServiceAccount 運作,外洩其 token 之後,攻擊者便能以該身分呼叫 Kubernetes API,視 RBAC 綁定範圍不同,可能進一步橫向讀取其他命名空間的 Secret 或升級叢集內權限。這也是本次漏洞被列為高風險的主因:問題不只是單一檔案的資訊外洩,而是可能演變成叢集層級的權限升級鏈。
受影響版本
本次漏洞影響範圍限定在導入 secretIDPath 欄位之後、修補釋出之前的版本區間:
- Vault Secrets Operator
1.3.0至1.4.1(含):存在漏洞 - Vault Secrets Operator
1.5.0:已修補,並直接移除secretIDPath欄位
1.3.0 之前的版本因尚未提供 secretIDPath 這個設定路徑,不受影響。此漏洞由 CyStack 的 Trung Nguyen 與資安研究者 Artem Cherezov 各自回報給 HashiCorp。
修補與緩解
HashiCorp 在 1.5.0 版直接移除 secretIDPath 欄位,改要求使用者透過 spec.appRole.secretRef 參照一個既有的 Kubernetes Secret 來提供 AppRole Secret ID,不再允許 Operator 直接讀取任意檔案路徑。管理員應盡快升級到 1.5.0 並將既有設定改寫為 secretRef 形式;升級前也建議先檢視叢集中哪些租戶具備建立 VaultAuth、VaultConnection 資源的權限,因為這是本次攻擊鏈成立的必要前提。若短期內無法升級,可先透過 RBAC 限制一般租戶建立或修改這三種 CRD 的能力,降低被利用的機會。