Fatores de ameaça do Kubernetes gerenciado
Em um ambiente Kubernetes gerenciado, abordar a segurança envolve entender e mitigar ameaças em várias instâncias. Aqui está um detalhamento dos fatores de ameaça em instâncias específicas:
Conta comprometida
- Fator de ameaça: um invasor obtém acesso a um cluster do Kubernetes por meio de credenciais roubadas, tokens de API ou chaves. Isso pode levar a acesso não autorizado, roubo de dados e implantações maliciosas.
- Atenuação: implemente mecanismos de autenticação forte, autenticação multifator (MFA), rotação regular de credenciais e princípios de acesso de privilégios mínimos.
Imagens vulneráveis ou mal configuradas
- Fator de ameaça: imagens de contêiner com vulnerabilidades ou configurações incorretas podem ser exploradas por invasores uma vez implantadas. Essas vulnerabilidades podem incluir software desatualizado, configurações padrão inseguras ou segredos incorporados.
- Atenuação: use ferramentas de verificação de imagem para detetar vulnerabilidades antes da implantação, aplique políticas de proveniência de imagem e adote um processo de assinatura de imagem de contêiner.
Configuração incorreta do ambiente
- Fator de ameaça: configurações incorretas nas configurações do Kubernetes ou nos descritores de deployment podem expor clusters a ataques. Problemas comuns incluem interfaces de painel expostas, configurações RBAC excessivamente permissivas e pontos de extremidade não seguros.
- Mitigação: Siga as práticas recomendadas para configuração segura, audite regularmente as configurações com ferramentas automatizadas e empregue controladores de admissão para impor a conformidade com as políticas.
Nível de ataque ao aplicativo
- Fator de ameaça: os aplicativos executados em contêineres podem ser vulneráveis a vetores tradicionais de ataque da Web, como injeção de SQL ou script entre sites (XSS), que podem comprometer o contêiner ou levar a uma maior exploração do cluster.
- Atenuação: empregue práticas recomendadas de segurança de aplicativos, como validação de entrada e codificação de saída, e use WAFs (Web Application Firewalls). Implemente segurança no pipeline de integração contínua (CI)/entrega contínua e/ou implantação (CD), incluindo ferramentas de análise estática e dinâmica.
Ataque de nível de nó
- Fator de ameaça: se um invasor obtiver acesso a um nó do Kubernetes, ele poderá escalar privilégios para controlar todo o cluster. Vulnerabilidades podem surgir de sistemas operacionais desatualizados ou componentes do Kubernetes.
- Mitigação: mantenha os nós atualizados com os patches de segurança mais recentes, restrinja o acesso aos nós usando políticas de rede e firewalls e empregue sistemas de deteção de intrusão baseados em host (HIDS).
Tráfego não autorizado
- Fator de ameaça: o acesso não autorizado de ou para o cluster pode ocorrer se as políticas de rede não estiverem configuradas corretamente, permitindo que os invasores exfiltrem dados, forneçam malware ou explorem serviços expostos.
- Mitigação: implemente políticas de rede rígidas para controlar o tráfego de entrada e saída, segregar cargas de trabalho confidenciais usando namespaces e monitorar o tráfego em busca de padrões anômalos.
Lidar com essas ameaças em um ambiente Kubernetes gerenciado requer uma abordagem de segurança em camadas que engloba práticas específicas do Kubernetes e medidas de segurança tradicionais. Monitoramento contínuo, auditorias regulares e aderência ao princípio de menor privilégio em todos os aspetos do cluster são componentes essenciais de uma estratégia de segurança robusta do Kubernetes.
Técnicas de ataque comuns
- Explorar imagens vulneráveis - um aplicativo vulnerável voltado para o público em um cluster que permite o acesso inicial ao cluster. Casos infames: SolarWinds, Log4j
- Aceder a aplicações expostas - uma interface sensível exposta à Internet representa um risco de segurança. Algumas estruturas populares não foram concebidas para serem expostas à Internet e, portanto, não exigem autenticação por padrão. Assim, expô-los à internet permite o acesso não autenticado a uma interface sensível que pode permitir a execução de código ou a implantação de contêineres no cluster por um ator mal-intencionado. Exemplos de tais interfaces que foram vistas exploradas incluem Apache NiFi, Kubeflow, Argo Workflows, Weave Scope e o painel do Kubernetes.
- Implantar contêineres backdoor - Os invasores executam seu código mal-intencionado em um contêiner no cluster. Usando os controladores Kubernetes, como DaemonSets ou Deployments, os invasores garantiram que um número constante de contêineres fosse executado em um ou em todos os nós do cluster.
- Abuso sobre funções permissivas SA – Conta de serviço (SA) representa uma identidade de aplicativo no Kubernetes. Por padrão, uma SA é montada em cada pod criado no cluster. Usando a SA, os contêineres no pod podem enviar solicitações para o servidor de API do Kubernetes. Os invasores que obtêm acesso a um pod acessam o token SA e executam ações no cluster, de acordo com as permissões SA. Se o RBAC não estiver habilitado, a SA terá permissões ilimitadas no cluster. Se o RBAC estiver habilitado, suas permissões serão determinadas pelos RoleBindings e ClusterRoleBindings associados a ele.
- Escape para o host - o volume hostPath monta um diretório ou um arquivo do host para o contêiner. Os invasores que têm permissões para criar um novo contêiner no cluster podem criar um com um volume de hostPath gravável e ganhar persistência no host subjacente. Por exemplo, este último pode ser alcançado através da criação de um trabalho cron no host.