OpenShift - SCC bypass
O autor original desta página é Guillaume
Namespaces Privilegiados
Por padrão, SCC não se aplica nos seguintes projetos:
default
kube-system
kube-public
openshift-node
openshift-infra
openshift
Se você implantar pods em um desses namespaces, nenhum SCC será aplicado, permitindo a implantação de pods privilegiados ou montagem do sistema de arquivos do host.
Rótulo de Namespace
Existe uma maneira de desativar a aplicação do SCC no seu pod de acordo com a documentação da RedHat. Você precisará ter pelo menos uma das seguintes permissões:
Criar um Namespace e criar um Pod neste Namespace
Editar um Namespace e criar um Pod neste Namespace
O rótulo específico openshift.io/run-level
permite aos usuários contornar SCCs para aplicações. Conforme a documentação da RedHat, quando este rótulo é utilizado, nenhum SCC é aplicado a todos os pods dentro desse namespace, removendo efetivamente quaisquer restrições.
Adicionar Rótulo
Para adicionar o rótulo em seu namespace:
Para criar um namespace com o rótulo através de um arquivo YAML:
Agora, todos os novos pods criados no namespace não devem ter nenhum SCC
Na ausência de SCC, não há restrições na definição do seu pod. Isso significa que um pod malicioso pode ser facilmente criado para escapar para o sistema host.
Agora, tornou-se mais fácil escalar privilégios para acessar o sistema host e posteriormente assumir o controle de todo o cluster, ganhando privilégios de 'cluster-admin'. Procure a parte de Pós-Exploração do Nó na seguinte página:
Attacking Kubernetes from inside a PodRótulos personalizados
Além disso, com base na configuração do alvo, alguns rótulos / anotações personalizados podem ser usados da mesma forma que no cenário de ataque anterior. Mesmo que não seja feito para isso, os rótulos podem ser usados para conceder permissões, restringir ou não um recurso específico.
Tente procurar por rótulos personalizados se puder ler alguns recursos. Aqui está uma lista de recursos interessantes:
Pod
Deployment
Namespace
Service
Route
Listar todos os namespaces privilegiados
Exploração avançada
No OpenShift, como demonstrado anteriormente, ter permissão para implantar um pod em um namespace com o rótulo openshift.io/run-level
pode levar a uma tomada de controle direta do cluster. Do ponto de vista das configurações do cluster, essa funcionalidade não pode ser desativada, pois é inerente ao design do OpenShift.
No entanto, medidas de mitigação como o Open Policy Agent GateKeeper podem impedir que os usuários definam esse rótulo.
Para contornar as regras do GateKeeper e definir esse rótulo para executar uma tomada de controle do cluster, os atacantes precisariam identificar métodos alternativos.
Referências
Last updated