一键巡查JavaScript加密库严重漏洞(CVE-2025-9288)
发布时间:
2025-08-27 00:00

近日,网络安全研究人员披露了一个影响极为广泛的JavaScript加密库sha.js的严重安全漏洞(CVE-2025-9288),该漏洞的CVSS评分高达9.1分(属于严重级别),正威胁着全球数百万Web应用程序的安全。
1 漏洞概述
sha.js是一个实现了安全哈希算法(SHA)系列的JavaScript库,每周下载量高达1400万次,是Node.js和浏览器应用程序中依赖加密哈希保障安全的核心组件。 该漏洞源于输入类型检查缺失问题,攻击者能够借此操纵哈希值计算过程,导致从哈希碰撞到加密密钥提取等一系列严重后果。
2 漏洞原理深度解析
漏洞的根本原因在于该库未能正确验证输入数据类型。 安全公告指出:"缺失输入类型检查会导致在恶意JSON可序列化输入时计算无效值、挂起或回滚哈希状态(包括将标记哈希转变为未标记哈希)"。 简单来说,攻击者可以通过构造特殊的恶意输入数据,操纵哈希函数的内部状态,破坏其保护机制。
3 主要攻击方式
01. 哈希状态回滚
攻击者通过输入类似`{ length: -x }`的参数,可有效回滚哈希函数的内部状态。这不仅会中断计算过程,还能将加密库中用于确保数据完整性的标记哈希转变为未标记哈希,从而破坏其保护机制。
02. 数值误算与碰撞
攻击者可构造如下恶意输入: { length: buf.length, ...buf, 0: buf[0] + 256 } 即使底层数值不同,该输入仍会生成与原缓冲区(buf)相同的哈希值。其他库(如bn.js)可能对这些值的解释存在差异,导致危险的逻辑不一致。
03. 拒绝服务(DoS)攻击
通过提供类似`{ length: '1e99' }`的输入,攻击者可导致函数无限挂起,使依赖sha.js的应用程序陷入拒绝服务状态。
04. 加密灾难:私钥提取
最严重的后果出现在通过哈希生成随机数的系统中。如果两个不同值产生匹配哈希但数值解释相异,攻击者可利用此漏洞推导出加密私钥。正如公告警告:"不同值的匹配随机数通常会导致私钥立即恢复"。
4 影响范围
该漏洞影响sha.js 2.4.11及之前的所有版本。考虑到该库每周超过1400万次的下载量和广泛的应用场景,此漏洞的影响范围极为广泛。 使用该库进行加密操作、数据完整性验证和数字签名的应用程序都可能受到攻击。
5 修复方案
使用sha.js的开发者和组织应立即升级至已修复版本(2.4.12)以防止漏洞被利用。 升级方法: npm update sha.js 或者手动将package.json中的sha.js版本指定为"≥2.4.12"。
6 参考地址
来源:github.com
链接: https://github.com/browserify/sha.js/security/advisories/GHSA-95m3-7q98-8xr5
来源:www.cve.org
链接: https://www.cve.org/CVERecord?id=CVE-2025-9287
来源:github.com
链接: https://github.com/browserify/sha.js/pull/78
来源:nvd.nist.gov
链接: https://nvd.nist.gov/vuln/detail/CVE-2025-9288
官方补丁: https://github.com/browserify/sha.js/tags
7 巡查方案
01.登录容器安全平台,点击【平台管理】-【软件升级】排查漏洞库是否更新,将漏洞库至最新版本(联系小佑客服获取最新版本漏洞库)。

02.进入镜像安全模块点击扫描仓库/节点镜像(全部镜像)

03.进入【漏洞管理】-【漏洞管理】模块,查看巡查结果(CVE-2025-9288)


04. 查看漏洞详情

05. 查看受影响镜像详情

06. 根据以上巡查结果,对受影响镜像的组件(sha.js)重新打包升级至2.4.12
07. 对新镜像重新扫描,已确认CVE-2025-9288漏洞修复完成。
8 总结
CVE-2025-9288是一个影响广泛加密库的高危漏洞,具有多种攻击向量和严重的潜在后果。由于该库在JavaScript生态系统中的重要性,所有使用该库的开发团队都应立即采取行动,升级到安全版本,并检查现有系统是否已经遭受攻击。在网络安全形势日益严峻的今天,保持依赖库的最新状态和定期安全审计不再是可选项,而是保障应用程序和数据安全的必要措施。






