Voltar
Incidente da eMudhra: chaves de CAs intermediárias comprometidas expõem falhas na revogação fora dos navegadores

Incidente da eMudhra: chaves de CAs intermediárias comprometidas expõem falhas na revogação fora dos navegadores

Aprofundamento CEVIU

Aprofundamento

O texto-fonte, publicado no blog da Codeminer42, explica o incidente da eMudhra do ponto de vista de quem opera serviços fora do navegador. O caso do grpc entra pela lista de trust stores: segundo o autor, o grpc compila um roots.pem dentro da própria wheel Python. Isso significa que ele é mais uma cópia da lista de raízes, com ciclo de release próprio. Atualizar o certifi não corrige essa cópia. O grpc é um framework de RPC de código aberto (licença Apache 2.0, escrito em C++ com bindings para Python, Ruby, PHP e C#), mas o artigo não descreve nenhuma correção específica para ele, então a checagem fica por conta de quem o usa.

O problema técnico é o seguinte. Oito chaves privadas de CAs intermediárias da eMudhra tinham os 376 bits mais significativos zerados, resultado de uma key ceremony falha em 30 de abril de 2025. Uma delas era o número 4. Os navegadores bloquearam as intermediárias em poucas horas, via OneCRL, CRLSets e exigência de Certificate Transparency. Python, Go, Node, Java e curl não checam revogação por padrão e seguiram confiando nas cadeias até que o arquivo de raízes mudasse. O autor afirma que nada forjado apareceu nos logs de CT, mas lembra que um atacante mirando clientes fora do navegador não tem motivo para registrar nada. Ele ainda precisa estar no caminho da conexão (DNS sequestrado, Wi-Fi hostil, proxy comprometido).

As correções seguiram duas rotas. Quem usa arquivo PEM só pode remover raízes: certifi, Debian, Red Hat e uv tiraram a emSign ECC Root CA G3 e a raiz AAA da Comodo. O certifi 2026.10.18 removeu todas as raízes emSign, e o 2026.10.19 devolveu as não afetadas, versão recomendada para fixar. Quem tem código pode ser cirúrgico: Go e Node colocaram as oito chaves em denylist, evitando invalidar cerca de 30 mil certificados legítimos.

O que mudou

Em 21 de outubro de 2026, o CEVIU noticiou "Oito certificados intermediários da eMudhra são comprometidos e acendem alerta na Internet", com a Cloudflare tomando ciência em 19 de outubro. Em 23 de outubro de 2026, em "Chaves de oito certificados intermediários da eMudhra são comprometidas; Cloudflare já aplicou correções", o foco era a mitigação da Cloudflare. Em 26 de outubro de 2026, "Sites do governo indiano seguem servindo certificados revogados da eMudhra" mostrou o problema do lado de quem serve os certificados. Agora o recorte muda para o lado do cliente: por que a revogação não protegeu runtimes e bibliotecas, e como cada projeto corrigiu seu trust store.

Por que isso importa

Para quem opera serviços em Python, Go ou Node, a leitura é que a revogação feita pela CA não chega ao seu código. Quem protege é a atualização do arquivo de raízes ou a denylist embutida. Isso pede um inventário de trust stores nas imagens (cacert.pem, roots.pem, /etc/ssl/certs e binários com lista própria), incluindo dependências como o grpc. Atualizar só o lock file deixa cópias para trás.

Repositório oficial: grpc/grpc

Linha do tempo

  1. CEVIU noticia o comprometimento de oito certificados intermediários da eMudhra.

  2. Cloudflare já havia aplicado correções, segundo o CEVIU.

  3. Sites do governo indiano seguem servindo certificados revogados da eMudhra.

  4. Análise mostra que Python, Go, Node, Java e curl ignoraram a revogação e como cada projeto corrigiu seu trust store.

Perguntas frequentes

Por que navegadores bloquearam as chaves e Python e Go não?

Os navegadores consomem listas de revogação como OneCRL, CRLite e CRLSets e exigem Certificate Transparency. Python, Go, Node, Java e curl montam a cadeia, procuram a raiz no arquivo local e param. Sem consulta a CRL ou OCSP, a revogação da eMudhra não mudou nada para eles.

Qual versão do certifi devo usar?

Segundo a fonte, a 2026.10.19. A 2026.10.18 removeu todas as raízes emSign, e a seguinte devolveu as não afetadas. O advisory do certifi não tem identificador CVE, então um alerta automático pode não aparecer.

Qual a diferença entre remover a raiz e usar denylist?

Remover a raiz derruba tudo que está abaixo dela, cerca de 30 mil certificados legítimos que precisarão ser reemitidos. A denylist, adotada por Go e Node, bloqueia só as oito chaves quebradas. Arquivos PEM só permitem a primeira opção.

O grpc está afetado?

O artigo cita que o grpc compila um roots.pem na wheel Python, ou seja, mantém sua própria cópia das raízes. Ele não detalha correção para o grpc, então vale verificar se a versão em uso ainda carrega a raiz removida pelos demais projetos.

Fontes

Avalie este artigo:
Categoria
CEVIU Segurança da Informação
Publicado
27 de outubro de 2026
Editoria
CEVIU Segurança da Informação

Quer receber mais sobre CEVIU Segurança da Informação?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser