登记项,B6 冻结期不动工。 解冻条件:DSR 发布 B6 evidence frozen。
发现于 dependabot #333–#337 的 review(pr-daemon-60),本 issue 收敛其中不属于任何一个 PR 的仓库级欠账。
1. npm audit 的 4 个 high:单一根因 multer,但升级修不掉
Security Audit 闸门当前为红,high=4 critical=0。四条 advisory 的根因是同一个生产依赖 multer@2.2.0;三个 @nestjs/* 条目只是经 @nestjs/platform-express 的传递效应,不是三个独立问题。
GHSA-wc9g-mqfw-jrwm crafted multipart field names → DoS
GHSA-qfvm-cv95-jqjf aborted uploads 的 file descriptor 泄漏 → DoS
GHSA-qvfw-j98x-7q72 async fileFilter 竞态 → 绕过文件大小限制
GHSA-535w-7cp7-47q4 field name 中超大数组下标 → DoS
为什么不是紧急项(评估于 2026-09-09,用于判断是否够 B6 冻结的安全例外「可外部触发 且 不可逆/涉资金密钥」):
- 不可逆?否 —— 全为可用性影响,无状态损坏。
- 涉资金/密钥?否 —— 不触及签名路径,不触及
node_state.json。
- 可外部触发?在本服务中否 —— 全部 32 条 HTTP 路由中,
FileInterceptor / FilesInterceptor / AnyFilesInterceptor / @UploadedFile / multipart 命中数均为 0,main.ts 亦无上传中间件。multer 由 @nestjs/platform-express 传递引入,但从未挂载到任何路由;四条 advisory 均要求攻击者发送一个 multer 会实际解析的 multipart 请求。
为什么 npm audit fix 解决不了(接手前请先看这段,可省一轮试错):
multer@latest = 2.3.0 ← 修复版存在
@nestjs/platform-express@latest = 12.0.1 ← 本仓已是最新
└─ dependencies.multer = "2.2.0" ← 仍钉在有洞版本
上游未跟进,靠版本升级无解。可行路径是 package.json 加 overrides 强推 multer@2.3.0,并验证 platform-express 在 2.3.0 上无行为回归。这是需要判断的改动,不是 dependabot 能代劳的。
2. lockfile 混源,且它让 npm audit 在本地成为坏掉的量具
base lockfile 混用两个 registry:16 条 registry.npmmirror.com vs 659 条 registry.npmjs.org。
比"不整洁"严重的是:本机默认 registry 即 npmmirror,而它没有实现 audit 接口——
$ npm audit
npm warn audit 404 Not Found - POST https://registry.npmmirror.com/-/npm/v1/security/audits/quick
- [NOT_IMPLEMENTED] /-/npm/v1/security/* not implemented yet
{ error: '[NOT_IMPLEMENTED] /-/npm/v1/security/* not implemented yet' }
npm error audit endpoint returned an error
必须 npm audit --registry=https://registry.npmjs.org 才能拿到真实报告。
这把混源从整洁问题变成量具问题:本地跑 audit 会得到一个长得像"没发现问题"的错误输出,而**「量具坏了」与「没有发现」在输出上无法区分**。建议与第 1 项并入同一个 PR 收敛。
(dependabot #334 已顺手把 prettier-plugin-solidity / @nomicfoundation/slang / @bytecodealliance/preview2-shim 三条换回 npmjs——方向正确,但不应依赖"碰到哪条换哪条"。)
3. CI:Trivy 步骤未产出 sarif 文件
同一 job 内的独立失败,先于上述 PR 即存在:
Path does not exist: trivy-results.sarif
与依赖无关,属 workflow 缺陷。
验收标准
关联
dependabot #333 #334 #335 #336 #337(均已 approve,因 B6 冻结暂不合并;五者 lockfile 同基于 blob 4c6d8bb 互相冲突,谁先合,其余四个 rebase 后的 lockfile 需重新 review)。
1.
npm audit的 4 个 high:单一根因 multer,但升级修不掉Security Audit闸门当前为红,high=4 critical=0。四条 advisory 的根因是同一个生产依赖multer@2.2.0;三个@nestjs/*条目只是经@nestjs/platform-express的传递效应,不是三个独立问题。为什么不是紧急项(评估于 2026-09-09,用于判断是否够 B6 冻结的安全例外「可外部触发 且 不可逆/涉资金密钥」):
node_state.json。FileInterceptor/FilesInterceptor/AnyFilesInterceptor/@UploadedFile/multipart命中数均为 0,main.ts亦无上传中间件。multer 由@nestjs/platform-express传递引入,但从未挂载到任何路由;四条 advisory 均要求攻击者发送一个 multer 会实际解析的 multipart 请求。为什么
npm audit fix解决不了(接手前请先看这段,可省一轮试错):上游未跟进,靠版本升级无解。可行路径是
package.json加overrides强推multer@2.3.0,并验证 platform-express 在 2.3.0 上无行为回归。这是需要判断的改动,不是 dependabot 能代劳的。2. lockfile 混源,且它让
npm audit在本地成为坏掉的量具base lockfile 混用两个 registry:16 条
registry.npmmirror.comvs 659 条registry.npmjs.org。比"不整洁"严重的是:本机默认 registry 即 npmmirror,而它没有实现 audit 接口——
必须
npm audit --registry=https://registry.npmjs.org才能拿到真实报告。这把混源从整洁问题变成量具问题:本地跑 audit 会得到一个长得像"没发现问题"的错误输出,而**「量具坏了」与「没有发现」在输出上无法区分**。建议与第 1 项并入同一个 PR 收敛。
(dependabot #334 已顺手把
prettier-plugin-solidity/@nomicfoundation/slang/@bytecodealliance/preview2-shim三条换回 npmjs——方向正确,但不应依赖"碰到哪条换哪条"。)3. CI:Trivy 步骤未产出 sarif 文件
同一 job 内的独立失败,先于上述 PR 即存在:
与依赖无关,属 workflow 缺陷。
验收标准
npm audit --registry=https://registry.npmjs.org→high=0 critical=0(经 overrides,且 platform-express 回归已验)registry.npmmirror.com计数为 0--registry直接npm audit能返回真实报告,而非NOT_IMPLEMENTEDSecurity Auditjob 全绿,含 Trivy 步骤真实产出trivy-results.sarif关联
dependabot #333 #334 #335 #336 #337(均已 approve,因 B6 冻结暂不合并;五者 lockfile 同基于 blob
4c6d8bb互相冲突,谁先合,其余四个 rebase 后的 lockfile 需重新 review)。