3.2 KiB
3.2 KiB
Boss 依赖漏洞治理记录
更新时间:2026-04-27
本次治理范围
- 处理 Web/npm 依赖:
package.json、package-lock.json。 - 处理应用源码中与漏洞依赖绑定的附件存储实现:
src/lib/boss-storage-aliyun-oss.ts。 - 处理构建追踪 warning:
src/lib/boss-mail.ts。 - 未改 Android 工程、
local-agent或部署脚本。 - 修复策略:先运行
npm audit --json定位来源;不使用npm audit fix --force;对没有安全小版本升级路径的依赖链,改为移除依赖并用项目内最小实现替换。
漏洞统计
治理前 npm audit --json:
- total:
14 - high:
6 - moderate:
2 - low:
6 - critical:
0
第一轮治理后 npm audit --json:
- total:
11 - high:
3 - moderate:
2 - low:
6 - critical:
0
最终治理后 npm audit:
found 0 vulnerabilities
已应用的安全修复与替换
npm audit fix自动更新传递依赖:@xmldom/xmldom:0.8.11 -> 0.8.13brace-expansion:1.1.12 -> 1.1.14lodash:4.17.23 -> 4.18.1- 根级
postcss:8.5.8 -> 8.5.12
- 手动把 Next patch 版本升级到安全版本:
next:16.2.1 -> 16.2.4eslint-config-next:16.2.1 -> 16.2.4
- 使用 npm
overrides将 Next 内部postcss收敛到安全版本:postcss:8.5.12
- 移除旧 OSS SDK 与代理链:
- 移除
ali-oss - 移除
@types/ali-oss - 移除
proxy-agent
- 移除
- 将阿里云 OSS 附件存储改为项目内原生 REST 客户端:
- 使用 Node
fetch发起PUT / GET / bucketInfo。 - 使用
crypto.createHmac("sha1")生成 OSS V1 Authorization 与签名下载 URL。 - 保持现有外部调用接口:上传附件、签名下载、读取对象、配置校验。
- 使用 Node
- 将验证码邮件投递的 sendmail 启动器固定为
/usr/bin/env字面量,避免 Turbopack 把动态 sendmail 路径追踪成大范围文件模式。
不采用的方案
- 未采用
npm audit fix --force:- npm 给出的部分修复路径包含 Next 降级,破坏当前
Next.js 16 + React 19运行线。
- npm 给出的部分修复路径包含 Next 降级,破坏当前
- 未采用
proxy-agent@8.0.1override:- 旧
urllib@2通过 CommonJS lazy require 使用proxy-agent@5,强制替换为 ESM 版本存在运行时破坏风险。
- 旧
- 未采用
ali-oss@6.19.0-audit.1:- 实测会把漏洞转移到
urllib@3 -> undici@5链,npm audit仍剩3条漏洞。
- 实测会把漏洞转移到
- 未等待 Next 官方 patch:
- 当前可以用
overrides.postcss=8.5.12通过 lint/build 回归,风险可控。
- 当前可以用
已执行命令
npm audit --json
npm audit fix
npm install next@16.2.4 eslint-config-next@16.2.4 --save-exact
npm install
npm audit
npm ls ali-oss proxy-agent urllib undici postcss next --all
npx tsx --test tests/boss-mail.test.ts tests/aliyun-oss-storage.test.ts
npm run lint
npm run build
最终验证结果:
npm audit:通过,found 0 vulnerabilities。npm ls ali-oss proxy-agent urllib undici postcss next --all:通过,漏洞依赖链已不存在;next使用postcss@8.5.12。npx tsx --test tests/boss-mail.test.ts tests/aliyun-oss-storage.test.ts:5/5通过。npm run lint:通过。npm run build:通过;未再出现boss-mail.tsTurbopack broad file pattern warning。