npm audit安全审计与修复
npm audit检测依赖中的已知漏洞,audit fix自动修复兼容版本内的安全问题。
npm audit安全审计
基本用法
Bash
npm audit
输出漏洞报告,按严重程度分级:
| 级别 | 含义 |
|---|---|
| critical | 可被远程执行代码 |
| high | 可导致数据泄露 |
| moderate | 可被利用但影响有限 |
| low | 影响较小 |
详细信息
Bash
# 查看特定漏洞详情
npm audit --json
# 仅显示特定级别以上
npm audit --audit-level=high
输出示例
text
# Run `npm audit` for details.
lodash 4.17.20
Severity: high
Prototype Pollution - https://npmjs.com/advisories/xxx
fix available via `npm audit fix`
node_modules/lodash
my-app * depends on lodash@^4.17.20
在CI中使用
Bash
# CI中发现high以上漏洞时构建失败
npm audit --audit-level=high
YAML
# GitHub Actions
- run: npm audit --audit-level=high
npm audit依赖npm官方漏洞数据库。私有包和未注册的依赖不会被检测。
npm audit fix自动修复
基本用法
Bash
npm audit fix
自动将存在漏洞的依赖升级到修复版本(在semver兼容范围内)。
强制修复
Bash
npm audit fix --force
允许跨大版本升级,可能引入Breaking Changes。
仅修复特定漏洞
Bash
# 查看可修复的漏洞
npm audit
# 手动安装修复版本
npm install lodash@4.17.21
无法自动修复的情况
- 传递依赖漏洞,且顶层依赖未发布修复版本
- 修复版本超出semver范围
- 漏洞无已知修复版本
text
2 vulnerabilities required manual review
npm audit fix --force有风险,可能破坏依赖兼容性。生产项目慎用,优先手动升级并测试。
要点总结
- npm audit扫描依赖树中的已知漏洞,按严重程度分级
- --audit-level可在CI中设置漏洞阈值,超限则构建失败
- npm audit fix在semver范围内自动升级到修复版本
- --force允许跨大版本修复,有Breaking Changes风险
- 无法自动修复的漏洞需手动处理或使用overrides覆盖