npm-audit

运行安全审计

概要

npm audit [--json|--parseable|--audit-level=(low|moderate|high|critical)]
npm audit fix [--force|--package-lock-only|--dry-run]
common options: [--production] [--only=(dev|prod)]

示例

扫描你的项目是否存在漏洞,并自动为易受攻击的依赖安装任何兼容更新:

$ npm audit fix

在不修改 node_modules 的情况下运行 audit fix,但仍然更新 pkglock:

$ npm audit fix --package-lock-only

跳过更新 devDependencies

$ npm audit fix --only=prod

audit fix 为顶层依赖安装 semver-major 更新,而不仅仅是与 semver 兼容的更新:

$ npm audit fix --force

进行试运行以了解 audit fix 将做什么,并以 JSON 格式输出安装信息:

$ npm audit fix --dry-run --json

扫描你的项目中的漏洞并仅显示详细信息,而不修复任何内容:

$ npm audit

获取 JSON 格式的详细审计报告:

$ npm audit --json

以纯文本结果获取详细的审计报告,由制表符分隔,以便将来在脚本或命令行后期处理中重复使用,例如,选择打印的一些列:

$ npm audit --parseable

要解析列,你可以使用例如 awk,并打印其中的一些:

$ npm audit --parseable | awk -F $'\t' '{print $1,$4}'

仅当结果包含中等或更高级别的漏洞时,审核才会失败:

$ npm audit --audit-level=moderate

描述

audit 命令将项目中配置的依赖的描述提交到默认注册表,并要求报告已知漏洞。 返回的报告包括有关如何处理此信息的说明。 如果没有发现漏洞,该命令将以 0 退出代码退出。

你还可以通过运行 npm audit fix 让 npm 自动修复漏洞。 请注意,某些漏洞无法自动修复,需要人工干预或审查。 另请注意,由于 npm audit fix 在引擎盖下运行一个成熟的 npm install,适用于安装程序的所有配置也将适用于 npm install - 所以像 npm audit fix --package-lock-only 这样的东西将按预期工作。

默认情况下,如果发现任何漏洞,审计命令将以非零代码退出。 在 CI 环境中包含 --audit-level 参数以指定将导致命令失败的最低漏洞级别可能很有用。 此选项不过滤报告输出,它只是更改命令的失败阈值。

提交的内容

  • npm_version
  • node_version
  • platform
  • node_env
  • package-lock.json 或 npm-shrinkwrap.json 的清理版本

擦洗

为了确保审计数据包中不包含潜在的敏感信息,某些依赖可能会将其名称(有时是版本)替换为不透明的不可逆标识符。 它适用于以下依赖类型:

  • 任何引用为非默认注册表配置的范围的模块都会清除其名称。 (也就是说,你为它做了 npm login --scope=@ourscope 的范围。)
  • 所有 git 依赖的名称和说明符都被清除了。
  • 所有远程 tarball 依赖的名称和说明符都被清除了。
  • 所有本地目录和 tarball 依赖的名称和说明符都被清除了。

不可逆标识符是特定于会话的 UUID 的 sha256 和被替换的值,以确保有效负载中的一致值在运行之间不同。

退出码

如果没有发现漏洞,npm audit 命令将以 0 退出代码退出。

如果发现漏洞,退出代码将取决于 audit-level 配置设置。

也可以看看

npm 中文网 - 粤ICP备13048890号