Kubernetes OPA Gatekeeper bypass
Reading time: 2 minutes
L'auteur original de cette page est Guillaume
Abus de mauvaise configuration
É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 appliquer 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. C'est "une simple interface web en lecture seule pour visualiser l'état des politiques OPA Gatekeeper dans un cluster Kubernetes."

Recherchez le service exposé :
$ 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 l'application aux cinq espaces de noms spécifiés.
Contournement
Avec un aperçu complet 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 des espaces de noms sur liste blanche ou exclus où la règle ne s'applique pas, puis effectuez votre attaque là-bas.
Abusing Roles/ClusterRoles in Kubernetes
Abus de ValidatingWebhookConfiguration
Une autre façon de contourner les contraintes est de se concentrer sur la ressource ValidatingWebhookConfiguration :
Kubernetes ValidatingWebhookConfiguration