Dependency Audit 是一个扫描项目依赖的工具,用于检测安全漏洞、过时包和 license 合规问题。其核心能力为全面审计项目依赖:CVE 漏洞扫描、过时依赖检测、license 合规检查、重复依赖分析,输出按严重程度排序的安全报告和可执行的修复命令。
【使用场景】 适合在以下情况使用:用户想检查依赖安全、用户提及 CVE、vulnerability 或 audit、用户想知道过时的依赖、用户说“审计依赖”或“check dependencies”、用户输入 /dependency-audit。不适合的情况包括:用户只想更新版本、用户想要代码级安全审查、用户想分析运行时依赖、用户想要深度 license 分析、用户想扫描 Docker 镜像。
【主要流程与能力】
- 检测包管理器:依据锁文件判断。package-lock.json 对应 npm(npm audit);yarn.lock 对应 yarn(yarn audit);pnpm-lock.yaml 对应 pnpm(pnpm audit);go.sum 对应 Go(govulncheck ./...);requirements.txt / Pipfile.lock 对应 Python(pip-audit);Cargo.lock 对应 Rust(cargo audit)。
- 漏洞扫描:先检查工具是否可用,缺失工具则跳过。npm 使用 npm audit --json | jq '.metadata.vulnerabilities.total' 解析 vulnerabilities 数量与严重程度(注意 npm audit 在发现漏洞时退出码非 0,不要用 if npm audit ...; then 判断成功);Go 使用 govulncheck ./...(安装 golang.org/x/vuln/cmd/govulncheck@latest);Python 使用 pip-audit(安装 pip install pip-audit)。输出漏洞总数及按 critical/high/medium/low 分类的 CVE 列表。
- 过时依赖检测:npm 使用 npx npm-check-updates --format table;Go 使用 go list -m -u all | grep "[";Python 使用 pip list --outdated。统计过时依赖数量、major/minor/patch 升级分布以及是否有安全相关更新。
- License 合规检查:npm 使用 npx license-checker --json 并按许可证类型统计数量;Go 使用 go-licenses csv ./...(安装 go install github.com/google/go-licenses@latest)。检测重点为 GPL/AGPL 等 copyleft 许可证、未知/自定义许可证、许可证兼容性。
- 生成报告:使用 templates/audit-report.md 模板,输出安全概览(漏洞数量和严重程度分布)、高危漏洞(需要立即修复的 CVE)、过时依赖(按升级难度排序)、License 合规(风险许可证列表)、修复命令(每个问题附带可执行命令)。
【使用方式】 /dependency-audit 执行完整审计;--security 只检查安全漏洞(默认 false);--licenses 只检查 license 合规(默认 false);--fix 自动修复可安全升级的依赖(默认 false)。
【常见错误提示】 不要只看 high/critical,medium 也需要关注,很多攻击链从 medium 升级而来;不要盲目升级所有依赖,应逐个升级并测试,major 升级可能有 breaking changes;不要不检查 transitive 依赖,应分析完整依赖树,漏洞常出在间接依赖中;不要忽略 license 合规,应定期检查,存在 GPL 传染性风险;audit 后应重新生成 lock 文件以确保修复生效;不要忽略已弃用的依赖,应检查弃用警告,弃用包可能有安全风险。