UNKNOWNCVE-2023-46234
`dsaVerify`におけるbrowserify-signの上限チェックの問題が署名偽造攻撃につながる
プラットフォーム
nodejs
コンポーネント
browserify-sign
修正バージョン
4.2.2
### 概要 `dsaVerify`関数における上限チェックの問題により、攻撃者は任意の公開鍵で検証に成功する署名を構築でき、署名偽造攻撃につながる可能性があります。 ### 詳細 `dsaVerify`関数では、関数`checkValue`を呼び出すことによって、署名の値が有効かどうか、つまり`r`と`s`の両方が区間`[1, q - 1]`にあるかどうかをチェックします。ただし、`checkValue`関数の2行目は、渡されたパラメータの上限を誤ってチェックしています。`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)
修正方法
公式パッチはありません。回避策を確認するか、アップデートを監視してください。