Vue、React 無(wú)一幸免!嚴(yán)重漏洞速查!
sha.js 是 JavaScript 生態(tài)里最常用的輕量級(jí)加密庫(kù)。
它由 Browserify 社區(qū)維護(hù),體積不足 20 KB,卻實(shí)現(xiàn)了 SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 全系列算法,是 crypto-browserify、webpack、web3.js 等數(shù)百個(gè)流行包的“根依賴(lài)”。
而就在前幾天,美國(guó) NVD(國(guó)家漏洞庫(kù))正式發(fā)布 CVE-2025-9288,指向 JavaScript 加密庫(kù) sha.js。

事件概述
美國(guó) NVD(國(guó)家漏洞庫(kù))正式發(fā)布 CVE-2025-9288

指向 JavaScript 加密庫(kù) sha.js。該漏洞被評(píng)定為 嚴(yán)重級(jí)(CVSS 9.1),影響 每周 1 400 萬(wàn)次下載 的 Node.js 與瀏覽器端項(xiàng)目,堪稱(chēng) 2025 年波及面最廣的前端供應(yīng)鏈?zhǔn)录弧?/p>

- 官方修復(fù)版本:sha.js 2.4.12(已推送 npm)
- 受影響版本:≤2.4.11
- 發(fā)現(xiàn)與披露:GitHub Advisory + FreeBuf 首發(fā)技術(shù)長(zhǎng)文
漏洞原理 30 秒速讀
sha.js 在處理輸入時(shí) 未校驗(yàn)數(shù)據(jù)類(lèi)型與長(zhǎng)度,攻擊者通過(guò)構(gòu)造畸形對(duì)象:
{ length: -1 }即可觸發(fā):
- 哈希降級(jí) / 碰撞:相同摘要對(duì)應(yīng)不同數(shù)據(jù)
- DoS 無(wú)限循環(huán):CPU 被瞬間打滿(mǎn)
- 私鑰恢復(fù):若哈希結(jié)果作為隨機(jī)數(shù) nonce,可反向推導(dǎo)私鑰
波及面:35 個(gè)庫(kù) / 框架 / 工具鏈
我們綜合 NVD、GitHub Advisory、npm 依賴(lài)樹(shù) 以及 主流安全媒體 的交叉驗(yàn)證,整理出 35 條 確認(rèn)受影響的庫(kù)與場(chǎng)景.
覆蓋 Web3、前端、Node 服務(wù)、桌面與移動(dòng)開(kāi)發(fā)全鏈路。
★15 個(gè)高頻直接依賴(lài)庫(kù)
# | 典型受感染版本 | 備注 | |
1 | browserify | ≤17.0.0 | 打包器 |
2 | create-hash | ≤1.2.0 | 被大量加密庫(kù)二次封裝 |
3 | create-hmac | ≤1.1.7 | HMAC 封裝 |
4 | crypto-browserify | ≤3.12.0 | Web 環(huán)境 crypto polyfill |
5 | crypto-js | ≤4.1.1 | 重新打包 sha.js 舊代碼 |
6 | elliptic | ≤6.5.4 | 橢圓曲線(xiàn)運(yùn)算 |
7 | ethers | ≤4.0.47 / 5.6.8 | 以太坊 JS SDK |
8 | ganache-cli | ≤6.12.2 | 本地區(qū)塊鏈 |
9 | hash.js | ≤1.1.7 | sha.js 的別名發(fā)布 |
10 | keccak | ≤3.0.2 | 以太坊 Keccak 封裝 |
11 | merkle-patricia-tree | ≤4.2.4 | 以太坊狀態(tài)樹(shù) |
12 | mocha | ≤9.2.2 | 測(cè)試框架(開(kāi)發(fā)依賴(lài)) |
13 | parcel-bundler | ≤2.8.3 | 零配置打包器 |
14 | web3 | ≤1.7.0 | 以太坊官方 JS SDK |
15 | webpack | ≤4.46.0 / ≤5.74.0 | 構(gòu)建工具 |
20 個(gè)間接或場(chǎng)景級(jí)受影響庫(kù) / 框架 / 工具鏈
# | 包名 / 組件 | 場(chǎng)景說(shuō)明 |
16 | @solana/web3.js | Solana 鏈 JS SDK(歷史版本鎖定) |
17 | @truffle/contract | Truffle 測(cè)試套件 |
18 | @vue/cli-service | Vue CLI 打包鏈 |
19 | @angular-devkit/build-angular | Angular CLI |
20 | @react-native-community/cli | React Native CLI |
21 | hardhat | 以太坊本地開(kāi)發(fā)框架 |
22 | remix-dev | Remix 全棧框架 |
23 | next | Next.js SSR 框架 |
24 | nuxt | Nuxt.js SSR 框架 |
25 | expo-cli | Expo RN 開(kāi)發(fā)工具 |
26 | serverless | Serverless Framework |
27 | electron-builder | Electron 打包器 |
28 | @babel/preset-env | Babel 轉(zhuǎn)譯鏈 |
29 | jest-environment-jsdom | Jest 測(cè)試環(huán)境 |
30 | ts-node | TypeScript 運(yùn)行時(shí) |
31 | lerna | Monorepo 管理 |
32 | gulp-cli | 流式構(gòu)建工具 |
33 | rollup-plugin-node-polyfills | Rollup Node Polyfill |
34 | vite | Vite 構(gòu)建工具(部分插件) |
35 | astro | Astro 靜態(tài)站點(diǎn)生成器 |
30 秒自查清單
# 1. 查看本機(jī) / 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一鍵修復(fù)方案(復(fù)制即用)
# 升級(jí)到官方修復(fù)版
npm install sha.js@2.4.12 --save-exact
# 自動(dòng)修復(fù)所有依賴(lài)鏈
npm audit fix --force
# 重新構(gòu)建并測(cè)試
npm run build臨時(shí)緩解(無(wú)法立即升級(jí)時(shí)):在調(diào)用 sha.js 前加入類(lèi)型校驗(yàn),僅允許 string 或 Buffer 類(lèi)型輸入。
官方參考鏈接:
- NVD 詳情:https://nvd.nist.gov/vuln/detail/CVE-2025-9288
- GitHub Advisory:https://github.com/browserify/sha.js/security/advisories/GHSA-95m3-7q98-8xr5
- FreeBuf 深度分析:https://www.freebuf.com/articles/web/445352.html






























