# 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.13` - `brace-expansion`:`1.1.12 -> 1.1.14` - `lodash`:`4.17.23 -> 4.18.1` - 根级 `postcss`:`8.5.8 -> 8.5.12` - 手动把 Next patch 版本升级到安全版本: - `next`:`16.2.1 -> 16.2.4` - `eslint-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。 - 保持现有外部调用接口:上传附件、签名下载、读取对象、配置校验。 - 将验证码邮件投递的 sendmail 启动器固定为 `/usr/bin/env` 字面量,避免 Turbopack 把动态 sendmail 路径追踪成大范围文件模式。 ## 不采用的方案 - 未采用 `npm audit fix --force`: - npm 给出的部分修复路径包含 Next 降级,破坏当前 `Next.js 16 + React 19` 运行线。 - 未采用 `proxy-agent@8.0.1` override: - 旧 `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 回归,风险可控。 ## 已执行命令 ```bash 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.ts` Turbopack broad file pattern warning。