Rhino 引擎 toFixed() 函数特定输入导致高CPU占用与潜在DoS漏洞剖析

本文详细分析了CVE-2025-66453漏洞,该漏洞影响Mozilla Rhino JavaScript引擎。当攻击者向`toFixed()`函数传入特定浮点数时,会触发异常高的CPU消耗,可能导致拒绝服务。文章涉及漏洞触发栈、影响版本及修复方案。

漏洞详情

CVE ID: CVE-2025-66453 GHSA ID: GHSA-3w8q-xq97-5j7x 严重等级: 低 (CVSS 评分: 2.7)

受影响版本

  • Maven 包: org.mozilla:rhino
  • 受影响版本:
    • < 1.7.14.1
    • >= 1.7.15, < 1.7.15.1
    • = 1.8.0
  • 已修复版本:
    • 1.7.14.1
    • 1.7.15.1
    • 1.8.1

漏洞描述

当应用程序将攻击者控制的浮点数传入 toFixed() 函数时,可能导致极高的 CPU 消耗和潜在的拒绝服务(DoS)攻击。

对于特定的较小数值,其调用栈如下: NativeNumber.numToDToA.JS_dtostrDToA.JS_dtoaDToA.pow5mult 其中,pow5mult 函数会尝试将 5 提升到一个极大的幂次,从而导致 CPU 长时间被占用。

示例触发代码:

1
(4.47118444E-314).toFixed(2)

技术细节与参考资料

CVSS v4.0 指标分析

  • 攻击向量(AV): 网络(N)
  • 攻击复杂度(AC): 低(L)
  • 所需权限(PR): 无(N)
  • 用户交互(UI): 无(N)
  • 对脆弱系统的影响:
    • 可用性(VA): 低(L)
    • 机密性与完整性不受影响。
  • 完整向量字符串: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:U

漏洞报告与更新时间线

  • 报告者: TechPizzaDev
  • 发布于 GitHub 安全公告数据库: 2025年12月3日
  • GitHub 审核: 2025年12月3日
  • 国家漏洞数据库(NVD)发布: 2025年12月3日
  • 最后更新: 2025年12月4日

补充说明

  • EPSS 评分: 0.055%(第17百分位),表示未来30天内被利用的概率较低。
  • 该漏洞已被分配 CVE ID 和 GHSA ID,相关修复已包含在指定的 Rhino 引擎版本中。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计