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

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 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 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 :

Last updated