Novo bug no Kubernetes permite a invasor privilégios no Windows

Invasores podem explorar arquivos de configuração do YAML para executar comandos mal-intencionados em hosts do Windows
Da Redação
14/09/2023

A versão mais recente do Kubernetes lançada no mês passado inclui patches para uma classe inteira de vulnerabilidades que permitem que os invasores abusem da propriedade subPath dos arquivos de configuração do YAML para executar comandos mal-intencionados em hosts Windows. 

O Kubernetes é um sistema de orquestração de contêineres amplamente popular que é usado por organizações para automatizar a implantação e o gerenciamento de aplicativos executados em contêineres. Já o YAML é uma linguagem usada para escrever arquivos de configuração e outros arquivos de gerenciamento para o Kubernetes. Portanto, faz sentido que ele seja um alvo para invasores em potencial, pois é uma maneira direta de enviar a entrada do usuário para o mecanismo do Kubernetes e tê-la analisada e interpretada

O pesquisador de segurança da Akamai, Tomer Peled, que descobriu recentemente uma vulnerabilidade de alta criticidade no Kubernetes, atribuída como CVE-2023-3676 e escore de 8.8 sistema de pontuação comum de vulnerabilidades (CVSS), diz que a  falha permite a execução remota de código com privilégios de gerenciamento de sistema em todos os pontos de extremidade do Windows dentro do cluster Kubernetes. Para explorar essa vulnerabilidade, o invasor precisa aplicar um arquivo YAML malicioso no cluster.

A descoberta da vulnerabilidade levou Peled a desvendar outros dois problemas semelhantes, já que compartilham a mesma causa raiz: chamada de função insegura e falta de higienização de entrada do usuário. “Para explorar essa vulnerabilidade, o invasor precisa aplicar um arquivo YAML mal-intencionado no cluster”, disse ele.

Problemas de análise do YAML levaram a vulnerabilidades do Kubernetes antes. Por exemplo, a vulnerabilidade de execução remota de código, o CVE-2022-1471, no analisador SnakeYaml afetou o cliente Java Kubernetes, enquanto a falha CVE-2021-25749 permitiu que nomes de usuário com erros ortográficos fossem incluídos em um arquivo YAML, resultando na execução de cargas de trabalho como raiz. As falhas, identificadas como CVE-2017-1002101 e CVE-2021-25741, mostraram como a subpropriedade subPath em um arquivo YAML pode ser usada em combinação com links simbólicos para acessar arquivos fora do contêiner, quebrando o isolamento. Foram essas duas últimas falhas que deram a Peled a ideia de investigar mais a questão.

O Kubernetes permite montar um diretório do sistema host dentro de um contêiner através de uma propriedade chamada volume. Esse é um recurso amplamente utilizado e vem com várias subpropriedades para definir o caminho do diretório no host e o caminho de montagem dentro do contêiner. O mountPath ainda tem uma propriedade subPath que, quando fornecida em um arquivo YAML, é processada pelo kubelet, um serviço principal do Kubernetes.

Peled descobriu que, quando a cadeia de caracteres subPath é processada, o kubelet também verifica se é um link simbólico, que faz parte das defesas colocadas em prática para as vulnerabilidades mais antigas. No entanto, ele faz isso por meio de um comando do PowerShell que é invocado pelo “exec. Comando” chamada de função. Isso abre a possibilidade de que um invasor possa anexar código do PowerShell à cadeia de caracteres subPath onde ele seria executado.

Veja isso
Clusters Kubernetes estão sob ataque em centenas de empresas
Kubernetes é ponto fraco na defesa a ransomware, diz estudo

“O PowerShell permite que os usuários avaliem valores dentro de cadeias de caracteres antes de serem usados”, explicou o pesquisador. Essa vulnerabilidade agora é rastreada como CVE-2023-3676 e foi corrigida no Kubernetes 1.28, mas também levou à descoberta e correção de mais duas vulnerabilidades de injeção de comando semelhantes: CVE-2023-3955 e CVE-2023-3893. A falha afeta o Kubernetes no Windows em sua configuração padrão, mas o invasor precisa obter privilégios de aplicação a um nó.

“A equipe do Kubernetes optou por corrigir essa classe de vulnerabilidades passando parâmetros de variáveis de ambiente em vez de entrada do usuário”, disse Peled. “Ao transmitir os valores dessa maneira, os parâmetros são tratados como cadeias de caracteres, portanto, eles não serão avaliados como expressões pelo PowerShell.”Ele ressalta que, se não puderem atualizar para a versão corrigida imediatamente, os administradores poderão desativar o uso do Volume.Subpath, mas isso também prejudicará um recurso e funcionalidade comumente usados.

Outra opção é usar o Open Policy Agent (OPA), um agente de código aberto que pode executar ações baseadas em políticas com base nos dados recebidos. Os administradores podem criar regras para bloquear que certos arquivos YAML sejam implementados usando a linguagem Rego no OPA, e a Akamai fornece um exemplo para tal regra de bloqueio em sua postagem no blog.

Compartilhar:

Últimas Notícias