SUSE Fleet の脆弱性 CVE-2024-52284:Helm 値の平文保存による情報漏洩の可能性

SUSE Fleet: Plain Text Storage of Vulnerability Exploit Helm Values

2025/09/01 gbhackers — SUSE Fleet に存在する深刻な脆弱性 CVE-2024-52284 が、GitHub セキュリティ・アドバイザリ GHSA-6h9x-9j5v-7w9h で公開された。この欠陥は、機密性の高い認証情報などを取り込む可能性の高い Helm チャートの値を、BundleDeployment リソース内に平文で保存するものであり、GET/LIST 権限を持つ全てのユーザーが、それらの値を閲覧できる状態にある。Kubernetes クラスター向けの GitOps 管理ツールの脆弱性を発見したのは、セキュリティ研究の samjustus である。

SUSE Fleet は、Git リポジトリと Kubernetes マニフェストを照合することで、継続的デプロイメントを効率化していく。具体的に言うと、BundleDeployment の Spec Options Helm Values フィールドを介して、ユーザーがカスタム Helm 値を指定すると、Fleet は照合ループを用いて、それらの値をダイレクトに適用していく。

Helm v3 は、Chart の状態と値を Kubernetes Secrets に保存し、保存時に暗号化を提供する。その一方で、従来からの Fleet は、Helm 値を暗号化せずに、BundleDeployment カスタム・リソースに埋め込んでいた。さらに、Kubernetes のデフォルトでは、カスタム・リソースのフィールドは保存時に暗号化されないため、クラスタ・データ・ストア内の機密情報は保護されていなかったことになる。

この脆弱性による主たる影響は、Secret の不正開示にある。つまり、クラスタ内の BundleDeployment オブジェクトへのアクセス権を持つユーザーであれば、暗号化されていない Helm 値を容易に取得し、認証情報やトークンなどの重要データを漏洩させる可能性がある。さらに、クラスタ内での保存時に、暗号化が有効化されなければ、Kubernetes のカスタム・リソースは平文の etcd エントリとして保存される。したがって、クラスタ・データ・ストアへのアクセス権を持つユーザーであれば、それらを侵害する可能性を得る。

Helm v3 は Secrets で保護に対応しているが、従来からの Fleet の挙動に明らかな欠陥があるため、BundleDeployment オブジェクトが kubectl や API サーバー経由でクエリされる際に、機密データが平文で露出していた。

CVSS と深刻度

脆弱性 CVE-2024-52284 の深刻度は、CVSS 3.1 ベース・スコアで 7.4 (High) と評価されている。指標については以下の通りである。

  • 攻撃ベクター: ネットワーク
  • 攻撃の複雑さ: Low
  • 必要な権限: Low
  • ユーザー操作: 不要
  • 影響範囲: 変更済み
  • 機密性への影響: 高
  • 整合性への影響: なし
  • 可用性への影響: なし

つまり、攻撃者は最小限の権限で、標準的な API 呼び出しを行うだけで、機密データを収集できる。

影響を受ける バージョン

  • バージョン 0.11.0~0.11.10 未満
  • バージョン 0.12.0~0.12.6 未満
  • バージョン 0.13.0~0.13.1 未満

SUSE Fleet修正版

  • バージョン 0.14.0/0.13.1/0.12.6/0.11.10

今回の更新により Fleet が導入したのは、それぞれの BundleDeployment の Helm 値を、Kubernetes Secret として保存する仕組みである。Fleet コントローラーは照合前に Secret を生成し、その Secret を Fleet エージェントが参照するように変更されている。これにより、CRD オブジェクト内に Helm 値が平文で保存されることはなくなった。

緩和策

ユーザーに対して強く推奨されるのは、パッチ適用済みリリースへの、速やかなアップグレードである。

なお、迅速なアップグレードが困難な環境では、スペック内に値ファイルをダイレクトに記載せず、ファイル名のみを参照させることで、リスクを軽減できる。この方法により、Fleet は参照された値ファイルを Secret として管理する。

  • 不適切な設定例:
texthelm:
  valuesFiles:
    - config-chart/values.yaml
  • 安全な回避策:
texthelm:
  valuesFiles:
    - values.yaml

この命名規則により Fleet は、対象となるファイルを外部ファイルとして解釈し、平文で保存しなくなる。

推奨される対応
  • Fleet をバージョン 0.14.0 以降に、または、現在のリリース・ラインに対応するパッチ適用済みバージョンにアップグレードする。
  • 既存の BundleDeployment を監査し、誤って公開された Secret が存在しないことを確認する。侵害された認証情報は、直ちにローテーションする。
  • すべての重要なネームスペースで、Kubernetes の保存時における暗号化を有効化し、Fleet の組み込み Secret ストレージを超える保護レイヤーを追加する。
  • RBAC ポリシーを確認し、BundleDeployment リソースに対する GET/LIST 権限を、信頼できるユーザーのみに制限する。

これらの対応により、SUSE Fleet のセキュリティが強化され、また、クラスタ・マニフェスト内でシークレットを平文で保持しないという基本原則が徹底される。

また、認証情報の窃取手法の詳細については、MITRE ATT&CK Technique T1555: Credentials from Password Stores を参照してほしい。