Kubernetes Kyverno bypass
Reading time: 1 minute
Der ursprüngliche Autor dieser Seite ist Guillaume
Missbrauch von Fehlkonfigurationen in Richtlinien
Regeln auflisten
Eine Übersicht kann helfen, zu wissen, welche Regeln aktiv sind, in welchem Modus und wer sie umgehen kann.
$ kubectl get clusterpolicies
$ kubectl get policies
Enumerate Excluded
Für jede ClusterPolicy und Policy können Sie eine Liste von ausgeschlossenen Entitäten angeben, einschließlich:
- Gruppen:
excludedGroups
- Benutzer:
excludedUsers
- Dienstkonten (SA):
excludedServiceAccounts
- Rollen:
excludedRoles
- Cluster-Rollen:
excludedClusterRoles
Diese ausgeschlossenen Entitäten sind von den Richtlinienanforderungen befreit, und Kyverno wird die Richtlinie für sie nicht durchsetzen.
Beispiel
Lassen Sie uns ein Beispiel für eine ClusterPolicy näher betrachten:
$ kubectl get clusterpolicies MYPOLICY -o yaml
Suchen Sie nach den ausgeschlossenen Entitäten:
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:*
Innerhalb eines Clusters können zahlreiche hinzugefügte Komponenten, Operatoren und Anwendungen von einer Cluster-Richtlinie ausgeschlossen werden müssen. Dies kann jedoch ausgenutzt werden, indem privilegierte Entitäten ins Visier genommen werden. In einigen Fällen kann es so erscheinen, als ob ein Namespace nicht existiert oder dass Sie keine Berechtigung haben, einen Benutzer zu impersonifizieren, was ein Zeichen für eine Fehlkonfiguration sein kann.
Missbrauch von ValidatingWebhookConfiguration
Eine weitere Möglichkeit, Richtlinien zu umgehen, besteht darin, sich auf die ValidatingWebhookConfiguration-Ressource zu konzentrieren:
Kubernetes ValidatingWebhookConfiguration
Weitere Informationen
Für weitere Informationen siehe https://madhuakula.com/kubernetes-goat/docs/scenarios/scenario-22/securing-kubernetes-clusters-using-kyverno-policy-engine/welcome/