Npm · Keypair · CVE-2021-41117
**Nome do software vulnerável e versões afetadas**
Versões do keypair até e incluindo a 1.0.3
**Descrição**
A biblioteca keypair, um gerador de chaves RSA PEM em JavaScript, apresenta um problema relacionado à geração inadequada de números aleatórios. Isso ocorre porque a biblioteca não depende inteiramente de um CSPRNG fornecido pela plataforma, utilizando, em vez disso, sua própria abordagem CMAC baseada em contador. O problema surge ao inicializar a implementação CMAC com dados aleatórios “verdadeiros” na função `defaultSeedFile`. Em um navegador, a biblioteca usa `window.crypto.getRandomValues()`, mas em um ambiente NodeJS, ela recorre a uma solução menos segura que contém um bug. O caminho alternativo usa um gerador de números aleatórios Lehmer LCG inicializado com `Math.random`, o que é inadequado e não explica a alta frequência de chaves duplicadas. A principal falha é a codificação incorreta da saída do Lehmer LCG, resultando na maior parte do buffer contendo zeros. Isso leva a uma chance de 97% de cada byte na semente do RNG ser 0, tornando as chaves RSA geradas relativamente fáceis de adivinhar. Um invasor poderia descriptografar mensagens confidenciais ou obter acesso autorizado a uma conta pertencente à vítima.
**Recomendações**
Para versões do par de chaves até e incluindo a 1.0.3, atualize para uma versão que inclua a correção para o problema de geração de números aleatórios inadequada, já que a correção está disponível no commit `9596418`. Se o módulo de criptografia estiver disponível, ele será usado em vez do gerador de números pseudoaleatórios. Como solução temporária, considere regenerar quaisquer chaves RSA que tenham sido geradas