4 min de leitura

WAICT: A Nova Proposta da Mozilla para Garantir Integridade e Transparência no JavaScript da Web

woman sitting on chair
Photo by Christina @ wocintechchat.com M on Unsplash

O JavaScript que seu navegador executa agora pode ter sido alterado sem que você perceba. A Mozilla acaba de apresentar uma solução que transforma a confiança cega em verificabilidade criptográfica — e isso muda tudo.

Representação artística da verificação criptográfica do WAICT em um ambiente de servidor de alta tecnologia

O problema invisível: quando o servidor se torna o inimigo

Toda aplicação web moderna repousa sobre uma premissa frágil: o código que o servidor entrega é exatamente aquele que o desenvolvedor publicou. Confiamos nisso porque a página carrega, os botões funcionam e o layout parece familiar. Mas essa crença é puramente visual.

Se o servidor for comprometido — por um atacante externo, um governo autoritário ou um insider malicioso —, um JavaScript adulterado pode:

  • Interceptar chaves criptográficas geradas no navegador, anulando a criptografia ponta a ponta.
  • Redirecionar mensagens e dados para servidores controlados pelo invasor, montando um ataque direto na fonte.
  • Registrar teclas digitadas, tokens de autenticação e dados bancários sem que nada na interface denuncie a violação.
O mais alarmante: esses ataques não acionam nenhum alerta. O cadeado verde continua lá. A criptografia TLS permanece intacta — porque o código malicioso veio exatamente do servidor legítimo.

Até agora, não havia defesa. O navegador simplesmente confiava. O WAICT quebra esse vínculo de confiança cega e instaura um novo pilar: a verificabilidade.

WAICT: a arquitetura da confiança verificável

A proposta da Mozilla não tenta tornar os servidores invioláveis. Em vez disso, ela torna o código auditável e imutável, fazendo com que qualquer tentativa de adulteração se torne visível, atribuível e bloqueável. Três pilares sustentam essa arquitetura.

1. Manifestos criptográficos

Cada versão da aplicação recebe um manifesto digital — um documento com os hashes de todos os arquivos JavaScript, estilos e demais ativos. Esse manifesto não é gerado dinamicamente pelo servidor; ele é criado e assinado digitalmente pelo desenvolvedor durante a publicação.

Pense no manifesto como uma certidão de autenticidade. Ele atesta: “Esta versão é exatamente este conjunto de arquivos, com estas impressões digitais imutáveis.”

2. Logs públicos e imutáveis

Manter o manifesto no mesmo servidor que pode ser comprometido seria inútil. Por isso, os manifestos — com provas criptográficas de assinatura válida — são publicados em logs públicos e imutáveis, similares ao Certificate Transparency que revolucionou a segurança dos certificados SSL/TLS.

Qualquer pesquisador, organização ou navegador pode consultar esse log e verificar qual versão foi publicada por aquele domínio, exatamente quando e por quem. Uma vez registrado, o manifesto não pode ser removido nem modificado sem que a violação seja detectável.

3. Bloqueio no navegador

Quando o usuário acessa um site que adota WAICT, o navegador — por exemplo, o Firefox Nightly — baixa o código normalmente, mas antes de executá-lo, consulta o log público, recupera o manifesto e compara os hashes.

Se o código entregue não corresponder exatamente ao que está registrado, o navegador se recusa a executar a aplicação e exibe um aviso claro de violação de integridade.

O ataque deixa de ser invisível. Ele falha em tempo real, na frente do usuário, e fica registrado publicamente. O servidor comprometido perde a capacidade de negar.

O WAICT é opt-in. Apenas serviços que lidam com dados extremamente sensíveis — mensageria, fintechs, saúde, ferramentas de denúncia — ativam a verificação, sem impactar o resto da web.

Como funciona na prática

A Mozilla já disponibilizou um protótipo funcional no Firefox Nightly e um site de demonstração em waict.dev, com uma videochamada criptografada ponta a ponta como exemplo.

O fluxo é elegante em sua simplicidade:

  1. O desenvolvedor gera o manifesto criptográfico e o registra no log público.
  2. O usuário digita o endereço do serviço.
  3. O navegador baixa o JavaScript, calcula os hashes e consulta o log.
  4. Se os hashes conferem, o código é executado normalmente.
  5. Se houver adulteração, o navegador bloqueia a execução e alerta o usuário.

Todo o processo ocorre em milissegundos, sem fricção para o usuário legítimo.

As engrenagens por trás da virada

A adoção do WAICT introduz camadas técnicas que, combinadas, montam um sistema robusto de verificação:

  • Imutabilidade por design: hashes criptográficos funcionam como impressões digitais. Qualquer mudança gera um hash completamente diferente.
  • Transparência total de versões: o log público cria uma linha do tempo auditável do que foi publicado e quando.
  • Bloqueio ativo no cliente: a segurança deixa de depender do servidor e passa a ser aplicada no próprio navegador.
  • Modelo opt-in: preserva a compatibilidade com a web existente.
  • Protótipo funcional: já é possível experimentar o WAICT em cenários reais e coletar feedback.

Impacto no mercado: um novo padrão em gestação

A Mozilla já anunciou parcerias estratégicas com:

  • Cloudflare — infraestrutura para logs públicos e otimizações de CDN.
  • Freedom of the Press Foundation — segurança para jornalistas e fontes.
  • Meta — interesse em aplicações de mensageria via web, como WhatsApp Web.

Esses movimentos sugerem que o WAICT pode se consolidar como um novo padrão web, assim como aconteceu com TLS, HTTPS obrigatório e transparência de certificados.

Modelo tradicionalCom WAICT
Confiança cega no servidorConfiança verificável por criptografia
Ataques não geram alertasBloqueio ativo e notificação ao usuário
Adulteração invisívelAdulteração detectável e registrada publicamente
Não exige infraestrutura adicional do desenvolvedorExige registro de manifestos e manutenção de chaves

Riscos e limitações

Como toda proposta em estágio inicial, o WAICT enfrenta desafios:

  • Protótipo ainda incompleto: a implementação atual no Firefox Nightly está longe de estar pronta para produção.
  • Dependência de adoção multilateral: para ser eficaz, precisa ser adotado por desenvolvedores e também por outros navegadores, como Chrome e Safari.
  • Privacidade dos logs públicos: registros de versões e timestamps podem expor metadados sobre correções de segurança.
  • Barreira para sites pequenos: gerar manifestos, manter chaves e publicar registros exige infraestrutura e disciplina operacional.

Por ser opt-in, esses riscos são contornáveis: serviços que não precisam de integridade adicional permanecem inalterados.

O futuro da confiança na web

O WAICT representa uma mudança de paradigma. A confiança deixa de ser delegada ao servidor e passa a residir na criptografia pública e na transparência distribuída. O servidor se torna um entregador que precisa provar, a cada requisição, que está transportando exatamente o que foi registrado em cartório digital.

Segurança não pode ser uma promessa — precisa ser uma constatação. O JavaScript nunca mais será um voto de fé.

Resumo prático: O WAICT transforma a integridade do código web em algo verificável, auditável e bloqueável. Para aplicações sensíveis, é uma camada inédita de defesa. Para a web como um todo, é um passo rumo a um ecossistema onde a confiança não é presumida, mas comprovada.

Conheça o protótipo funcional em waict.dev e acompanhe a evolução da proposta nos canais oficiais da Mozilla.