Skip to main content

Como detectar e corrigir a vulnerabilidade CVE-2019-11249 do Kubernetes

Escrito por
Headshot of Hayley Denbraver

Hayley Denbraver

kubernetes tumb

11 de março de 2020

0 minutos de leitura

Nos últimos anos, o Kubernetes ganhou enorme destaque no mundo da tecnologia e se tornou o sistema de orquestração de contêineres na nuvem mais popular. Ele continua sendo uma ferramenta poderosa e útil de código aberto para desenvolvedores, mas, como qualquer ferramenta, precisa ser usado com cuidado. Por isso, você deve tomar medidas para proteger seus clusters. Hoje vamos falar sobre duas vulnerabilidades recentes (CVE-2019-11247 e CVE-2019-11249) e como você pode corrigi-las.

Vulnerabilidades de traversal de diretório no Kubernetes

O traversal de diretório é um tipo de ataque que permite que hackers acessem diretórios e arquivos restritos fora do diretório raiz do servidor. Ao manipular URLs, é possível forçar um aplicativo a revelar arquivos "restritos" ou executar comandos para os quais o usuário tecnicamente não deveria ter permissão.

Ao contrário de outros tipos de ataque, o traversal de diretório explora brechas na política de segurança do desenvolvedor, que, de resto, funciona corretamente. Não necessariamente há bugs no código. Tudo está funcionando como deveria. O problema é que as permissões, os caminhos ou as configurações de acesso a arquivos estão incorretos ou são insuficientes.

O problema começou há quase dois anos com uma clássica vulnerabilidade de traversal de diretório na operação kubectl cp. Nesse caso, código malicioso em contêineres podia gravar qualquer arquivo em qualquer caminho no nó (máquina) de origem da cópia, devido ao tratamento inseguro de dados TAR. Não era difícil percorrer o diretório para descobrir nomes ou arquivos.

As correções seguintes tentaram higienizar os caminhos dos diretórios removendo os trechos de traversal, mas o problema não foi totalmente resolvido. Após a aplicação do patch, descobriu-se que agentes maliciosos ainda podiam manipular caminhos criando e seguindo links simbólicos a partir dos cabeçalhos dos arquivos TAR.

No início de 2019, foi identificada uma terceira falha de traversal de diretório na operação kubectl cp. Agentes maliciosos podiam copiar arquivos e diretórios entre contêineres e nós usando um binário TAR malicioso em um contêiner baixado. Na prática, um hacker podia substituir ou criar arquivos na máquina de um usuário, mesmo que o local estivesse fora do diretório de destino da operação kubectl cp.

CVE-2019-11249

Em agosto, o Kubernetes lançou a CVE-2019-11249, com uma correção que finalmente resolveu a vulnerabilidade de traversal de diretório. Agora, a operação kubectl cp verifica com muito mais rigor o caminho de destino de cada arquivo durante a descompactação de arquivos TAR. Não é mais possível copiar arquivos descompactados para caminhos fora do diretório de destino da operação kubectl cp original.

Uma breve análise da CPE-2019-11247

Na mesma época em que a vulnerabilidade de traversal de diretório foi corrigida, foi descoberta a vulnerabilidade CVE-2019-11247. Ela permitia que agentes maliciosos lessem, modificassem ou excluíssem recursos personalizados em todo o cluster, mesmo que as permissões atribuídas às suas funções só permitissem acessar recursos dentro do próprio namespace, ou seção do cluster.

A vulnerabilidade de traversal de diretório e a CPE-2019-11247 são semelhantes: em ambos os casos, usuários podiam acessar partes do contêiner (e, consequentemente, dos nós) para as quais não deveriam ter permissão.

No entanto, a CPE-2019-11247 era uma vulnerabilidade causada pela forma como o servidor da API interpretava as permissões de segurança em relação ao escopo do endpoint da API. Já a vulnerabilidade de traversal de diretório resultava de permissões de segurança insuficientes. A causa fundamental era um problema de controle de acesso baseado em função (RBAC). Em outras palavras, se um recurso personalizado global (em todo o cluster) estivesse associado a um namespace e a conta que o acessava tivesse uma definição de função específica (como um curinga), seria possível contornar o namespace e manipular recursos globais.

Etapas para corrigir as CVE-2019-11247 e CVE-2019-11249

As duas vulnerabilidades são classificadas como de risco médio a alto e devem ser corrigidas o quanto antes. Há duas medidas recomendadas para corrigir a CVE-2019-11247 e a CVE-2019-11249:

  • Atualize o Kubernetes para uma versão com o patch aplicado:Recomendamos enfaticamente que todos os usuários atualizem os clusters e os clientes kubectl para uma versão com o patch aplicado. As versões 1.13.9, 1.14.5 e 1.15.2 do Kubernetes incluem correções para as duas vulnerabilidades. Quem usa a versão 1.12 ou anterior deve consultar a documentação oficial para determinar como fazer a atualização. Se você usa a versão 1.12 ou anterior, é hora de atualizar: a versão 1.12 chegou ao fim da vida útil.

  • Se não for possível atualizar, remova as definições de função com curingas de todo o cluster:Alguns usuários de plataformas gerenciadas talvez não consigam atualizar imediatamente. Nesse caso, remova as permissões curinga (indicadas por *) dos recursos ou dos apiGroups.

Não remova o RBAC de um cluster

Clusters sem RBAC habilitado não são afetados pela CVE-2019-11249 e, em teoria, também não são afetados pela CVE-2019-11247. No entanto, não usar RBAC representa um risco de segurança ainda maior, pois todas as contas terão acesso root. Não remova o RBAC de um cluster, nem mesmo como "solução rápida temporária".

Conclusões

Os efeitos dessa vulnerabilidade do Kubernetes variam de acordo com as características de cada cluster e os recursos usados nele. Ainda assim, vulnerabilidades no Kubernetes são um problema sério, já que cada vez mais organizações dependem dele para orquestrar seus contêineres na nuvem. Acredita-se que os patches mais recentes corrijam a CVE-2019-11247 e a CVE-2019-11249.

No entanto, segurança é um trabalho contínuo. Esses patches mostram que hackers sempre encontrarão maneiras criativas de explorar brechas e bugs no código. Mantenha-se em segurança: atualize seus sistemas e fique por dentro das novidades sobre segurança do Kubernetes.

Comece a participar de desafios de Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.