PT-2026-50159 · Gogs · Gogs
CVE-2026-52797
·
Publicado
2026-06-16
·
Atualizado
2026-07-30
CVSS v3.1
8.5
Alta
| Vetor | AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:H |
Nome do Software Vulnerável e Versões Afetadas
Gogs versões anteriores a 0.14.0
Description
Um usuário autorizado pode manipular o valor passado para o comando
git diff para ignorar o diretório de destino e gravar o resultado de uma comparação em um caminho arbitrário. Este problema de path traversal ocorre porque a aplicação não filtra adequadamente a entrada fornecida pelo usuário antes de passá-la para um comando do sistema. Especificamente, o endpoint POST '/:user/:repo/ preview/:branch/:path to file' processa a variável :path to file usando a função DiffPreviewPost(), que subsequentemente chama a GetDiffPreview(). Ao utilizar sequências específicas de caracteres que exploram o comportamento da função path.Clean, um invasor pode burlar as verificações de validação e injetar o parâmetro --output no comando git diff. Isso permite que o invasor sobrescreva arquivos críticos, como o banco de dados gogs.db ou o arquivo de configuração app.ini, podendo levar a uma negação de serviço (DoS).Recommendations
Atualizar para a versão 0.14.0.
Na função
DiffPreviewPost(), filtre a variável treePath e passe a variável entry em seu lugar.
Utilize a função pathutil.Clean para filtrar a variável treePath em vez da função path.Clean da biblioteca padrão do Go.Exploit
Correção
Path traversal
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Gogs