Problema de verificação de limite superior do browserify-sign em `dsaVerify` leva a um ataque de falsificação de assinatura
Plataforma
nodejs
Componente
browserify-sign
Corrigido em
4.2.2
### Resumo Um problema de verificação de limite superior na função `dsaVerify` permite que um invasor construa assinaturas que podem ser verificadas com sucesso por qualquer chave pública, levando assim a um ataque de falsificação de assinatura. ### Detalhes Na função `dsaVerify`, ela verifica se o valor da assinatura é legal chamando a função `checkValue`, ou seja, se `r` e `s` estão ambos no intervalo `[1, q - 1]`. No entanto, a segunda linha da função `checkValue` verifica incorretamente o limite superior dos parâmetros passados, uma vez que o valor de `b.cmp(q)` só pode ser `0`, `1` e `-1`, e nunca pode ser maior que `q`. Desta forma, embora os valores de `s` não possam ser `0`, um invasor pode obter o mesmo efeito que zero definindo o seu valor para `q`, e então enviar `(r, s) = (1, q)` para passar na verificação de qualquer chave pública. ### Impacto Todos os locais neste projeto que envolvem a verificação DSA (DSA verification) de assinaturas de entrada do utilizador serão afetados por esta vulnerabilidade. ### Correção PR: Como o fork privado temporário foi eliminado, aqui está um arquivo da web da discussão do PR (PR) e das páginas de diff: [PR webarchive.zip](https://github.com/browserify/browserify-sign/files/13172957/PR.webarchive.zip)
Como corrigir
Nenhum patch oficial disponível. Procure alternativas ou monitore atualizações.
Monitore suas dependências automaticamente
Receba alertas quando novas vulnerabilidades afetarem seus projetos.
Começar grátis