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: - Encontrado painel do Kubernetes exposto (nosso mal) - O painel tinha uma conta de serviço somente para visualização (achamos que isso era seguro) - A conta de serviço pode listar segredos em todos os namespaces - Credenciais da AWS encontradas em segredo - Usou credenciais da AWS para acessar o perfil da instância do EC2 - O perfil da instância tinha administrador completo do Kubernetes via IAM - Usei kubectl para criar pod privilegiado - Escapou para o nó - Acesso root a todo o cluster O que achamos que fizemos certo: - O painel era somente leitura - Os segredos foram criptografados em repouso - As políticas de rede estavam em vigor - Atualizações de segurança regulares O que perdemos: - O painel não deve ser exposto - As contas de serviço precisam do princípio do menor privilégio - Os segredos não devem conter credenciais da AWS (use o IRSA) - As políticas de segurança do pod não foram aplicadas - O acesso ao nó não foi reforçado A correção levou 2 semanas: - Removido totalmente o painel do Kubernetes - Implementação do IRSA para todos os pods de acesso à AWS - Aplicação de padrões rígidos de segurança PSPs/Pod...