Kubernetes Kyverno bypass

L'auteur original de cette page est Guillaume

Abuser des erreurs de configuration des politiques

Énumérer les règles

Avoir un aperçu peut aider à savoir quelles règles sont actives, dans quel mode et qui peut les contourner.

$ kubectl get clusterpolicies
$ kubectl get policies

Énumérer les Exclues

Pour chaque ClusterPolicy et Policy, vous pouvez spécifier une liste d'entités exclues, y compris :

  • Groupes : excludedGroups

  • Utilisateurs : excludedUsers

  • Comptes de service (SA) : excludedServiceAccounts

  • Rôles : excludedRoles

  • Rôles de cluster : excludedClusterRoles

Ces entités exclues seront exemptées des exigences de la politique, et Kyverno n'appliquera pas la politique pour elles.

Exemple

Examinons un exemple de clusterpolicy :

$ kubectl get clusterpolicies MYPOLICY -o yaml

Recherchez les entités exclues :

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

Dans un cluster, de nombreux composants, opérateurs et applications ajoutés peuvent nécessiter une exclusion d'une politique de cluster. Cependant, cela peut être exploité en ciblant des entités privilégiées. Dans certains cas, il peut sembler qu'un namespace n'existe pas ou que vous n'ayez pas la permission d'usurper l'identité d'un utilisateur, ce qui peut être un signe de mauvaise configuration.

Abuser de ValidatingWebhookConfiguration

Une autre façon de contourner les politiques est de se concentrer sur la ressource ValidatingWebhookConfiguration :

Kubernetes ValidatingWebhookConfiguration

Last updated