Kubernetes OPA Gatekeeper bypass
Reading time: 1 minute
O autor original desta página é Guillaume
Abusando de má configuração
Enumerar regras
Ter uma visão geral pode ajudar a saber quais regras estão ativas, em qual modo e quem pode contorná-las.
Com o 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 e Constraint podem ser usados no Open Policy Agent (OPA) Gatekeeper para impor regras em recursos do Kubernetes.
$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels
Com a GUI
Uma Interface Gráfica do Usuário também pode estar disponível para acessar as regras OPA com Gatekeeper Policy Manager. É "uma simples interface web somente leitura para visualizar o status das políticas OPA Gatekeeper em um Cluster Kubernetes."

Procure pelo serviço exposto:
$ kubectl get services -A | grep gatekeeper
$ kubectl get services -A | grep 'gatekeeper-policy-manager-system'
Namespaces excluídos
Como ilustrado na imagem acima, certas regras podem não ser aplicadas universalmente em todos os namespaces ou usuários. Em vez disso, elas operam com base em uma lista de permissões. Por exemplo, a restrição liveness-probe
é excluída da aplicação nos cinco namespaces especificados.
Bypass
Com uma visão abrangente da configuração do Gatekeeper, é possível identificar possíveis configurações incorretas que podem ser exploradas para obter privilégios. Procure por namespaces na lista de permissões ou excluídos onde a regra não se aplica e, em seguida, execute seu ataque lá.
Abusing Roles/ClusterRoles in Kubernetes
Abusando do ValidatingWebhookConfiguration
Outra maneira de contornar as restrições é focar no recurso ValidatingWebhookConfiguration :
Kubernetes ValidatingWebhookConfiguration