注目★★★★★GitHub Advisory
Deno CVE-2026-49440: checkPrime の Miller-Rabin ゼロラウンド問題を修正
30秒で把握
- 1CVE-2026-49440: Deno の checkPrime が checks=0 でラウンド数ゼロで素数誤判定
- 2試し割り上限 17,863 のみで合成数を素数と報告・Node.js は非影響
- 3パッチ後は FIPS 186-4 最低ラウンド数が保証・明示 checks>=1 も更新推奨
要約
DenoのNode.js互換crypto APIである`checkPrime`/`checkPrimeSync`で、`options.checks`をデフォルト値`0`のまま呼び出すとMiller-Rabin素数判定ループが一切実行されず、試し割り(上限17,863)のみで「おそらく素数」と誤報告する脆弱性(CVE-2026-49440)が修正された。例えば`17,881 × 17,891`のような合成数が素数と判定される。Node.js本体はOpenSSLの`BN_check_prime`がFIPS 186-4基準でビット長に応じたデフォルトラウンド数を補完するため同問題は発生しない。パッチ適用後はFIPS最低ラウンド数が保証される。
あなたへの影響
Denoでnode:cryptoの`checkPrime`を暗号鍵生成や素数検証に利用しているチームは、`checks`オプションを省略または`0`指定しているコードを確認し、パッチ済みバージョンへ更新することを推奨する。
推奨:明示的に`checks >= 1`を渡していた場合も、FIPS最低ラウンド数を下回っていた可能性があるため更新が望ましい。