依赖审计是什么
依赖审计是在语言生态内部扫描依赖树中的已知问题。各生态都有官方或社区维护的入口:Node 用 npm audit,Python 用 pip-audit,Go 用 govulncheck,Java 侧常用 OWASP Dependency-Check。它们的共同点是基于漏洞库匹配依赖坐标与版本区间,因此成本低、见效快,适合放进每次构建或每日定时任务。局限也很明显:只能看到依赖声明,看不到运行环境的实际组件,也看不到构建期工具链的问题。
基本信息
| 常用命令 | npm audit / pip-audit / govulncheck / dependency-check |
|---|---|
| 输入 | 锁文件或依赖清单(package-lock.json、requirements.txt、go.mod) |
| 执行时机 | CI 每次构建或每日定时任务 |
| 结果处置 | 忽略清单记录已评估项与到期日期 |
典型使用场景
- 在流水线中作为构建卡点,出现高危依赖则失败并阻断发布
- 每月对存量项目批量跑一次,产出需要升级的依赖清单
- 评估新引入的第三方库:引入前先看它的依赖树是否存在已知问题
- 与镜像扫描对照使用:源码侧看不到运行环境,镜像侧看不到构建期依赖
- 把忽略项登记为有到期时间的记录,避免长期挂起
常用命令
常用命令
npm audit --json > npm-audit.json # Node 项目,输出结构化结果
pip-audit -r requirements.txt # Python 项目
govulncheck ./... # Go 模块
# Java 项目可用 OWASP Dependency-Check 生成报告
# 部分工具需要先同步漏洞库,离线环境要准备本地数据源
# 关注点:直接依赖与传递依赖都要覆盖工具与特点
| 工具 | 生态 | 特点 |
|---|---|---|
| npm audit | Node.js | 直接读取锁文件,支持自动建议升级版本 |
| pip-audit | Python | 支持 requirements 与虚拟环境,输出可机器解析 |
| govulncheck | Go | 基于官方漏洞数据库,可定位到实际调用的代码路径 |
| Dependency-Check | 多生态 | 支持 Java 与多种包管理器,报告格式丰富 |
依赖审计与镜像扫描覆盖范围重叠但不完全一致:源码仓库侧看不到运行环境,镜像侧看不到构建期依赖,两者配合才能覆盖全链路。
忽略清单必须有到期时间:只写『已评估,风险可接受』的条目会在人员更替后变成无人负责的黑洞。