Problème de vérification de limite supérieure dans `dsaVerify` de browserify-sign menant à une attaque de falsification de signature
Plateforme
nodejs
Composant
browserify-sign
Corrigé dans
4.2.2
### Résumé Un problème de vérification de limite supérieure dans la fonction `dsaVerify` permet à un attaquant de construire des signatures qui peuvent être vérifiées avec succès par n'importe quelle clé publique, conduisant ainsi à une attaque de falsification de signature. ### Détails Dans la fonction `dsaVerify`, elle vérifie si la valeur de la signature est légale en appelant la fonction `checkValue`, à savoir si `r` et `s` sont tous deux dans l'intervalle `[1, q - 1]`. Cependant, la deuxième ligne de la fonction `checkValue` vérifie incorrectement la limite supérieure des paramètres passés, car la valeur de `b.cmp(q)` ne peut être que `0`, `1` et `-1`, et elle ne peut jamais être supérieure à `q`. De cette façon, bien que les valeurs de `s` ne puissent pas être `0`, un attaquant peut obtenir le même effet que zéro en définissant sa valeur sur `q`, puis envoyer `(r, s) = (1, q)` pour passer la vérification de n'importe quelle clé publique. ### Impact Tous les endroits de ce projet qui impliquent la vérification DSA (DSA verification) des signatures saisies par l'utilisateur seront affectés par cette vulnérabilité. ### Correctif PR: Étant donné que le fork privé temporaire a été supprimé, voici une archive web des pages de discussion et de diff du PR : [PR webarchive.zip](https://github.com/browserify/browserify-sign/files/13172957/PR.webarchive.zip)
Comment corriger
Aucun correctif officiel disponible. Recherchez des alternatives ou surveillez les mises à jour.
Surveillez vos dépendances automatiquement
Recevez des alertes quand de nouvelles vulnérabilités affectent vos projets.
Commencer gratuitement