Kubernetes Kyverno bypass
Reading time: 1 minute
O autor original desta página é Guillaume
Abusando da má configuração de políticas
Enumerar regras
Ter uma visão geral pode ajudar a saber quais regras estão ativas, em qual modo e quem pode contorná-las.
$ kubectl get clusterpolicies
$ kubectl get policies
Enumerar Excluídos
Para cada ClusterPolicy e Policy, você pode especificar uma lista de entidades excluídas, incluindo:
- Grupos:
excludedGroups
- Usuários:
excludedUsers
- Contas de Serviço (SA):
excludedServiceAccounts
- Funções:
excludedRoles
- Funções de Cluster:
excludedClusterRoles
Essas entidades excluídas estarão isentas dos requisitos da política, e o Kyverno não aplicará a política para elas.
Exemplo
Vamos explorar um exemplo de clusterpolicy:
$ kubectl get clusterpolicies MYPOLICY -o yaml
Procure as entidades excluídas:
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:*
Dentro de um cluster, numerosos componentes, operadores e aplicações adicionados podem necessitar de exclusão de uma política de cluster. No entanto, isso pode ser explorado ao direcionar entidades privilegiadas. Em alguns casos, pode parecer que um namespace não existe ou que você não tem permissão para se passar por um usuário, o que pode ser um sinal de má configuração.
Abusando do ValidatingWebhookConfiguration
Outra maneira de contornar políticas é focar no recurso ValidatingWebhookConfiguration:
Kubernetes ValidatingWebhookConfiguration
Mais informações
Para mais informações, consulte https://madhuakula.com/kubernetes-goat/docs/scenarios/scenario-22/securing-kubernetes-clusters-using-kyverno-policy-engine/welcome/