Uma nova vulnerabilidade encontrada em aplicativos baseados em GoLang permite que um agente de ameaças ignore validações sob certas condições e obtenha acesso não autorizado a aplicativos nativos da nuvem, descobriram pesquisadores da Oxeye .
A fonte de “ParseThru” – como a vulnerabilidade recém-descoberta foi apelidada – é o uso de métodos de análise de URL inseguros construídos na linguagem.
Sobre a vulnerabilidade “ParseThru”
GoLang é uma linguagem de programação nativa da nuvem popular. Reduz o número de dependências de desenvolvimento de software e tem uma curva de aprendizado curta. Usado para desenvolver muitos aplicativos nativos da nuvem, o GoLang está por trás de um grande número de aplicativos escritos para a nuvem, incluindo ambientes Kubernetes .
Cada linguagem de programação tem sua própria implementação de lógica de análise de URL. GoLang usa a biblioteca ‘net/url’ para analisar URLs. Antes da versão 1.17 da linguagem de programação, o GoLang considerava o ponto e vírgula na parte de consulta da URL como um delimitador válido. No entanto, após a versão 1.17, o GoLang alterou esse comportamento e agora o método “parseQuery” retornará um erro se a parte da consulta da URL contiver um ponto e vírgula. Embora esse método tenha sido corrigido para retornar corretamente um erro quando a entrada contém um ponto e vírgula, um dos métodos responsáveis por obter a string de consulta analisada ignora o erro retornado.
Como resultado, quando uma API pública baseada em GoLang baseada em GoLang versão superior a 1.17 se comunica com um serviço interno executando GoLang anterior à v1.17. Quando um usuário faz uma solicitação http ao primeiro serviço, fornecendo um parâmetro de consulta, o serviço determinará se deve passar a solicitação com base no parâmetro fornecido. Se um ponto e vírgula for adicionado ao parâmetro nomeado, o primeiro serviço ignorará sua existência. Nenhuma lógica será feita com base no valor real do parâmetro. Neste ponto, a requisição é encaminhada ao serviço interno, recebendo e tratando a requisição este último recebe a transação e trata o parâmetro sem o ponto e vírgula. Isso significa que os criminosos podem contrabandear solicitações contendo parâmetros de consulta que normalmente seriam rejeitados.
Projetos de código aberto vulneráveis
Ao realizar esta pesquisa, a Oxeye descobriu várias instâncias desse comportamento em vários projetos de código aberto que resultaram em várias vulnerabilidades.
Três projetos vulneráveis identificados incluem:
- Projeto graduado pela CNCF Harbor, um registro de código aberto que protege artefatos com políticas e controle de acesso baseado em função
- Traefik, um proxy reverso http moderno e balanceador de carga que facilita a implantação de microsserviços
- Skipper, roteador http e proxy reverso para composição de serviços.
Para esses e outros projetos de código aberto, a equipe de pesquisa da Oxeye conseguiu contornar a lógica crítica do aplicativo usando essa vulnerabilidade para explorar o aplicativo para executar várias ações não autorizadas.
“Com nossos especialistas descobrindo esse problema de segurança, agora recomendamos que os aplicativos baseados em GoLang em uso sejam revisados para garantir que a correção e/ou correção adequada seja aplicada”, disse Ron Vider, CTO e cofundador da Oxeye.
“Como observado acima, a revisão inicial de Gal Goldshtein e Daniel Abeles revelou que vários projetos significativos de código aberto foram impactados por esse caso extremo. Para ajudar na correção, estamos fornecendo um mergulho técnico mais profundo nessas vulnerabilidades.”
FONTE: HELPNET SECURITY