CEVIU Logo
Voltar

Desleixo vs. Rigor na Criptografia

Aprofundamento CEVIU

Aprofundamento

A reutilização de IVs padrão em pyaes e aes-js não é um detalhe técnico menor: é uma falha que transforma a criptografia em ilusão. Quando o mesmo IV e chave são usados duas vezes no modo CTR, como acontece com o valor fixo 0x00000000_00000000_00000000_00000001, o atacante recupera imediatamente o XOR dos textos planos. Em sistemas reais, isso permite extrair senhas, tokens ou até chaves privadas se houver padrões repetidos (como headers HTTP ou estruturas JSON). O pior? A vulnerabilidade é reproduzível sem acesso à rede, basta ter dois blobs cifrados gerados com a mesma biblioteca e configuração padrão.

A StrongMan VPN não só substituiu a biblioteca, mas adotou AES-GCM-SIV, um modo resistente ao erro humano. Diferente do GCM comum, ele não entra em colapso se o 'nonce' for reutilizado: apenas revela que duas mensagens são idênticas. Isso protege credenciais armazenadas em bancos de dados locais, onde o controle sobre a geração de nonces é frágil, exatamente o cenário mais comum em ferramentas de gerenciamento de VPN.

Por que isso importa

Essa falha afeta diretamente a cadeia de suprimentos de software brasileiro: pyaes está em mais de 400 projetos no GitHub com estrelas, incluindo ferramentas de automação usadas por empresas de TI locais. Bibliotecas com documentação que ensina o uso inseguro, como mostrar exemplos com IVs fixos, normalizam o erro. E quando mantenedores ignoram alertas há quatro anos, como no caso de pyaes, a responsabilidade desce para o desenvolvedor final, que raramente tem formação em criptografia aplicada. Para equipes de segurança corporativa, isso significa que auditorias de código aberto precisam ir além de escanear CVEs: devem verificar padrões de uso nas documentações e exemplos, não só na implementação.

Perguntas frequentes

Por que usar um IV fixo é tão perigoso se a chave for secreta?

Porque a segurança do modo CTR depende inteiramente da unicidade do par (chave + IV). Com IV fixo, cada nova mensagem criptografada com a mesma chave gera um fluxo de cifra idêntico. O atacante, ao capturar dois criptogramas, calcula o XOR entre eles e obtém o XOR dos textos planos, o que, com conhecimento parcial do conteúdo (ex: cabeçalhos HTTP), permite recuperar os dados originais inteiramente.

O que torna o AES-GCM-SIV mais seguro que o GCM comum?

O GCM-SIV é 'resistente ao mau uso de nonce': se o mesmo nonce for acidentalmente reutilizado, ele não expõe texto plano nem permite falsificação. Em vez disso, apenas revela que duas mensagens são idênticas. Já no GCM tradicional, o reuso de nonce quebra total da confidencialidade e integridade, e essa falha é irreversível, mesmo com chaves fortes.

Como identificar se meu projeto usa pyaes ou aes-js de forma insegura?

Busque por chamadas a encrypt() ou decrypt() que não recebem um IV gerado aleatoriamente (ex: os.urandom(16)). Se o IV for constante, importado de um módulo ou definido como b'\x00' * 12 + b'\x00\x00\x00\x01', seu sistema está vulnerável. Ferramentas como Semgrep com regras personalizadas podem automatizar essa detecção em repositórios.

Posso simplesmente atualizar pyaes para corrigir o problema?

Não. A versão mais recente do pyaes (v1.6.3, lançada em 2022) ainda contém exemplos inseguros na documentação e não corrige o comportamento padrão. A issue aberta desde fevereiro de 2026 confirma que o projeto não evoluiu nesse ponto. A saída real é migrar para bibliotecas mantidas ativamente, como cryptography (Python) ou Web Crypto API (JavaScript), que impõem IVs únicos por padrão.

Fontes

Avalie este artigo:
Compartilhar:
Categoria
CEVIU Segurança da Informação
Publicado
09 de março 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