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
配置设置。