漏洞概述 漏洞名称: Miller-Rabin Primality Test Allows Zero Rounds CVE ID: CVE-2025-4340 CVSS v3 base metrics: 7.4 / 10 Severity: High 描述: Node.js 的 和 函数在默认情况下( 参数为 0)不会执行 Miller-Rabin 轮次,导致仅进行试除法。如果候选数的最小素因子超过试除法的上限(17,893),则可能错误地返回“可能是素数”。 影响范围 受影响的 API: 影响版本: 受影响版本: <= 2.8.0 修复版本: 2.8.1 影响描述: 调用者显式传递 时,循环会执行请求的轮次,但仍可能收到比 Node.js 预期的更少轮次。 修复后的版本至少会执行 FIPS 最小轮次。 不受影响的情况: Deno 的素数生成路径( , , 和 DH 参数生成路径)不受影响。 其他 Deno 内部使用的素性测试路径也不受影响。 Web Crypto API 的 也不受影响。 修复方案 修复内容: PR #54391 引入了一个辅助函数 ,返回 FIPS 186-4 Appendix C.3 规定的轮次数。 在 中,循环次数被限制为 。 概率性循环现在始终执行,无论调用者提供的 值如何,确保足够的轮次以保持假阳性概率低于 2^-80。 工作区: 如果无法立即升级,调用 或 时,显式传递 值。建议值为 64。 不要依赖 来验证安全关键路径中的攻击者影响的巨大数,直到应用补丁版本。 POC 代码