概要

CVE-2025-13281 は、in-tree の Portworx StorageClass/ボリューム種別を使う場合kube-controller-manager で発生する Half-blind SSRF(サーバサイドリクエストフォージェリ)による情報漏えいです。攻撃者(権限を持つユーザー)が Pod を作成して特定のボリューム操作を起こすと、kube-controller-managerコントロールプレーンのホストネットワーク内から HTTP リクエストを行い、その HTTP レスポンスボディが Event として露出し得ます。 また、この系統の問題(CVE-2020-8555)は過去に一部の in-tree ストレージで修正されましたが、Portworx はその対象から漏れていた、と説明されています。

変更内容(何が変わったか)

修正は「Portworx in-tree ドライバのエラー詳細を Event に載せない」方向で行われています。具体的には、Portworx in-tree ドライバ処理中のエラーについて、詳細なエラー(外部/ネットワーク由来の内容を含み得る)をそのまま返すのではなくkube-controller-manager.log を参照するよう促す 汎用的なエラーメッセージに置き換え、詳細は klog.V(4) のログ側に寄せています(例: failed to attach volume: see kube-controller-manager.log for details)。

背景(なぜこの変更が必要か)

  • 本脆弱性では、攻撃者が作れる Pod(in-tree Portworx のボリューム種別を利用)を起点に、kube-controller-managerユーザー入力に基づく未検証 URLへ(攻撃者が自由に本文を制御できない形で)HTTP リクエストを行い、レスポンスの一部/本文が Event として観測できる点が問題とされています。
  • コントロールプレーンのホストネットワーク内には、link-local/loopback のメタデータエンドポイントや localhost リッスンのサービスなど、通常は外部から見えないが未保護の可能性があるエンドポイントがあり、漏えいのインパクトになり得ます。

影響(運用者/利用者/開発者への影響、注意点、移行)

  • 影響を受ける条件(要旨)
    • 影響を受ける kube-controller-manager バージョンである
    • CSIMigrationPortworx を(デフォルトから)明示的に無効化している(v1.31+ ではデフォルト有効とされています)
    • コントロールプレーンのホストネットワーク内に未保護エンドポイントがある
    • 信頼できないユーザーが、該当 Portworx ボリューム種別を使う Pod を作成できる
  • 影響バージョン(kube-controller-manager
    • <= v1.30.14, <= v1.31.14, <= v1.32.9, <= v1.33.5, <= v1.34.1
  • 修正バージョン(kube-controller-manager
    • >= v1.32.10, >= v1.33.6, >= v1.34.2
  • 緩和策
    • 修正版へアップグレード
    • v1.31+ で CSIMigrationPortworx をデフォルトから変更している場合、有効化して戻す(デフォルトで in-tree Portworx StorageClass が無効化される、と説明されています)
  • 検知のヒント
    • CSIMigrationPortworx が無効な影響バージョンにおいて、kube-controller-manager が作る ProvisioningFailed などの Event に、コントロールプレーン内の情報が混入していないか確認する、という方針が示されています。

用語メモ(用語の軽い説明)

  • kube-controller-manager: コントローラ群(PV/PVC など)を実行するコントロールプレーンコンポーネント。
  • SSRF(Half-blind): サーバが攻撃者指定の宛先へ通信し、その結果が間接的(ここでは Event)に観測できるタイプの SSRF。
  • in-tree ストレージ/ドライバ: Kubernetes 本体に同梱されるストレージ実装(外部 CSI ドライバとは別系統)。
  • CSIMigrationPortworx(Feature Gate): Portworx の in-tree から CSI への移行に関わる機能ゲート(v1.31 からデフォルト有効、という説明)。
  • Kubernetes Event: クラスタ内の出来事(失敗理由など)を記録・表示する仕組み。権限があると閲覧でき、情報漏えい経路になり得る。

参考リンク