【js】加密库sha.js 严重漏洞速查

前言

sha.js 是 JavaScript 生态里最常用的轻量级加密库。

它由 Browserify 社区维护,体积不足 20 KB,却实现了 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 全系列算法,是 crypto-browserifywebpackweb3.js 等数百个流行包的“根依赖”

而就在前几天,美国 NVD(国家漏洞库)正式发布 CVE-2025-9288,指向 JavaScript 加密库 sha.js

事件概述

美国 NVD(国家漏洞库)正式发布 CVE-2025-9288

指向 JavaScript 加密库 sha.js。该漏洞被评定为 严重级(CVSS 9.1),影响 每周 1 400 万次下载 的 Node.js 与浏览器端项目,堪称 2025 年波及面最广的前端供应链事件之一。

  • 官方修复版本:sha.js 2.4.12(已推送 npm)
  • 受影响版本:≤2.4.11

漏洞原理

sha.js 在处理输入时 未校验数据类型与长度,攻击者通过构造畸形对象:

{ length: -1 }

即可触发:

  1. 哈希降级 / 碰撞:相同摘要对应不同数据
  2. DoS 无限循环:CPU 被瞬间打满
  3. 私钥恢复:若哈希结果作为随机数 nonce,可反向推导私钥

波及面

35 个库 / 框架 / 工具链

15 个高频直接依赖库

#

典型受感染版本

备注

1

browserify

≤17.0.0

打包器

2

create-hash

≤1.2.0

被大量加密库二次封装

3

create-hmac

≤1.1.7

HMAC 封装

4

crypto-browserify

≤3.12.0

Web 环境 crypto polyfill

5

crypto-js

≤4.1.1

重新打包 sha.js 旧代码

6

elliptic

≤6.5.4

椭圆曲线运算

7

ethers

≤4.0.47 / 5.6.8

以太坊 JS SDK

8

ganache-cli

≤6.12.2

本地区块链

9

hash.js

≤1.1.7

sha.js 的别名发布

10

keccak

≤3.0.2

以太坊 Keccak 封装

11

merkle-patricia-tree

≤4.2.4

以太坊状态树

12

mocha

≤9.2.2

测试框架(开发依赖)

13

parcel-bundler

≤2.8.3

零配置打包器

14

web3

≤1.7.0

以太坊官方 JS SDK

15

webpack

≤4.46.0 / ≤5.74.0

构建工具

20 个间接或场景级受影响库 / 框架 / 工具链

#

包名 / 组件

场景说明

16

@solana/web3.js

Solana 链 JS SDK(历史版本锁定)

17

@truffle/contract

Truffle 测试套件

18

@vue/cli-service

Vue CLI 打包链

19

@angular-devkit/build-angular

Angular CLI

20

@react-native-community/cli

React Native CLI

21

hardhat

以太坊本地开发框架

22

remix-dev

Remix 全栈框架

23

next

Next.js SSR 框架

24

nuxt

Nuxt.js SSR 框架

25

expo-cli

Expo RN 开发工具

26

serverless

Serverless Framework

27

electron-builder

Electron 打包器

28

@babel/preset-env

Babel 转译链

29

jest-environment-jsdom

Jest 测试环境

30

ts-node

TypeScript 运行时

31

lerna

Monorepo 管理

32

gulp-cli

流式构建工具

33

rollup-plugin-node-polyfills

Rollup Node Polyfill

34

vite

Vite 构建工具(部分插件)

35

astro

Astro 静态站点生成器

自查清单

# 1. 查看本机 / CI 是否存在旧版本npm ls sha.js# 2. 全局搜索 lock 文件grep -E 'sha\.js@2\.4\.(1[0-1]|[0-9])' package-lock.json yarn.lock pnpm-lock.yaml# 3. 使用 SCA 工具(推荐)npx audit-ci --moderate

一键修复方案

# 升级到官方修复版npm install sha.js@2.4.12 --save-exact# 自动修复所有依赖链npm audit fix --force# 重新构建并测试npm run build

临时缓解(无法立即升级时):

在调用 sha.js 前加入类型校验,仅允许 string 或 Buffer 类型输入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/920312.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA入门学习路径

FPGA入门学习路径 专业基础 数电(数字电路基础-CSDN博客) 语法 Verilog(Verilog硬件描述语言-CSDN博客) VHDL(VHDL硬件描述语言-CSDN博客) FPGA开发流程 常用接口设计 学习目的:通过简单…

HTML响应式设计的颜色选择器,适配各种屏幕尺寸

颜色选择器 响应式设计的颜色选择器,适配各种屏幕尺寸 支持色相滑块和RGB数值两种调色方式 点击颜色值或复制按钮即可复制十六进制颜色代码 自动根据背景色调整文字颜色确保可读性 包含复制成功提示动画效果 现代化UI设计,采用圆角、阴影和渐变背景 完全…

ChatGPT登录不进怎么办?

ChatGPT登录不进的核心原因分类ChatGPT登录失败并非单一问题导致,通常与网络环境、账号状态、设备设置及平台限制相关,不同场景下的故障表现与诱因存在明显差异,可分为以下四类:网络连接与地域限制:ChatGPT对访问地域有…

【ConcurrentHashMap】实现原理和HashMap、Redis哈希的区别

【ConcurrentHashMap】实现原理和HashMap、Redis哈希的区别【一】核心思想【1】HashMap​(1)概括(2)🚀线程不安全的场景和原因1-场景一:Put 操作导致的数据覆盖/丢失 (Lost Update)​​2-场景二&#xff1a…

Android 中使用开源库 ZXing 生成二维码图片

在 Android 中生成二维码是一个比较常见的功能,可以使用开源库 ZXing(Zebra Crossing)库来实现,这是一个非常流行的二维码生成和扫描库。 1、添加依赖库 在 app/build.gradle.kt 中添加依赖库。 dependencies { ......implementat…

vue 如何使用 vxe-table 来实现跨表拖拽,多表联动互相拖拽数据

vue 如何使用 vxe-table 来实现跨表拖拽,多表联动互相拖拽数据 row-drag-config.isCrossTableDrag 启用跨表格、多表格互相拖拽;跨表拖拽需要确保数据主键不重复,通过 row-config.keyField 指定主键字段名 查看官网:https://vxe…

微生产力革命:AI解决生活小任务分享会

微生产力革命的概念微生产力革命指利用AI技术高效解决日常琐碎任务,释放时间与精力。其核心在于将重复性、低价值的事务自动化,聚焦创造性或高价值活动。AI解决生活小任务的典型场景健康管理 AI健身助手可定制个性化训练计划,通过摄像头实时纠…

标量、向量、矩阵和张量的区别

注:本文为 “标量、向量、矩阵和张量的区别” 相关合辑。 英文引文,机翻未校。 如有内容异常,请看原文。 Difference Between Scalar, Vector, Matrix and Tensor 标量、向量、矩阵和张量的区别 Last Updated : 06 Aug, 2025 In the conte…

VScode,设置自动保存

在搜索框输入“autoSave”或VSCode提供以下自动保存选项: 在搜索框输入“autoSave” Off:禁用自动保存。 On Focus Change:当您将焦点从编辑器移开时自动保存。 On Window Change:当您切换窗口选项卡或编辑器时自动保存。 After D…

2025.8.27链表_链表逆置

链表中的指针只是用来标记,具体连接方式,是按照node.next链接。JAVA中头节点存东西,不是空的。核心原理:Java 的参数传递是"值传递",但对象引用是"值传递引用"也就是传过来了ListNode head。headh…

ssc37x平台的音频应用demo

//ao_test.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include

PPT处理控件Aspose.Slides教程:在.NET中开发SVG到EMF的转换器

SVG和EMF都是基于矢量的格式。许多传统的 CAD 和报告工具仍然倾向于使用 EMF 文件格式&#xff0c;因为它具有更广泛的兼容性。如果您正在开发一个 .NET 项目&#xff0c;并希望实现自动化&#xff0c;使 SVG 到 EMF 的转换变得轻松便捷。Aspose.Slides for .NET是一个功能强大…

深入理解HTTP:请求、响应与状态码解析

深入理解HTTP&#xff1a;请求、响应与状态码解析一&#xff1a;概述二&#xff1a;协议版本三&#xff1a;协议详解1&#xff09;请求报文2&#xff09;响应报文四&#xff1a;状态码1&#xff09;1xx&#xff1a;信息状态码2&#xff09;2xx&#xff1a;成功状态码3&#xff…

浏览器输入网址回车后,访问网页全流程解析!

你在地址栏敲下 https://baidu.com.com 并回车&#xff0c;几百毫秒内发生了很多事&#xff1a;浏览器先想“这个域名的 IP 我记得吗”&#xff0c;接着去找 DNS&#xff1b;建立连接时还要握个手&#xff08;TCP/QUIC&#xff09;顺便打个招呼&#xff08;TLS 证书校验、ALPN …

[Linux]学习笔记系列 -- mm/percpu

文章目录mm/percpu.c Per-CPU Variables Management Per-CPU数据管理的核心实现历史与背景这项技术是为了解决什么特定问题而诞生的&#xff1f;它的发展经历了哪些重要的里程碑或版本迭代&#xff1f;目前该技术的社区活跃度和主流应用情况如何&#xff1f;核心原理与设计它的…

企微会话风控「智脑」:源雀SCRM的AI合规守护引擎

一&#xff1a;功能概述源雀SCRM会话风控功能是一款专为企业客户关系管理设计的智能风控解决方案&#xff0c;通过双重审计机制保障企业会话合规性&#xff0c;发送违规内容及时提醒通知企业负责人。二&#xff1a;核心功能1. 普通风控审计基于Lucene全文关键词检索&#xff1a…

Java岗位供过于求,如何破局?

程序员面试背八股&#xff0c;可以说是现在互联网开发岗招聘不可逆的形式了&#xff0c;其中最卷的当属Java&#xff01;&#xff08;网上动不动就是成千上百道的面试题总结&#xff09;你要是都能啃下来&#xff0c;平时技术不是太差的话&#xff0c;面试基本上问题就不会太大…

白话FNN、RNN、Attention和self-attention等

我尝试同过炸酱面的例子,让所有人都能理解Transformer的核心Self-Attention。你在做老北京炸酱面的酱,食谱包括一系列步骤:准备食材(干黄酱、甜面酱、猪肉、葱姜等)、洗菜、切菜(葱姜蒜等)、炒肉,调和干黄酱、甜面酱、凉水、酱油后,加入锅中,慢炖成酱。我们将从FNN开…

路由基础(一):IP地址规划

###IPv4地址 IPv4地址分成网络部分和主机部分 IPv4地址根据定义可分为&#xff1a; A类地址 a. 第一字节的第一位为0 b. 第一字节的数值范围为1-126B类地址 a. 第一字节的第一和第二位为10的一组地址 b. 第一字节的数值范围为128-191C类地址 a. 第一字节的第一、第二和第三位为…

Content-Type是application/x-www-form-urlencoded表示从前端到后端提交的是表单的形式

Content-Type: application/x-www-form-urlencoded 就是表示前端向后端提交的是表单&#xff08;form&#xff09;数据的形式。✅ 精确解释&#xff1a;这个 Content-Type 是 HTML 表单&#xff08;form&#xff09;默认的提交编码方式&#xff0c;它的名字就可以拆解理解&…