PT-2026-51629 · Gogs · Gogs
Publicado
2026-06-23
·
Atualizado
2026-06-23
·
CVE-2026-52811
CVSS v4.0
9.0
Crítica
| Vetor | AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
Nome do Software Vulnerável e Versões Afetadas
Gogs versões 0.14.0 até 0.14.2
Description
Existe um problema onde a função
UploadRepoFiles verifica links simbólicos apenas na folha do destino do upload usando osx.IsSymlink(), diferentemente de outras funções que validam cada componente do caminho. Um invasor com acesso de escrita ao repositório pode explorar isso realizando um upload multipart com um nome de arquivo contendo uma barra invertida literal. No Linux e macOS, o filepath.Base preserva barras invertidas, que são posteriormente convertidas em barras normais por pathx.Clean().Isso permite que o invasor redirecione a operação de escrita através de um link simbólico de diretório previamente commitado. Como o
iox.CopyFile() utiliza os.Create() sem a flag O NOFOLLOW, o kernel segue o link simbólico pai, permitindo que o invasor escreva bytes arbitrários em qualquer local onde o UID do Gogs tenha permissões de acesso. Alvos potenciais incluem ~git/.ssh/authorized keys para obter acesso SSH ou <repo>.git/hooks/post-receive para alcançar a execução remota de código (RCE) no próximo push. Versões para Windows não são afetadas devido ao tratamento diferente de separadores de caminho e configurações padrão do git.Recommendations
Para as versões 0.14.0 até 0.14.2:
- Substitua a verificação de folha em
repo editor.gopela funçãohasSymlinkInPath()para validar todo o caminho. - Valide o
opts.TreePathantes de chamaros.MkdirAll()para evitar a criação de diretórios fora do repositório. - Atualize o
iox.CopyFile()para usar a flagO NOFOLLOWao abrir arquivos para evitar que links simbólicos sejam seguidos na camada de syscall. - Modifique o
database.NewUploadpara rejeitar qualquernameque contenha/ou `` após a chamada dopathx.Clean(). - Como mitigação temporária, restrinja o acesso de escrita aos repositórios apenas a usuários confiáveis.
Correção
Link Following
Path traversal
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Identificadores relacionados
Produtos afetados
Gogs