Radar Tech: CVE-2026-3854 — Quando um git push vira RCE por injeção em protocolo interno
A Wiz Research descobriu que qualquer usuário autenticado do GitHub podia executar comandos arbitrários nos servidores backend com um único git push. Entenda a cadeia de exploração, o papel da engenharia reversa assistida por IA e o que times de arquitetura podem aprender sobre hardening de protocolos internos.
O que aconteceu?
No dia 28 de abril de 2026, a Wiz Research divulgou publicamente a CVE-2026-3854: uma vulnerabilidade crítica (CVSS 8.7) na infraestrutura interna de git do GitHub que permitia que qualquer usuário autenticado executasse comandos arbitrários nos servidores backend — com nada mais que um único git push.
Em questão de minutos, um atacante podia ler repositórios de milhões de outros usuários e organizações hospedados nos mesmos nós compartilhados.
Como funciona a cadeia de ataque?
A vulnerabilidade está no protocolo interno X-Stat, usado pelos serviços do GitHub para propagar metadados de segurança entre si.
- babeld (proxy Git) recebe as push options do usuário e as concatena no header X-Stat sem sanitizar ponto-e-vírgula (
;) — que é justamente o delimitador de campos do X-Stat. - gitrpcd e o pre-receive hook (escrito em Go) confiam cegamente no header e usam
split(';')com last-write-wins: se um campo aparece duas vezes, o último valor vence. - O atacante injeta
rails_env=developmentvia push option — isso faz o pre-receive hook desviar do caminho com sandbox para o caminho de execução direta. - Combinando com injeção de
custom_hooks_dir(com path traversal) erepo_pre_receive_hooks, o hook executa qualquer binário do sistema como o usuáriogit.
Resultado: RCE total no nó compartilhado, com acesso a todos os repositórios hospedados ali — independentemente de organização ou plano.
Por que isso importa para arquitetos de software?
A CVE-2026-3854 não é só mais um CVE — ela representa uma classe inteira de vulnerabilidade que cresce em importância com a adoção de arquiteturas multi-serviço:
1. Assimetria de confiança entre serviços
Cada serviço em uma pipeline assume que o anterior fez a validação correta. Quando um componente A gera um header e B confia cegamente, qualquer input não sanitizado em A se torna uma arma em B.
2. O perigo de parsers simples com last-write-wins
split(';') é rápido, mas perigoso quando o input contém dados do usuário. O padrão de "pegar o último valor" é particularmente traiçoeiro porque faz override silencioso.
3. Caminhos de código não-produção no binário de produção
O binário do pre-receive hook continha código funcional para execução direta (sem sandbox), ativado por uma flag de ambiente. Isso viola o princípio de "o que não está lá não pode ser explorado".
4. Engenharia reversa assistida por IA
A Wiz usou IDA MCP (AI-augmented reverse engineering) para analisar binários compilados do GitHub em escala. Isso marca uma mudança: agora é viável encontrar vulnerabilidades complexas em software fechado que antes exigiriam meses de trabalho manual.
O que times de arquitetura devem fazer?
- Sanitize delimitadores no produtor: nunca repasse input do usuário para um protocolo interno sem escapar ou validar os caracteres que separam campos.
- Implemente schema validation no consumidor: mantenha uma allowlist estática de campos esperados; rejeite qualquer campo inesperado.
- Elimine caminhos não-produção dos binários de produção: se
sandbox=falsenão é um cenário suportado, remova esse código. - Normalize caminhos antes de validar prefixos:
filepath.Clean()é simples e previne path traversal mesmo em campos "validados". - Documente com ADRs: cada decisão de segurança em protocolos internos merece um Architecture Decision Record que registre o problema, a solução e os trade-offs.
Mitigação
O GitHub corrigiu a vulnerabilidade no GitHub.com em 6 horas após o reporte. Para GitHub Enterprise Server, os patches foram liberados nas versões 3.14.24, 3.15.19, 3.16.15, 3.17.12, 3.18.6 e 3.19.3. 88% das instâncias GHES ainda estavam vulneráveis no momento da divulgação — se você administra uma, atualize imediatamente.
📌 Quer aprender como documentar e implementar mitigações contra essa classe de vulnerabilidade? Confira nosso pacote de prompt para ADR de segurança em protocolos internos no ArchPrompts — um sistema completo de 6 arquivos com prompt principal, regras, exemplos e templates de variação.