Pular para o conteúdo
Tecnologia

Go 1.27.3 bloqueou 8 certificados comprometidos: o binário antigo ainda confia neles

As versões 1.27.3 e 1.26.10 do Go recusam cadeias de certificados que passem por oito intermediários da eMudhra. Programas em Go que usam o jsonW e abrem conexão HTTPS precisam ser recompilados.

Por Equipe Wortic 11 min de leitura
Go 1.27.3 bloqueou 8 certificados comprometidos: o binário antigo ainda confia neles

Em 17 de outubro de 2026, a Mozilla recebeu a informação de que as chaves privadas de oito certificados intermediários da autoridade eMudhra tinham sido comprometidas. No mesmo dia, ela bloqueou os oito no Firefox. O Go respondeu com as versões 1.27.3 e 1.26.10, lançadas entre 19 e 20 de outubro, com a correção dentro da biblioteca padrão de certificados, identificada como CVE-2026-111943.

Para quem roda programas em Go, a parte que pesa é esta: a proteção fica dentro do binário. Segundo o blog oficial do Go, os programas recompilados com essas versões recusam sozinhos os certificados emitidos pelos intermediários comprometidos, e a mudança não traz nenhuma opção para desligar essa recusa.

Essa notícia tem cerca de três semanas. Nas buscas de Go no Google Notícias, feitas pelo servidor, não apareceu nada das últimas 48 horas sobre a linguagem. A leitura da Wortic é que esta cobertura de outubro continua útil, porque a correção só chega ao programa quando ele é recompilado, e isso é feito programa por programa.

O que a notícia muda na prática

  • Atualizar a imagem ou o sistema não basta. Um relato técnico publicado no DEV Community afirma que a lista fica compilada no binário, e que atualizar a imagem base ou o pacote de certificados do sistema não a acrescenta.
  • Versões antigas ficam de fora. A cobertura da The Hacker News diz que o Go 1.25 e as versões anteriores estão fora de suporte e não recebem a correção.
  • Recompilar pode derrubar conexões. Serviços que ainda usam certificados emitidos por esses intermediários passam a falhar depois da recompilação, com erro de cadeia x509. Os sites afetados precisam reemitir o certificado por um intermediário não comprometido.

Onde entra o jsonW

O jsonW não acessa a rede. O README do projeto, na versão 1.2.1, diz que a biblioteca e os SDKs nunca acessam a rede. O risco, portanto, não está no formato do arquivo. Ele está no programa em Go que usa o SDK: se esse programa também abre conexão HTTPS, entra na lista de recompilação.

Na prática, se o programa não abre conexão TLS, a correção de certificado não altera o comportamento dele. Mesmo assim, manter o toolchain na versão corrigida é a regra que vale para todos os programas da equipe.

O SDK do jsonW em Go

O SDK em Go fica em sdk/go/ e funciona por cgo. O pacote chama a ABI C do jsonW, a interface estável descrita em sdk/jsonw.h, e linka a libjsonw.a no build. O README lista as funções Go como jsonw.Abrir e jsonw.Criar. O arquivo jsonw.go também traz Linha, Campo, Conferir e Fechar.

Dois detalhes ajudam a entender o custo de uso. Ao ler uma linha, o SDK devolve o objeto em JSON e converte com o json.Unmarshal da biblioteca padrão. Ao gravar, ele cria as strings em C com C.CString e as libera com C.free, como a documentação do cgo indica para memória alocada assim.

O exemplo abaixo é o do README, sem alteração:

w, _ := jsonw.Criar("vendas.jsw", "id:i64,produto:texto,preco:dinheiro")
w.Gravar(map[string]any{"id": 1, "produto": "Café especial", "preco": "12,50 BRL"})
w.Fechar()

r, _ := jsonw.Abrir("vendas.jsw")
defer r.Fechar()
var preco string
r.Campo(0, 2, &preco) // linha 0, campo 2

O fluxo do programa, do código Go até o arquivo, passa por duas camadas:

flowchart LR
    A["Programa em Go"] --> B["SDK jsonw (cgo)"]
    B --> C["libjsonw.a, núcleo em C"]
    C --> D[("arquivo .jsw")]
    A --> E["Conexão HTTPS"]
    E --> F["Cadeia de certificados"]
    F --> G{"Passa por intermediário bloqueado?"}
    G -- sim --> H["Recusa a conexão"]

Comparação honesta com o que se usa hoje

O README cita quatro formatos que o jsonW pretende substituir: JSON, JSONL, CSV e Parquet. O benchmark do projeto compara com o JSONL lido pelo leitor do próprio projeto, e não com a biblioteca JSON de Go. O próprio texto avisa que bibliotecas de JSON mais otimizadas reduzem a diferença quando se grava e se lê tudo. A vantagem grande aparece ao ler um campo de uma linha, porque o formato guarda cada coluna separada.

DadoProblema que o README citaTipo no jsonW
Preçovira textodinheiro, com moeda ISO 4217
CPF ou SKUperde o zero da frentecodigo, bytes exatos
Pesonão se sabe se era grama ou quilomedida[g], convertido ao gravar
Leitura de um campoexige decodificar o restanteacesso direto por linha e campo

Economia de disco, memória, rede e servidor

  • Disco: o arquivo sai 4,9 vezes menor que o JSONL dos mesmos dados, em 100 mil registros, segundo a medição do próprio projeto.
  • Velocidade: ler um campo de uma linha fica 3.281 vezes mais rápido, na mesma medição.
  • Memória, rede e servidor: o README não traz medição desses três itens para o SDK em Go. A equipe precisa medir no próprio ambiente. O comando wjsw medir mede gravar e ler na máquina de quem roda.
  • Leitura remota: o README diz que o wremoto baixa só os blocos das linhas lidas. Essa é outra ferramenta, separada do SDK em Go, e o README não mede o custo de transferência dela.

Qualidade do dado

O formato declara o tipo de cada coluna. Um decimal[2] nunca passa por ponto flutuante, então um valor como 12,50 continua 12,50. Um dinheiro guarda a moeda junto do valor, e a soma só acontece na mesma moeda. Um codigo guarda os bytes exatos, sem normalizar nem aparar espaços. Um tempo fica em microssegundos UTC. Numa coluna medida[g], a entrada em quilo vira gramas ao gravar, como no exemplo do README em que 1 kg aparece como 1000 g.

Liberdade funcional e licença

A ABI em C tem um SDK por linguagem, e o README informa que todos passam pela mesma prova, byte a byte, pelo comando bash prova.sh. Há SDKs para C, C++17, Python 3, Node.js, PHP 8, Go, Rust, Java 22 ou mais recente, Kotlin e Swift.

A licença, pelo README, é a de uso sustentável. Ela permite usar o jsonW grátis dentro do seu produto, em quantos servidores quiser. Não permite revender o jsonW como serviço nem fazer engenharia reversa do núcleo em C. A documentação pode ser lida e citada.

Passo a passo para a equipe

  1. Liste os programas em Go que usam o jsonW e marque os que abrem conexão HTTPS.
  2. Confira a versão do toolchain com go version. A versão precisa ser 1.27.3 ou 1.26.10, ou uma mais recente.
  3. Atualize o toolchain no servidor de build e no pipeline de integração contínua.
  4. Recompile com go build ./... e publique os binários novos.
  5. Teste em homologação as conexões com fornecedores e serviços externos. Se algum certificado passar por intermediário bloqueado, o erro aparece ali, e não em produção.
  6. Depois de gravar um arquivo .jsw, rode wjsw conferir, ou o Conferir() do SDK, para validar a custódia.
  7. Meça disco, memória e tempo no seu ambiente com wjsw medir, sem usar os números do README como promessa.

Três situações do dia a dia (exemplos hipotéticos)

Situação 1: relatórios que chamam um gateway de pagamento. Um serviço interno lê relatórios em .jsw e, em seguida, chama um gateway por HTTPS. O que fazer: recompilar com 1.27.3 e testar a conexão com o gateway em homologação antes do deploy. Resultado esperado: a conexão continua funcionando ou o problema aparece antes de chegar a produção.

Situação 2: job noturno que só converte JSONL. Um job converte um JSONL em .jsw e grava no disco, sem nenhuma conexão TLS. O que fazer: manter o toolchain atualizado e medir o tamanho do arquivo antes e depois com wjsw medir. Resultado esperado: a redução de disco medida no próprio servidor, que pode ser diferente dos 4,9 vezes do README.

Situação 3: cadastro com CNPJ e SKU. Uma área de compras guarda códigos de fornecedor, e um deles começa com zero. O que fazer: declarar a coluna como codigo e comparar o valor antes e depois da ida e volta com para-texto. Resultado esperado: o zero da frente continua no lugar, porque o tipo guarda os bytes exatos.

Perguntas frequentes

Preciso atualizar o Go por causa da eMudhra? Se o programa abre conexão HTTPS, sim. A correção está nas versões 1.27.3 e 1.26.10. O Go 1.25 e as versões anteriores não recebem a correção.

Atualizar a imagem Docker ou o pacote de certificados resolve? Não sozinho. A lista fica compilada no binário, então é preciso recompilar o programa com a versão corrigida.

O jsonW é afetado pelo bloqueio de certificados? A biblioteca e os SDKs não acessam a rede, segundo o README. O que pode ser afetado é o programa em Go que usa o SDK e abre conexão HTTPS.

Quanto o jsonW economiza de disco? O README mede 4,9 vezes menos espaço que o JSONL, em 100 mil registros. Esse número é do projeto. Para a sua base, meça com wjsw medir.

Como saber qual versão do Go está instalada? Rode go version no servidor de build e no ambiente de integração contínua, e confirme 1.27.3 ou 1.26.10.

Dá para usar o jsonW sem escrever Go? Sim. O README traz SDKs para outras nove linguagens, além do Go, e a ferramenta wjsw roda pela linha de comando.

O SDK em Go depende de algo além do código? O cabeçalho cgo do arquivo jsonw.go linka a libjsonw.a que fica um nível acima da pasta do SDK. O passo a passo de compilação está em sdk/README.md, que não foi lido nesta análise.

Saiba mais

Conheça o projeto em jsonw.org e o código no repositório do jsonW. O jsonW é criado e mantido pela Wortic.

Fontes

Perguntas frequentes

Preciso atualizar o Go por causa da eMudhra?

Se o programa abre conexão HTTPS, sim. A correção está nas versões 1.27.3 e 1.26.10. O Go 1.25 e as versões anteriores não recebem a correção.

Atualizar a imagem Docker ou o pacote de certificados resolve?

Não sozinho. A lista de bloqueio fica compilada no binário, então é preciso recompilar o programa com a versão corrigida.

O jsonW é afetado pelo bloqueio de certificados?

Segundo o README, a biblioteca e os SDKs do jsonW não acessam a rede. O que pode ser afetado é o programa em Go que usa o SDK e também abre conexão HTTPS. A Wortic recomenda testar essas conexões antes do deploy.

Quanto o jsonW economiza de disco?

O README mede um arquivo 4,9 vezes menor que o JSONL, em 100 mil registros. É medição do próprio projeto. Para a sua base, meça com wjsw medir.

Como saber qual versão do Go está instalada?

Rode go version no servidor de build e no ambiente de integração contínua, e confirme 1.27.3 ou 1.26.10.

Dá para usar o jsonW sem escrever Go?

Sim. O README traz SDKs para outras nove linguagens, além do Go, e a ferramenta wjsw roda pela linha de comando.

O SDK em Go depende de algo além do código?

O cabeçalho cgo do arquivo jsonw.go linka a libjsonw.a que fica um nível acima da pasta do SDK. O passo a passo de compilação está em sdk/README.md, que não foi lido nesta análise.

Fontes

Conheça: jsonW em Go.

Quer isso funcionando na sua empresa?

Um consultor da Wortic olha o seu caso e mostra o caminho, sem compromisso.

Falar com um consultor

Equipe editorial

Equipe editorial da Wortic especializada em automacao, IA, ERP, CRM e crescimento operacional.

  • Automacao com IA
  • Gestao empresarial
  • CRM
  • ERP
  • Marketing digital

Isso funcionando no seu negócio.

Um consultor mostra o sistema do seu ramo, com a IA dentro.