本文へ移動
English version →
重大 9.9 急ぎ度: 早めに

Kyvernoに脆弱性7件、権限昇格など。修正版1.19.2あり

ポリシーエンジンのKyvernoに、テナント権限の利用者がクラスター全体へ影響を及ぼせる脆弱性が7件公表されました。複数チームでクラスターを共有する組織は、修正版1.19.2へ更新し、名前空間単位のポリシー作成権限も見直してください。

CVE-2026-122303 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆

同じ発表の脆弱性 7 件

記事のイメージ(生成 AI による画像)
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

7件はいずれもCVSS v3が9.1〜9.9のcriticalで、修正版1.19.2が公開済みです。クラスターを複数チームで共有しているなら、今週中の更新を優先する案件と筆者は見ています。

関係があるか

Kyvernoを使うKubernetesクラスターが対象です。名前空間の管理者や開発チームにポリシーを書かせている共有クラスターでは、影響が大きくなります。

製品影響を受ける版修正版
Kyverno 1.19.2より前の全版。件によって下限が異なり、1.16.0以降、1.17.0以降、1.18.0以降、1.19.1が対象の件があります。CVE-2026-122302は1.19.2より前のすべての版が対象です。 1.19.2

確かめ方

  1. 1稼働中のKyvernoの版を、イメージのタグかHelmのチャートで確認します。1.19.2より前なら、いずれかの件に該当します。
  2. 2テナントや各チームが、名前空間単位のポリシー(Policy、NamespacedValidatingPolicy、NamespacedMutatingPolicy、CleanupPolicy)を作成できるかを、RBACで確認します。作成できる利用者がいなければ、悪用されうる範囲は狭まります。
  3. 3マネージドサービスやディストリビューション経由でKyvernoを導入している場合は、提供元の告知で、対象版と修正版の提供状況を確認します。

何が起きたか

Kyvernoは、Kubernetesへの登録内容を検査・書き換え・自動生成するポリシーエンジンです。今回の7件はいずれも、権限の低い利用者が書いたポリシーを、Kyvernoの強い権限のコントローラーが実行してしまう点に原因があります。悪用されると、他の名前空間のSecretの読み取りや各種リソースの書き換え、クラスター管理者相当の権限の取得、署名検証の回避が起こりえます。

  • CVE-2026-122303: NamespacedMutatingPolicyの対象指定式により、他の名前空間のSecret、Deployment、ポリシーが上書きされる(CVSS v3は9.9、v4は9.4)
  • CVE-2026-122313: 同じくNamespacedMutatingPolicyで、他テナントのRoleBindingやRole、NetworkPolicy、ConfigMapが書き換えられ、権限が昇格する(CVSS v3は9.9、v4は9.4)
  • CVE-2026-122304: CleanupPolicyの処理で名前空間の制限を抜け、他の名前空間のSecretを読まれ、validatingwebhookconfigurationsも変更される(CVSS v3は9.9、v4は9.4)
  • CVE-2026-122310: Policyのcontext.apiCallで指定するurlPathの検証を回避され、クラスタースコープのエンドポイントにKyvernoの権限で到達し、クラスター管理者の権限を得られる(CVSS v3は9.9、v4は9.4)
  • CVE-2026-122311: NamespacedValidatingPolicyのresource.get()とresource.post()でパスの検証が足りず、任意のクラスターオブジェクトを読み書きされ、クラスターを乗っ取られる(CVSS v3は9.9、v4は9.4)
  • CVE-2026-122302: generateルールの権限チェックが作成者でなくコントローラーの権限で行われ、他の名前空間やクラスタースコープのリソースを作成・複製される(CVSS v3は9.8、v4は9.3)
  • CVE-2026-122321: verifyImagesの検証結果キャッシュがタグ単位で保持されるため、署名・アテステーションの検証をすり抜けて未検証のイメージが許可される(CVSS v3は9.1、v4は8.5)

6件は名前空間の境界を越える権限昇格で、いずれもポリシーの作成権限が出発点になります。残る1件のCVE-2026-122321は、イメージの署名検証という別の防御線が破られる点が異なります。

攻撃の流れ

  1. 1

    テナント権限で入る

    特定の名前空間でポリシーやワークロードを登録できる正規のアカウントを使います。

  2. 2

    細工した設定を登録

    名前空間の外を参照するよう、ポリシーなどの設定内容を細工して登録します。

  3. 3

    検査をすり抜ける

    Kyvernoの検証が、作成者の権限や対象の範囲を正しく見ないまま通します。

  4. 4

    強い権限で実行

    Kyvernoのコントローラーが自身のServiceAccountの権限で、名前空間の外を読み書きします。

  5. 5

    クラスター全体へ

    Secretの漏えい、リソースの改ざん、管理者権限の取得、未検証イメージの稼働につながります。

公開されている情報をもとにした流れの例です。

どう悪用されるか

共通の前提は、クラスターに正規のアカウントを持っていることです。ネットワーク経由で、低い権限のまま、ほかの利用者の操作を待たずに実行できます(CVE-2026-122303のCVSSベクターによる)。ポリシーを作成できる名前空間の管理者やテナントが、設定を細工して登録することで成立します。

件ごとの違いは、登録できる対象です。CVE-2026-122302はPolicyのgenerateルール、CVE-2026-122303と122313はNamespacedMutatingPolicy、CVE-2026-122304はCleanupPolicy、CVE-2026-122310はPolicyのcontext.apiCall、CVE-2026-122311はNamespacedValidatingPolicyが対象です。CVE-2026-122321だけはポリシーの作成権限を必要とせず、ワークロードを登録でき、かつレジストリ上のタグを動かせる攻撃者が条件です。

被害は、他の名前空間のSecretの漏えい、Deployment、RoleBinding、Role、NetworkPolicy、ConfigMapなどの改ざん、クラスター管理者相当の権限の取得です。CVE-2026-122321では、署名を検証していないイメージがクラスターで動きます。

今すぐやること

  1. 1

    Kyvernoを1.19.2に更新する

    7件すべてが1.19.2で修正されています。稼働中の版を確認し、1.19.2より前なら更新します。まず共有クラスター、本番、開発の順に進めると、被害が大きい環境から塞げます。

    kubectl get deployments -A -o wide | grep -i kyverno
  2. 2

    ポリシー作成権限を持つ利用者を洗い出す

    名前空間単位のポリシーを作成できるRoleやRoleBindingを確認し、本当に必要な利用者だけに絞ります。更新までのあいだ、リスクを下げる効果もあります。

  3. 3

    既存のポリシーに不審なものがないか調べる

    名前空間単位のポリシーのうち、他の名前空間やクラスタースコープのリソースを参照・生成・変更するものが紛れていないか見直します。ClusterRoleBindingやwebhook設定に、身に覚えのない変更がないかも確認します。監査ログを保管していれば、ポリシー作成の記録をさかのぼります。

  4. 4

    署名検証の運用を点検する

    verifyImagesを使っている場合、更新後に、実際に稼働しているイメージのダイジェストが想定どおりかを確認します。ベンダーの告知に、追加の対処や注意点が書かれていないかも読んでおきます。

すぐ更新できないとき

すぐに更新できないときのつなぎとして、名前空間単位のポリシー(Policy、NamespacedValidatingPolicy、NamespacedMutatingPolicy、CleanupPolicy)を作成できる権限を、クラスター管理者に限ります。ワークロードを登録できる範囲も、必要な利用者に絞ります。権限の絞り込みは悪用の入口を狭めるだけで、修正の代わりにはなりません。公式の回避策の有無は、ベンダーの告知で確認してください。

背景

Kyvernoは、Kubernetesの管理APIに届く登録内容を検査し、書き換えや自動生成を行う、ポリシーエンジンです。セキュリティ基準の強制、ラベルの自動付与、イメージ署名の検証などを担います。そのため、Secretの読み取りやwebhook設定の変更といった強い権限を持つServiceAccountで動いています。

今回は、名前空間単位でポリシーを書かせる仕組みが共通の舞台になりました。受付係が、来訪者の依頼票をそのまま鍵付きの倉庫で実行するようなものです。依頼票を書いた人に倉庫を開ける資格があるかを見ないと、権限の低い人が強い権限を借りることになります。この仕組みは、各チームに自分のポリシーを管理させるマルチテナント運用ほど、影響が大きくなります。

よくある質問

Q.クラスターを管理しているのが自分たちだけでも、更新は必要ですか。
A.悪用にはクラスターの正規アカウントが要るため、管理者しかポリシーやワークロードを登録できない環境では、リスクはかなり下がります。ただ、委託先や他部署にアカウントを払い出している場合や、CI/CDの権限が広い場合は同じ状況に近づきます。修正版への更新自体は小さな変更で済むはずなので、定期の更新に前倒しで組み込むのが現実的です。
Q.7件のうち、自社の版に関係するのは一部だけです。1.19.2に上げる必要がありますか。
A.件によって対象の版は異なりますが、7件すべてが1.19.2で修正されています。どの件に当たるかを細かく確認するより、1.19.2へ更新して全件をまとめて解消するほうが確実です。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

影響パッケージ

種類パッケージ影響を受ける版修正版
kyverno kyverno
1.17.0 以上 1.19.2 未満
1.19.2
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

Kyverno from 1.17.0 before 1.19.2 contains an authorization bypass vulnerability that allows namespace tenants to overwrite resources in other namespaces via NamespacedMutatingPolicy mutate-existing targetMatchConstraints.expression. Attackers can return a CEL map literal fabricating a target with an attacker-chosen metadata.namespace, causing the privileged background controller to overwrite Secrets, Deployments, or policies cluster-wide.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく