Kubernetes Kyverno bypass

このページの元の著者は Guillaume

ポリシーの誤設定を悪用する

ルールの列挙

概要を把握することで、どのルールがアクティブで、どのモードで、誰がそれをバイパスできるかを知るのに役立ちます。

$ kubectl get clusterpolicies
$ kubectl get policies

除外の列挙

各ClusterPolicyおよびPolicyに対して、除外されたエンティティのリストを指定できます。これには以下が含まれます:

  • グループ: excludedGroups

  • ユーザー: excludedUsers

  • サービスアカウント (SA): excludedServiceAccounts

  • ロール: excludedRoles

  • クラスターロール: excludedClusterRoles

これらの除外されたエンティティはポリシー要件から免除され、Kyvernoはそれらに対してポリシーを強制しません。

1つのclusterpolicyの例を掘り下げてみましょう :

$ kubectl get clusterpolicies MYPOLICY -o yaml

除外されたエンティティを探します :

exclude:
any:
- clusterRoles:
- cluster-admin
- subjects:
- kind: User
name: system:serviceaccount:DUMMYNAMESPACE:admin
- kind: User
name: system:serviceaccount:TEST:thisisatest
- kind: User
name: system:serviceaccount:AHAH:*

クラスター内では、多くの追加コンポーネント、オペレーター、およびアプリケーションがクラスター ポリシーから除外される必要がある場合があります。しかし、これは特権エンティティをターゲットにすることで悪用される可能性があります。場合によっては、名前空間が存在しないように見えたり、ユーザーをなりすます権限がないように見えたりすることがあり、これは設定ミスの兆候である可能性があります。

ValidatingWebhookConfigurationの悪用

ポリシーをバイパスする別の方法は、ValidatingWebhookConfigurationリソースに焦点を当てることです :

Kubernetes ValidatingWebhookConfiguration

Last updated