`pnpmaudit`显示一个漏洞; `pnpm 为什么`没有列出它

问题描述 投票:0回答:1

我正在尝试解决 Node 包的安全漏洞。

pnpm
和 Dependabot 均报告了该漏洞。 包管理器在此存储库中是
pnpm

pnpm audit
显示:

┌─────────────────────┬────────────────────────────────────────────────────────┐
│ high                │ path-to-regexp outputs backtracking regular            │
│                     │ expressions                                            │
├─────────────────────┼────────────────────────────────────────────────────────┤
│ Package             │ path-to-regexp                                         │
├─────────────────────┼────────────────────────────────────────────────────────┤
│ Vulnerable versions │ >=2.0.0 <3.3.0                                         │
├─────────────────────┼────────────────────────────────────────────────────────┤
│ Patched versions    │ >=3.3.0                                                │
├─────────────────────┼────────────────────────────────────────────────────────┤
│ Paths               │ . > *redacted* > *redacted* >                          │
│                     │ @nestjs/[email protected] > [email protected] │
│                     │                                                        │
│                     │ . > *redacted* >                                       │
│                     │ @nestjs/[email protected] > [email protected] │
│                     │                                                        │
│                     │ . > [email protected]                               │
├─────────────────────┼────────────────────────────────────────────────────────┤
│ More info           │ https://github.com/advisories/GHSA-9wv6-86v2-598j      │
└─────────────────────┴────────────────────────────────────────────────────────┘

pnpm why path-to-regexp --depth=10
显示

❯ p why path-to-regexp --depth=10
Legend: production dependency, optional only, dev only

*redacted*

dependencies:
*redacted*
├─┬ @nestjs/core 10.4.12 peer
│ ├─┬ @nestjs/platform-express 10.4.12 peer
│ │ └─┬ express 4.21.1
│ │   └── path-to-regexp 0.1.10
│ └── path-to-regexp 3.3.0
├─┬ @nestjs/platform-express 10.4.12 peer
│ ├─┬ @nestjs/core 10.4.12 peer
│ │ └── path-to-regexp 3.3.0
│ └─┬ express 4.21.1
│   └── path-to-regexp 0.1.10
├─┬ @nestjs/testing 10.4.12 peer
│ ├─┬ @nestjs/core 10.4.12 peer
│ │ └── path-to-regexp 3.3.0
│ └─┬ @nestjs/platform-express 10.4.12 peer
│   └─┬ express 4.21.1
│     └── path-to-regexp 0.1.10
└─┬ nestjs-console 9.0.0 peer
  └─┬ @nestjs/core 10.4.12 peer
    └── path-to-regexp 3.3.0
*redacted*
└─┬ *redacted* peer
  └─┬ @nestjs/swagger 8.0.7 peer
    ├─┬ @nestjs/core 10.4.12 peer
    │ ├─┬ @nestjs/platform-express 10.4.12 peer
    │ │ └─┬ express 4.21.1
    │ │   └── path-to-regexp 0.1.10
    │ └── path-to-regexp 3.3.0
    └── path-to-regexp 3.3.0

devDependencies:
@nestjs/testing 10.4.12
├─┬ @nestjs/core 10.4.12 peer
│ ├─┬ @nestjs/platform-express 10.4.12 peer
│ │ └─┬ express 4.21.1
│ │   └── path-to-regexp 0.1.10
│ └── path-to-regexp 3.3.0
└─┬ @nestjs/platform-express 10.4.12 peer
  ├─┬ @nestjs/core 10.4.12 peer
  │ └── path-to-regexp 3.3.0
  └─┬ express 4.21.1
    └── path-to-regexp 0.1.10
nestjs-console 9.0.0
└─┬ @nestjs/core 10.4.12 peer
  ├─┬ @nestjs/platform-express 10.4.12 peer
  │ └─┬ express 4.21.1
  │   └── path-to-regexp 0.1.10
  └── path-to-regexp 3.3.0

pnpm why
没有显示[电子邮件受保护],所以我不清楚脆弱的依赖项来自哪里。 Dependabot 和
pnpm audit
都标记了相同的漏洞。

我错过了什么? 谢谢。


有趣的是,这是在 pnpm.lock 中:

  '@nestjs/[email protected](@nestjs/[email protected]([email protected])([email protected])([email protected])([email protected]))(@nestjs/[email protected])':
    dependencies:
      '@fastify/cors': 9.0.1
      '@fastify/formbody': 7.4.0
      '@fastify/middie': 8.3.1
      '@nestjs/common': 10.4.12([email protected])([email protected])([email protected])([email protected])
      '@nestjs/core': 10.4.12(@nestjs/[email protected]([email protected])([email protected])([email protected])([email protected]))(@nestjs/[email protected])([email protected])([email protected])
      fastify: 4.27.0
      light-my-request: 5.13.0
      path-to-regexp: 3.2.0
      tslib: 2.6.2

但我不知道为什么。

node.js security node-modules pnpm npm-vulnerabilities
1个回答
0
投票

正如 Estus Flask 提到的,pnpm.lock 文件中已解决的依赖关系是罪魁祸首。 覆盖依赖关系可以解决该漏洞。 在package.json中:

  "pnpm": {
    "overrides": {
      "path-to-regexp@>=3.2.0 <3.3.0": "^3.3.0"
    }
  },

这意味着“对于

path-to-regexp
包含和
3.2.0
排除之间的每个传递依赖
3.3.0
,使用
path-to-regexp
版本 3.3.0 或更高版本,最高但不包括
4.0.0
”。 这意味着有漏洞的软件包已被修补,但更高版本将被忽略。

© www.soinside.com 2019 - 2024. All rights reserved.