Kubernetes - OPA Gatekeeper bypass

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

設定ミスの悪用

ルールの列挙

概要を把握することで、どのルールがアクティブであり、どのモードであり、誰がバイパスできるかがわかるかもしれません。

CLIを使用して

$ kubectl api-resources | grep gatekeeper
k8smandatoryannotations                                                             constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryAnnotations
k8smandatorylabels                                                                  constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryLabel
constrainttemplates                                                                 templates.gatekeeper.sh/v1                         false        ConstraintTemplate

ConstraintTemplateConstraintは、Open Policy Agent (OPA) GatekeeperでKubernetesリソースにルールを強制するために使用できます。

$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

GUIを使用する

Gatekeeper Policy Managerを使用してOPAルールにアクセスするためのグラフィカルユーザーインターフェースも利用可能です。これは、"Kubernetesクラスター内のOPA Gatekeeperポリシーのステータスを表示するためのシンプルな読み取り専用Web UI"です。

公開されたルートを検索します:

$ kubectl get services -A | grep gatekeeper
$ kubectl get services -A | grep 'gatekeeper-policy-manager-system'

除外された名前空間

上記の画像に示されているように、特定のルールはすべての名前空間やユーザに一律に適用されるわけではありません。代わりに、ホワイトリスト方式で動作します。たとえば、liveness-probe 制約は、指定された5つの名前空間には適用されません。

バイパス

Gatekeeperの設定を包括的に把握することで、特権を取得するために悪用できる潜在的な誤構成を特定することが可能です。ルールが適用されないホワイトリスト化された名前空間や除外された名前空間を探し、そこで攻撃を実行してください。

Abusing Roles/ClusterRoles in Kubernetes

参考文献

Last updated