首页/安全/漏洞与攻击面速查/语言级依赖审计(npm/pip/Go)
扫描与验证方法50 条

语言级依赖审计(npm/pip/Go)

各语言生态自带依赖审计入口:npm audit、pip-audit、govulncheck 等可在 CI 中扫描依赖树中的已知问题,成本低、见效快。

漏洞与攻击面速查安全更新于 2026-10-13

依赖审计是什么

依赖审计是在语言生态内部扫描依赖树中的已知问题。各生态都有官方或社区维护的入口: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 auditNode.js直接读取锁文件,支持自动建议升级版本
pip-auditPython支持 requirements 与虚拟环境,输出可机器解析
govulncheckGo基于官方漏洞数据库,可定位到实际调用的代码路径
Dependency-Check多生态支持 Java 与多种包管理器,报告格式丰富
依赖审计与镜像扫描覆盖范围重叠但不完全一致:源码仓库侧看不到运行环境,镜像侧看不到构建期依赖,两者配合才能覆盖全链路。
忽略清单必须有到期时间:只写『已评估,风险可接受』的条目会在人员更替后变成无人负责的黑洞。

易错点

  • CI 中审计失败直接放行(continue-on-error),风险长期无人处理
  • 只看直接依赖:大量风险来自传递依赖,修复常需从升级直接依赖入手
  • 忽略清单只记结论不记到期日:条目长期滞留,风险性质随时间变化而无人复核
  • 审计通过就认为运行环境安全:构建期工具与基础镜像组件不在扫描范围内

数据来源与参考

  • npm 文档(npm audit)
  • pip-audit 项目文档
  • Go 官方文档(govulncheck)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌