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,最简单的上手路径是:
- 在本地跑一下:
osv-scanner -L ./package-lock.json(Node.js 项目)或者osv-scanner --sbom=sbom.json(已有 SBOM 的团队) - 看看扫出了多少漏洞,筛选出高危项:
osv-scanner -L . --severity=high - 如果结果能接受,把 Action 加进 CI:参考
google/osv-scanner-action - 如果需要合规 SBOM 输出:
osv-scanner --sbom=output.cdx.json --format=cyclonedx
如果你用的是 GitHub,可以直接装 OSV-Scanner GitHub Action,在 PR 评论里自动告诉你”这个依赖有这些漏洞,建议升级到 x.x.x 版本”——不用再靠人工查 Changelog。
相关链接
- 仓库:https://github.com/google/osv-scanner
- 官方文档:https://google.github.io/osv-scanner/
- OSV.dev 数据库:https://osv.dev/
- GitHub Action:https://github.com/google/osv-scanner-action
- v2.5.0 更新说明:https://github.com/google/osv-scanner/releases/tag/v2.5.0
评论区
登录后可评论。