Kubernetes Kyverno bypass

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 Anforderungen der Richtlinie ausgenommen, 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

Suche 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 eine Ausnahme von einer Cluster-Richtlinie erfordern. Dies kann jedoch ausgenutzt werden, indem privilegierte Entitäten ins Visier genommen werden. In einigen Fällen kann es den Anschein haben, dass 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

Last updated