Kubernetes - OPA Gatekeeper bypass

L'auteur original de cette page est Guillaume

Abus de configuration incorrecte

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

Avec le CLI

$ 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 et Constraint peuvent être utilisés dans Open Policy Agent (OPA) Gatekeeper pour imposer des règles sur les ressources Kubernetes.

$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

Avec l'interface graphique

Une interface graphique peut également être disponible pour accéder aux règles OPA avec Gatekeeper Policy Manager. Il s'agit d'un "interface web en lecture seule simple pour visualiser l'état des politiques OPA Gatekeeper dans un cluster Kubernetes."

Recherchez la route exposée :

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

Espaces de noms exclus

Comme illustré dans l'image ci-dessus, certaines règles peuvent ne pas être appliquées universellement à tous les espaces de noms ou utilisateurs. Au lieu de cela, elles fonctionnent sur une base de liste blanche. Par exemple, la contrainte liveness-probe est exclue de s'appliquer aux cinq espaces de noms spécifiés.

Contournement

Avec une vue d'ensemble complète de la configuration de Gatekeeper, il est possible d'identifier des erreurs de configuration potentielles qui pourraient être exploitées pour obtenir des privilèges. Recherchez les espaces de noms autorisés ou exclus où la règle ne s'applique pas, puis menez votre attaque à cet endroit.

Abusing Roles/ClusterRoles in Kubernetes

Références

Last updated