Kubernetes Kyverno bypass

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 visando 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

Last updated