NodeJS/browserify-sign/4.2.0
adds node crypto signing for browsers
https://www.npmjs.com/package/browserify-sign
ISC
1 Security Vulnerabilities
browserify-sign upper bound check issue in `dsaVerify` leads to a signature forgery attack
- https://github.com/browserify/browserify-sign/security/advisories/GHSA-x9w5-v3q2-3rhw
- https://nvd.nist.gov/vuln/detail/CVE-2023-46234
- https://github.com/browserify/browserify-sign/commit/85994cd6348b50f2fd1b73c54e20881416f44a30
- https://github.com/advisories/GHSA-x9w5-v3q2-3rhw
- https://lists.debian.org/debian-lts-announce/2023/10/msg00040.html
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/3HUE6ZR5SL73KHL7XUPAOEL6SB7HUDT2
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/6PVVPNSAGSDS63HQ74PJ7MZ3MU5IYNVZ
- https://www.debian.org/security/2023/dsa-5539
Summary
An upper bound check issue in dsaVerify function allows an attacker to construct signatures that can be successfully verified by any public key, thus leading to a signature forgery attack.
Details
In dsaVerify function, it checks whether the value of the signature is legal by calling function checkValue, namely, whether r and s are both in the interval [1, q - 1]. However, the second line of the checkValue function wrongly checks the upper bound of the passed parameters, since the value of b.cmp(q) can only be 0, 1 and -1, and it can never be greater than q.
In this way, although the values of s cannot be 0, an attacker can achieve the same effect as zero by setting its value to q, and then send (r, s) = (1, q) to pass the verification of any public key.
Impact
All places in this project that involve DSA verification of user-input signatures will be affected by this vulnerability.
Fix PR:
Since the temporary private fork was deleted, here's a webarchive of the PR discussion and diff pages: PR webarchive.zip
34 Other Versions
| Version | License | Security | Released | |
|---|---|---|---|---|
| 4.2.5 | ISC | 2025-09-24 - 20:18 | about 1 month | |
| 4.2.4 | ISC | 2025-09-22 - 20:50 | about 1 month | |
| 4.2.3 | ISC | 2024-03-05 - 17:36 | over 1 year | |
| 4.2.2 | ISC | 2023-10-25 - 15:23 | about 2 years | |
| 4.2.1 | ISC | 1 | 2020-08-04 - 16:15 | about 5 years |
| 4.2.0 | ISC | 1 | 2020-05-18 - 15:20 | over 5 years |
| 4.1.0 | ISC | 1 | 2020-05-05 - 12:54 | over 5 years |
| 4.0.4 | ISC | 1 | 2017-03-28 - 12:06 | over 8 years |
| 4.0.3 | ISC | 1 | 2017-03-27 - 19:08 | over 8 years |
| 4.0.2 | ISC | 1 | 2017-03-27 - 19:02 | over 8 years |
| 4.0.1 | ISC | 1 | 2017-03-27 - 18:06 | over 8 years |
| 4.0.0 | ISC | 1 | 2015-11-02 - 14:20 | almost 10 years |
| 3.0.8 | ISC | 1 | 2015-09-05 - 14:55 | about 10 years |
| 3.0.3 | ISC | 1 | 2015-08-07 - 19:12 | about 10 years |
| 3.0.2 | ISC | 1 | 2015-05-21 - 02:57 | over 10 years |
| 3.0.1 | ISC | 1 | 2015-03-11 - 12:49 | over 10 years |
| 3.0.0 | ISC | 1 | 2015-03-10 - 12:00 | over 10 years |
| 2.8.0 | ISC | 1 | 2015-01-12 - 13:57 | almost 11 years |
| 2.7.5 | ISC | 1 | 2015-01-06 - 13:04 | almost 11 years |
| 2.7.4 | ISC | 1 | 2015-01-06 - 12:53 | almost 11 years |
| 2.7.3 | ISC | 1 | 2015-01-06 - 12:45 | almost 11 years |
| 2.7.2 | ISC | 1 | 2015-01-05 - 16:07 | almost 11 years |
| 2.7.1 | ISC | 1 | 2015-01-03 - 13:53 | almost 11 years |
| 2.7.0 | ISC | 1 | 2014-12-22 - 19:43 | almost 11 years |
| 2.6.1 | ISC | 1 | 2014-12-19 - 16:39 | almost 11 years |
| 2.6.0 | ISC | 1 | 2014-12-18 - 21:59 | almost 11 years |
| 2.5.2 | ISC | 2014-12-17 - 12:32 | almost 11 years | |
| 2.5.1 | ISC | 2014-12-09 - 21:29 | almost 11 years | |
| 2.5.0 | ISC | 2014-11-25 - 19:56 | almost 11 years | |
| 2.4.0 | ISC | 2014-11-16 - 16:28 | almost 11 years | |
| 2.3.0 | ISC | 2014-11-15 - 23:39 | almost 11 years | |
| 2.2.0 | ISC | 2014-11-15 - 21:54 | almost 11 years | |
| 2.1.0 | ISC | 2014-11-15 - 20:09 | almost 11 years | |
| 2.0.0 | ISC | 2014-11-15 - 18:34 | almost 11 years |
