TL;DR: o Go 1.26.6 e o Go 1.25.13 corrigem dez vulnerabilidades, duas delas na verificação da cadeia de módulos. Em cenários com GOPROXY malicioso — e, em um caso, GOSUMDB coordenado — conteúdo adulterado podia passar pela validação e chegar ao cache local. A atualização também fecha falhas de XSS em html/template, consumo excessivo de recursos em TLS, HTTP, XML, ASN.1 e URLs, além de problemas em IDNA e DNS. Atualize o toolchain, recompile os binários e examine projetos que tenham usado proxies de módulos não confiáveis.

As falhas mais críticas estão na cadeia de módulos

O lançamento de 13 de agosto de 2026 dá atenção especial a duas falhas no mecanismo que protege downloads de módulos Go.

A CVE-2026-56865 estava em x/mod/sumdb/tlog. Um GOPROXY malicioso podia forjar até dois tiles do log de transparência, fazer conteúdo de módulo controlado pelo atacante passar pela consulta ao GOSUMDB e persistir esse conteúdo no cache local. A correção passa a verificar corretamente cada tile contra seus pais.

A CVE-2026-56864 afetava x/mod/sumdb. Um GOSUMDB malicioso podia devolver hashes não autenticados e não relacionados à consulta. Com um proxy e um servidor de checksums agindo em conjunto, o cliente podia aceitar conteúdo ausente do log de transparência.

Isso não significa que qualquer uso normal de proxy.golang.org foi comprometido. O cenário exige infraestrutura maliciosa ou comprometida. O risco cresce em empresas que configuram proxies privados, espelhos internos ou variáveis como GOPROXY e GOSUMDB em imagens de CI sem acompanhar sua procedência. Como módulos baixados ficam em cache e a biblioteca padrão é incorporada ao binário, atualizar apenas uma máquina de desenvolvimento não basta.

Como verificar projetos potencialmente afetados

O anúncio oficial recomenda recriar os arquivos de checksums e o diretório de vendor:

rm -r go.sum go.work.sum vendor/
go mod tidy

Faça isso em um checkout limpo ou descartável, pois o comando remove arquivos e go mod tidy pode produzir mudanças legítimas conforme o estado atual do módulo. Depois, revise o resultado com git diff e rode a suíte de testes. Em repositórios sem go.work.sum ou vendor/, ajuste o comando para não falhar por arquivos inexistentes.

Também vale auditar a configuração efetiva:

go env GOPROXY GOSUMDB GOPRIVATE GONOSUMDB
go version
go test ./...

Se a organização mantém proxy próprio, confira logs, controles de acesso e a origem dos artefatos armazenados. A validação oficial é especialmente importante para builds feitos enquanto um proxy suspeito estava configurado.

Oito correções na biblioteca padrão e em x/net

As demais vulnerabilidades cobrem superfícies comuns de aplicações de produção:

  • encoding/xml (CVE-2026-56859): DecodeElement podia neutralizar o contador de profundidade e permitir exaustão da pilha com XML recursivo.
  • net/http (CVE-2026-56853): a detecção de HTTP/2 sem criptografia lia o prefácio da conexão sem aplicar ReadHeaderTimeout.
  • net/url (CVE-2026-56860): caminhos relativos com muitos segmentos .. provocavam complexidade quadrática e muitas alocações.
  • x/net/dns/dnsmessage (CVE-2026-46600): registros SVCB ou HTTPS inválidos podiam causar panic durante o parsing.
  • crypto/tls (CVE-2026-56862): um cliente podia enviar mensagens KeyUpdate indefinidamente e forçar derivações de chave contínuas no servidor.
  • html/template (CVE-2026-56858): entradas patológicas confundiam o rastreamento de contexto de expressões regulares JavaScript, possibilitando injeção de conteúdo e XSS.
  • x/net/idna (CVE-2026-39821): rótulos Punycode que decodificavam apenas para ASCII eram aceitos indevidamente, criando risco de escalada de privilégio em validações de hostname.
  • encoding/asn1 (CVE-2026-33818): estruturas profundamente aninhadas podiam esgotar a pilha; agora há limite de recursão.

O alcance é amplo: APIs HTTP, clientes TLS, sistemas que processam XML ou certificados, templates com JavaScript, resolutores DNS e aplicações que normalizam domínios devem tratar o patch como atualização de segurança, não como manutenção opcional.

Plano de atualização

Projetos na linha atual devem migrar para Go 1.26.6; quem ainda precisa permanecer na linha anterior deve usar Go 1.25.13. Atualize a imagem de build, versões fixadas no CI e o campo toolchain quando aplicável. Em seguida, recompile e redistribua todos os binários: executar go get não corrige código vulnerável já embutido a partir da biblioteca padrão.

Um fluxo mínimo inclui go test ./..., testes de integração e govulncheck ./.... Para serviços expostos à internet, priorize componentes que aceitam entradas não confiáveis nos pacotes citados. Para a cadeia de módulos, compare builds reproduzidos em ambiente limpo e revise qualquer divergência inesperada em checksums ou conteúdo vendorizado.

Saiba mais