Nova falha de RCE no Gitea permite executar shell commands via Git hook em repositórios
29 de Julho de 2026

A Gitea, plataforma Git auto-hospedada, corrigiu uma vulnerabilidade crítica de execução remota de código.

Com acesso de gravação a um repositório, um usuário pode transformar conteúdo de patch controlado pelo atacante em um hook Git ativo e executar comandos de shell com a conta de serviço da Gitea.

Identificada como CVE-2026-60004, com pontuação CVSS de 9,8, a falha afeta as versões 1.17 e posteriores até a 1.27.1, já corrigida nessa versão.

A chamada vulnerável da API exige autenticação e permissão de gravação no repositório.

No entanto, a Gitea habilita o cadastro por padrão, o que permite que um visitante externo crie uma conta e um repositório normais em uma instalação sem alterações e explore o bug sem credenciais prévias.

A atualização para a versão 1.27.1 é a correção recomendada.

Em 27 de julho, a Gitea informou que as instâncias do Gitea Cloud seriam atualizadas automaticamente.

O aviso de segurança publicado em 28 de julho não afirma que a falha tenha sido explorada no mundo real, mas inclui código público de proof of concept.

Desativar o cadastro aberto pode eliminar o caminho público de criação de contas enquanto a atualização não é aplicada, mas isso não corrige a falha nem protege contra usuários já existentes com permissão de gravação em repositórios.

A vulnerabilidade foi reportada pelo pesquisador de segurança Shai Rod, conhecido como NightRang3r.

A Gitea o credita como responsável pela descoberta em seu aviso.

A rota afetada da Gitea chama reqToken(), que rejeita solicitações sem um usuário autenticado.

O caminho sem credenciais prévias vem da configuração padrão do projeto, que deixa o cadastro aberto, não exige e-mail nem aprovação manual, não marca novos usuários como restritos e não impõe limite padrão para a criação de repositórios.

O bug está no endpoint POST /api/v1/repos/{owner}/{repo}/diffpatch.

Segundo o aviso de segurança da Gitea, o endpoint aplica um patch fornecido dentro de um clone temporário bare compartilhado.

As versões vulneráveis chamam git apply com as opções --index, --recount, --cached e --binary, adicionando a opção de fallback de três vias -3 quando o servidor executa Git 2.32 ou posterior.

O atacante envia o mesmo patch duas vezes para criar um conflito add/add.

O fallback de três vias então faz o checkout do caminho indexado, mesmo com a operação usando --cached.

Como o clone temporário é bare, sua raiz é $GIT_DIR.

Um arquivo executável colocado em hooks/post-index-change, portanto, cai no diretório de hooks do Git e passa a ser ativado.

O Git o executa durante a atualização do índice.

A proof of concept faz login com uma conta normal, cria um repositório privado inicializado, envia o patch malicioso duas vezes e recupera a saída do comando.

Não há necessidade de callback para fora da rede.

O hook armazena a saída em objetos Git, cria uma branch com o resultado e permite que o atacante a obtenha por meio de smart HTTP autenticado.

Em 29 de julho de 2026, nenhuma das fontes primárias citadas informava se a falha foi explorada antes ou depois da disponibilidade da versão 1.27.1.

Se a exploração for bem-sucedida, o atacante obtém os privilégios da conta do sistema operacional usada pelo Gitea.

Dependendo de como a instância esteja isolada, a Gitea informou que isso pode expor segredos da aplicação e do ambiente, repositórios montados, credenciais e conteúdo de banco de dados, credenciais OAuth e serviços internos acessíveis.

A exploração ainda exige permissão de gravação no repositório, Git 2.32 ou posterior, o endpoint diffpatch habilitado e um sistema de arquivos temporário gravável e executável.

O cadastro padrão permite que um invasor obtenha a permissão necessária em uma instalação sem alterações.

A correção é fácil de passar despercebida no histórico de mudanças.

A Gitea alterou o clone temporário de bare para non-bare.

O comentário no código alerta explicitamente que comandos Git com --index podem operar na árvore de trabalho.

A mudança foi incorporada e levada de volta a versões anteriores em 26 de julho de 2026.

A versão 1.27.1 foi lançada em 27 de julho, e o aviso de segurança saiu em 28 de julho.

As notas de versão listaram a mudança em MISC como "refactor: git patch apply", e não na seção SECURITY.

Rod já havia antecipado a RCE junto com um problema separado de inclusão de arquivo, com uma prova de conceito que recuperava /etc/passwd de um host com Gitea 1.27.0.

Esse problema parece corresponder a uma mudança separada incluída na 1.27.1, que alterou o renderizador Org-mode da Gitea para que caminhos de #+INCLUDE sejam retornados como texto simples, em vez de serem lidos do sistema de arquivos do servidor.

A Gitea não publicou um aviso separado nem um CVE específico para o problema de inclusão de arquivo.

Publicidade

Proteja sua empresa contra hackers através de um Pentest

Tenha acesso aos melhores hackers éticos do mercado através de um serviço personalizado, especializado e adaptado para o seu negócio. Guardsi: qualidade, confiança e especialidade em segurança ofensiva de quem já protegeu centenas de empresas. Saiba mais...