pnpm audit
检查已安装程序包的已知安全问题。
如果发现安全问题,请尝试通过 pnpm update 更新你的依赖项。 如果简单的更新不能解决所有问题,请使用 overrides 来强制使用不易受攻击的版本。 例如,如果 lodash@<2.1.0 易受攻击,可用这个 overrides 来强制使用 lodash@^2.1.0:
overrides:
"lodash@<2.1.0": "^2.1.0"
或者,运行 pnpm audit --fix。
如果你想容忍一些不影响项目的漏洞,可以使用 auditConfig.ignoreGhsas 设置。
自 v11 起, pnpm audit 查询注册源的 /-/npm/v1/security/advisories/bulk 端点。 响应中不包含 CVE 标识符,因此公告会按 GitHub 公告 ID (GHSA) 进行筛选。 如果你之前在 auditConfig.ignoreCves 下列出了 CVE,在 auditConfig.ignoreGhsas 下将每个条目替换为对应的 GHSA-xxxx-xxxx-xxxx 值(显示在 pnpm audit 输出的 More info 列)。
命令
signatures
添加于:v11.1.0
pnpm audit signatures
验证已安装软件包的 ECDSA 注册表签名是否与每个注册源在 /-/npm/v1/keys 处发布的公钥一致。 通过 注册源 配置的作用域注册表将被遵守;未发布签名密钥的注册源将被跳过。
如果任何软件包的签名无效,或者注册源声明了签名密钥,但发布的软件包没有签名,则该命令将以代码 1 退出。 与 --json 结合使用,可获得机器可读的输出。
配置项
--audit-level <severity>
- 类型: low, moderate, high, critical
- 默认值:low
仅打印严重性大于或等于 "severity" 的警告
也可以通过 auditLevel 在 pnpm-workspace.yaml 中进行设置。
--fix
强制将不易受攻击的版本,添加覆盖到 pnpm-workspace.yaml 文件中。
使用 --fix=update (在 v11.0.0 中添加)通过更新锁文件中的软件包而不是添加覆盖来修复漏洞。
当设置了 minimumReleaseAge 时, --fix 还会将每个警告的最小补丁版本添加到 minimumReleaseAgeExclude 中,具体位置在 pnpm-workspace.yaml 文件中。,因此无需等待发布期限即可安装安全修复程序。
--interactive, -i
添加于:v11.0.0
审阅由 --fix 选择的警报,然后选择要应用的那些。 仅可与 --fix 一起使用。
--json
以 JSON 格式输出审查报告。
--dev, -D
仅审查开发依赖项。
--prod, -P
仅审查生产依赖项。
--no-optional
不审查 optionalDependencies。
--ignore-registry-errors
如果注册源响应了非 200 状态码,则进程应以 0 退出。 所以只有当注册源真正成功响应发现的漏洞时,该进程才会执行失败。
--ignore-unfixable
添加于:v10.11.0
忽略所有没有解决方式的警报。
自 v11 版本起,无法修复的漏洞公告由 GHSA 而非 CVE 进行跟踪。
--ignore <vulnerability>
添加于:v10.11.0
按 GitHub 公告 ID (GHSA) 忽略漏洞。 v11 版本之前,此标志位接受 CVE 标识符。
配置
auditConfig
auditConfig.ignoreGhsas
pnpm audit 命令将忽略的 GHSA 代码列表。
auditConfig:
ignoreGhsas:
- GHSA-42xw-2xvc-qx8m
- GHSA-4w2v-q235-vp99
- GHSA-cph5-m8f7-6c5x
- GHSA-vh95-rmgr-6w4m
在 v11 之前, auditConfig.ignoreCves 用于按 CVE 标识符过滤公告。 该设置已不再被识别。