UNKNOWNCVE-2023-46234

browserify-sign `dsaVerify` 中的上限检查问题导致签名伪造攻击

平台

nodejs

组件

browserify-sign

已修复版本

4.2.2

### 概要 `dsaVerify` 函数中的上限检查问题允许攻击者构造可以被任何公钥成功验证的签名,从而导致签名伪造攻击。 ### 详情 在 `dsaVerify` 函数中,它通过调用 `checkValue` 函数来检查签名的值是否合法,即 `r` 和 `s` 是否都在区间 `[1, q - 1]` 中。但是,`checkValue` 函数的第二行错误地检查了传递参数的上限,因为 `b.cmp(q)` 的值只能是 `0`、`1` 和 `-1`,它永远不会大于 `q`。 这样,虽然 `s` 的值不能为 `0`,但攻击者可以通过将其值设置为 `q` 来达到与零相同的效果,然后发送 `(r, s) = (1, q)` 以通过任何公钥的验证。 ### 影响 该项目中所有涉及用户输入签名 DSA 验证的地方都将受到此漏洞的影响。 ### 修复 PR: 由于临时的私有分支已被删除,这是 PR 讨论和差异页面的 Web 存档:[PR webarchive.zip](https://github.com/browserify/browserify-sign/files/13172957/PR.webarchive.zip)

修复方法

暂无官方补丁。请查找临时解决方案或持续关注更新。

自动监控您的依赖项

当新漏洞影响您的项目时获得提醒。

免费开始