10,879 Stars 的 OSV-Scanner:Google 开源的漏洞扫描器,现在能扫容器、SBOM 和 VS Code 插件了

Google 出品的开源漏洞扫描器 OSV-Scanner,已经默默更新到了 v2.5.1。上一次关注它,还是 v1.x 时代能扫 lockfile 的阶段;两年过去,它的扫描范围已经从依赖文件扩展到了容器镜像、SBOM 文件,甚至 VS Code 插件本身(.vsix)。如果你还在靠手动查 CVE 列表或者每年跑一次付费扫描服务,10,879 颗星背后这套工具链值得你重新评估。

它到底能扫什么

OSV-Scanner 的核心逻辑很直接:把你项目里的依赖清单(lockfile、SBOM、容器镜像、git 提交记录)扒出来,和 OSV.dev 数据库中的已知漏洞做匹配。数据库覆盖了绝大多数主流开源生态,包括:

  • 编程语言:C/C++、Dart、Elixir、Go、Java、JavaScript、PHP、Python、R、Ruby、Rust
  • 包管理器:npm、pip、yarn、maven、go modules、cargo、gem、composer、nuget 等
  • 操作系统:Linux 系统包(Alpine、Debian、Ubuntu 等)
  • 容器:直接扫描 Docker 镜像的 base image 及其中间件
  • 其他:VS Code 扩展(.vsix)、CycloneDX SBOM、Git 提交记录

v2.5.0(2026年8月7日)做了一次较大的底层迁移,全面接入了 OSV-Scalibr 库。这意味着它现在能支持 Scalibr 生态下的所有 experimental 插件,扫描能力边界大幅扩展。

和 Snyk、Dependabot 相比,差在哪

这是最常被问到的问题。

先说共同点:三者都能扫已知漏洞,都能集成进 CI。核心区别在于数据来源和授权方式。

OSV-Scanner Snyk Dependabot
数据来源 OSV.dev(开源数据库) 自有闭源数据库 GitHub Advisory Database
费用 免费(Apache-2.0) 商业收费 免费(GitHub 用户)
私有依赖 需自建 OSV 实例 支持 部分支持
CI 集成方式 CLI / GitHub Action CLI / API 原生集成
容器扫描 ✅ ✅(付费版) ❌
SBOM 输入 CycloneDX 1.7 SPDX/CycloneDX CycloneDX

OSV-Scanner 的优势在于:数据完全开源(来自 GitHub Security Advisories、RustSec、Ubuntu 安全公告等权威来源),且不收费。适合已经厌烦了年年续费 Snyk/JFrog 的团队,也适合需要 SBOM 生成和上报能力的合规场景。

真实使用门槛

说实话,门槛不高,但有几个地方容易踩坑:

安装:直接下载预编译二进制,或者 go install github.com/google/osv-scanner/cmd/osv-scanner@latest。没有容器镜像的话本地跑,有 Docker 的直接 docker run 更省事。

第一次扫:如果你只有一个 package-lock.json,直接 osv-scanner -L package-lock.json 就能出结果。如果扫出来几十个漏洞,不要慌——需要加 --severity=high 或 --fix-versions 过滤低优先级项。

GitHub Action:官方有 google/osv-scanner-action,一条 workflow 配置即可在 PR 层面卡住有高危漏洞的依赖引入。但注意:Action 默认只在 lockfile 变更时触发,不是全天候扫。

离线场景:v2.5.1 修复了 --offline-vulnerabilities 的一个 bug,现在可以在不访问外网的情况下用本地缓存数据库做匹配,适合内网环境。

性能:官方没有公布具体基准测试数据,但根据社区反馈,扫描一个包含 500+ 包的 Node.js 项目通常在 10 秒以内。Go 写的,编译成单二进制,没有运行时依赖。

适合谁 / 不适合谁

适合:

  • 需要开源 SBOM 生成能力的出口型企业(欧盟 Cyber Resilience Act 已经开始影响供应链合规)
  • 已经在用 OSV.dev 或希望统一漏洞数据格式的团队
  • 不想给 Snyk/JFrog 续费的独立开发者和小型团队
  • 需要在 CI 里强制卡住高危漏洞引入的 DevSecOps 流程

不适合:

  • 需要实时威胁情报(0day)检测能力的场景——它只扫已知漏洞数据库
  • 需要商业支持和服务等级协议的(这是开源项目,没有 SLA)
  • 需要原生支持私有依赖库扫描的(需要额外自建 OSV 实例)

下一步建议

如果你现在还没用过 OSV-Scanner,最简单的上手路径是:

  1. 在本地跑一下:osv-scanner -L ./package-lock.json(Node.js 项目)或者 osv-scanner --sbom=sbom.json(已有 SBOM 的团队)
  2. 看看扫出了多少漏洞,筛选出高危项:osv-scanner -L . --severity=high
  3. 如果结果能接受,把 Action 加进 CI:参考 google/osv-scanner-action
  4. 如果需要合规 SBOM 输出:osv-scanner --sbom=output.cdx.json --format=cyclonedx

如果你用的是 GitHub,可以直接装 OSV-Scanner GitHub Action,在 PR 评论里自动告诉你”这个依赖有这些漏洞,建议升级到 x.x.x 版本”——不用再靠人工查 Changelog。


相关链接

评论区

0 条评论

登录后可评论。

器匠·开发者工具 1959 阅读