广泛使用的行J胁全JavaScript加密库sha.js近日披露了一个严重安全漏洞 。该库实现了安全哈希算法(Secure Hash Algorithm ,存严SHA)系列 ,重漏每周下载量超过1400万次 ,洞威是安全许多依赖加密哈希保障安全的Node.js和浏览器应用程序的源码下载核心组件。
该漏洞编号为CVE-2025-9288,行J胁全CVSS评分为9.1分,存严源于输入类型检查缺失问题 。重漏攻击者可借此操纵哈希值计算过程,洞威导致从哈希碰撞到加密密钥提取等一系列严重后果 。安全

漏洞根源在于该库未能正确验证输入数据类型。源码库行J胁全安全公告指出 :"缺失输入类型检查会导致在恶意JSON可序列化输入时计算无效值、存严挂起或回滚哈希状态(包括将标记哈希转变为未标记哈希)"。重漏
主要攻击方式(1) 哈希状态回滚
攻击者通过输入类似{ length: -x }的洞威参数,可有效回滚哈希函数的安全内部状态 。这不仅会中断计算过程 ,服务器租用还能将加密库中用于确保数据完整性的标记哈希转变为未标记哈希,从而破坏其保护机制。
(2) 数值误算与碰撞
攻击者可构造如下恶意输入:
复制{ length: buf.length, ...buf, 0: buf[0] + 256 }1.即使底层数值不同 ,该输入仍会生成与原缓冲区(buf)相同的哈希值。其他库(如bn.js)可能对这些值的模板下载解释存在差异 ,导致危险的逻辑不一致 。
(3) 拒绝服务(DoS)攻击
通过提供类似{ length: 1e99 }的输入,攻击者可导致函数无限挂起 ,使依赖sha.js的云计算应用程序陷入拒绝服务状态 。
(4) 加密灾难 :私钥提取
最严重的后果出现在通过哈希生成随机数的系统中 。如果两个不同值产生匹配哈希但数值解释相异,攻击者可利用此漏洞推导出加密私钥。正如公告警告:"不同值的建站模板匹配随机数通常会导致私钥立即恢复 。"
修复建议使用sha.js的开发者和组织应立即升级至已修复版本(2.4.12)以防止漏洞被利用。