Um testador de penetração obteve acesso root ao nosso cluster Kubernetes em 15 minutos. Aqui está o que eles exploraram. A cadeia de ataque: - Encontrou o painel do Kubernetes exposto (culpa nossa) - O painel tinha uma conta de serviço apenas para visualização (pensávamos que isso era seguro) - A conta de serviço podia listar segredos em todos os namespaces - Encontrou credenciais da AWS em um segredo - Usou as credenciais da AWS para acessar o perfil da instância EC2 - O perfil da instância tinha acesso total de administrador do Kubernetes via IAM - Usou kubectl para criar um pod privilegiado - Escapou para o nó - Acesso root a todo o cluster O que pensamos que fizemos certo: - O painel era somente leitura - Os segredos estavam criptografados em repouso - Políticas de rede estavam em vigor - Atualizações de segurança regulares O que perdemos: - O painel não deveria estar exposto de forma alguma - As contas de serviço precisam do princípio do menor privilégio - Os segredos não deveriam conter credenciais da AWS (use IRSA em vez disso) - As Políticas de Segurança de Pods não foram aplicadas - O acesso ao nó não foi endurecido A correção levou 2 semanas: - Removido o painel do Kubernetes completamente - Implementado IRSA para todo o acesso AWS dos pods - Aplicadas PSPs/Normas de Segurança de Pods rigorosas...