Vulnerabilidades Gogs podem colocar seu código-fonte em risco

Quatro vulnerabilidades na solução de serviço Git auto-hospedada de código aberto Gogs podem permitir que os invasores roube, modifiquem ou excluam código-fonte valioso.

Pesquisadores da SonarSource revelaram em um blog publicado na terça-feira que descobriram as quatro falhas em abril passado enquanto analisavam a solução popular para o código-fonte auto-hospedagem. Gogs tem mais de 44.000 estrelas no GitHub e sua imagem Docker tem mais de 90 milhões de downloads.

Três das falhas permitem a “injeção de arquivo”, que é uma forma indireta de injeção de comando que pode levar à leitura, modificação ou exclusão do código hospedado em um servidor Gogs vulnerável. Uma quarta falha também permite a “deleção de arquivos internos”.

Um usuário autenticado pode explorar essas vulnerabilidades em uma instância que tenha o servidor SSH integrado ativado. As instâncias de Gogs expostas com registro habilitada podem permitir que um invasor crie uma conta para obter a chave SSH privada necessária para explorar as falhas. Se um invasor não conseguir registrar sua própria conta, eles precisarão comprometer outra conta ou roubar a chave privada de um usuário para utilizar as falhas.

As vulnerabilidades são exploráveis em instâncias Ubuntu e Debian devido à implementação do comando env, enquanto as instâncias do Windows não são exploráveis, pois não usam o comando env.

O post do blog da SonarSource descreveu os detalhes da falha de injeção do primeiro argumento, que se baseia na opção de corda dividida do comando env. O comando env é usado para definir variáveis ambientais através de solicitações SSH para o servidor Gogs. Usando a opção split-spring para dividir dois argumentos permite que a primeira metade do argumento seja executada como um comando no servidor.

A SonarSource planejava publicar uma segunda postagem no blog, que fornecerá detalhes técnicos para as três falhas restantes. O primeiro blog oferece opções de mitigação para as quatro falhas, incluindo instruções para baixar um patch desenvolvido pela SonarSource para a versão 0.13.0 de Gogs, na ausência de um patch oficial.

Além de instalar o patch, que a SonarSource alertou que poderia causar problemas de funcionalidade devido à falta de testes extensivos, os usuários também podem impedir a exploração desativando o servidor SSH embutido ou desativando o SSH completamente se não for necessário. Os usuários do Gogs também podem desativar novos registros de usuários para impedir que um invasor obtenha a chave privada necessária para realizar os ataques.

Uma linha do tempo publicada pela SonarSource, a partir do relatório inicial das edições para os mantenedores de Gogs em 20 de abril de 2023, e concluindo com a publicação do primeiro post no blog, mostra que os mantenedores de Gogs confirmaram o recebimento do relatório em 28 de abril de 2023 e responderam pela última vez à SonarSource em dezembro. 5.

A SonarSource publicou seu próprio patch e post no blog após sete meses sem contato adicional dos mantenedores de Gogs, durante o qual nenhuma correção foi liberada para vulnerabilidades, de acordo com o post. Os autores do blog disseram que informaram os mantenedores de Gogs de sua intenção de publicar o post em 3 de junho de 2024.

No geral, a SonarSource recomendou que os usuários mudassem sua hospedagem de código-fonte de Gogs para Gitea, um projeto semelhante que começou como um fork dos Gogs originais. Os autores do blog afirmam que Gitea é mais ativamente mantido e contém correções para os quatro problemas de Gogs identificados pela SonarSource.

Os usuários de Gogs podem potencialmente detectar a exploração da primeira falha verificando sua atividade de rede para argumentos env começando com – string de divisão ou sua forma encurtada, –s. A segunda falha, que envolve a injeção de argumentos ao marcar novas versões, pode ser detectada no nível da rede procurando uma solicitação HTTP com um caminho começando com /-user-/?repo?/_preview/?branch?/–. Os valores de usuário, repo e branch dependerão do repositório usado para o ataque.

As outras duas falhas, envolvendo a exclusão de arquivos internos e injeção de argumentos durante a visualização das mudanças, não têm métodos confiáveis para a detecção de exploração, disseram os autores.

Uma pesquisa Shodan revelou 7.300 instâncias abertas de Gogs na internet, com a maioria na China e quase 600 nos Estados Unidos, embora os autores não pudessem confirmar quantos desses casos eram exploráveis e disse que não tinha evidências de atores de ameaça que explorassem as vulnerabilidades na natureza.