Kubernetes OPA Gatekeeper bypass

Der ursprüngliche Autor dieser Seite ist Guillaume

Misskonfiguration ausnutzen

Regeln auflisten

Einen Überblick zu haben, kann helfen zu wissen, welche Regeln aktiv sind, in welchem Modus und wer sie umgehen kann.

Mit der 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

ConstraintTemplate und Constraint können im Open Policy Agent (OPA) Gatekeeper verwendet werden, um Regeln für Kubernetes-Ressourcen durchzusetzen.

$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

Mit der GUI

Eine grafische Benutzeroberfläche kann ebenfalls verfügbar sein, um auf die OPA-Regeln mit Gatekeeper Policy Manager zuzugreifen. Es ist "eine einfache schreibgeschützte Web-UI zur Anzeige des Status der OPA Gatekeeper-Richtlinien in einem Kubernetes-Cluster."

Suchen Sie nach dem exponierten Dienst:

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

Ausgeschlossene Namespaces

Wie im obigen Bild dargestellt, können bestimmte Regeln nicht universell auf alle Namespaces oder Benutzer angewendet werden. Stattdessen funktionieren sie auf einer Whitelist-Basis. Zum Beispiel ist die liveness-probe-Einschränkung von der Anwendung auf die fünf angegebenen Namespaces ausgeschlossen.

Bypass

Mit einem umfassenden Überblick über die Gatekeeper-Konfiguration ist es möglich, potenzielle Fehlkonfigurationen zu identifizieren, die ausgenutzt werden könnten, um Privilegien zu erlangen. Suchen Sie nach auf die Whitelist gesetzten oder ausgeschlossenen Namespaces, in denen die Regel nicht gilt, und führen Sie dann Ihren Angriff dort durch.

Abusing Roles/ClusterRoles in Kubernetes

Missbrauch von ValidatingWebhookConfiguration

Eine weitere Möglichkeit, Einschränkungen zu umgehen, besteht darin, sich auf die ValidatingWebhookConfiguration-Ressource zu konzentrieren :

Kubernetes ValidatingWebhookConfiguration

Referenzen

Last updated