Kubernetes - OPA Gatekeeper bypass

Der ursprüngliche Autor dieser Seite ist Guillaume

Missbrauch von Fehlkonfiguration

Regeln aufzählen

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

Mit der Befehlszeile

$ 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 in 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 auch verfügbar sein, um auf die OPA-Regeln mit dem Gatekeeper Policy Manager zuzugreifen. Es handelt sich um "eine einfache nur-Lese Web-Benutzeroberfläche zum Anzeigen des Status der OPA Gatekeeper-Richtlinien in einem Kubernetes-Cluster."

Suche nach dem freigegebenen Pfad:

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

Ausgeschlossene Namespaces

Wie im obigen Bild dargestellt, werden bestimmte Regeln möglicherweise nicht universell auf alle Namespaces oder Benutzer angewendet. Stattdessen funktionieren sie auf Whitelist-Basis. Zum Beispiel ist die Einschränkung liveness-probe davon ausgenommen, auf die fünf angegebenen Namespaces angewendet zu werden.

Umgehung

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 whitelisted oder ausgeschlossenen Namespaces, in denen die Regel nicht gilt, und führen Sie dann Ihren Angriff dort durch.

Abusing Roles/ClusterRoles in Kubernetes

Referenzen

Last updated