Google OSV-Scanner:一个命令扫清项目依赖里的漏洞

OSV-Scanner 是 Google 开源的漏洞扫描工具,在 GitHub 上已经拿到 10,609 个 Star。

它干的事很直接:扫描项目的依赖清单,查出哪些依赖存在已知漏洞。支持 11+ 编程语言生态、19+ 锁文件格式、Linux 系统包、容器镜像,还能给出修复建议。

正文顶部截图

1、 为什么是 OSV

市面上漏洞扫描工具不少,但 OSV-Scanner 的底层数据库 OSV.dev 有自己的一套逻辑。

多数商业扫描器的漏洞库是闭源的,你没法知道它为什么报这个漏洞、数据来源是哪里。OSV.dev 的数据全部来自公开权威来源——GitHub Security Advisories、RustSec Advisory Database、Ubuntu 安全通知等。

每个漏洞的描述格式统一,版本影响范围用机器可读的方式存储,能精确匹配开发者项目里的依赖列表。结果是误报率低很多。

更直接的好处:任何人都可以对漏洞条目提改进建议,社区参与感强,数据质量也在持续变好。

2、 能用在哪

OSV-Scanner 不是只扫一种项目。它覆盖的范围比较广:

  • 语言生态:C/C++、Dart、Elixir、Go、Java、JavaScript、PHP、Python、R、Ruby、Rust
  • 包管理器:npm、pip、yarn、Maven、Go modules、Cargo、Gem、Composer、NuGet 等
  • 操作系统:Linux 系统包也能扫
  • 容器镜像:支持层感知扫描,识别基础镜像和应用依赖中的漏洞

README区域截图

3、 怎么用

最基础的用法是扫整个项目目录:

osv-scanner scan source -r /path/to/your/dir

它会递归查找目录下所有支持的锁文件(package.json、go.mod、pom.xml 等),逐个匹配漏洞库。

扫容器镜像也很简单:

osv-scanner scan image my-image-name:tag

如果网络不方便,支持离线模式,先下载本地数据库,之后完全不需要联网:

osv-scanner --offline --download-offline-databases ./path/to/your/dir

4、 不只是发现漏洞

OSV-Scanner 还有一个实验性功能叫 Guided Remediation。它不只是告诉你"有漏洞",还会建议升级到哪个版本能修掉。

支持基于依赖深度、最低严重等级、修复策略等条件过滤建议。目前 npm 和 Maven 项目都可以用:

osv-scanner fix --max-depth=3 --min-severity=5 -L path/to/package-lock.json

还带交互模式,方便一条一条确认要不要升级。

另外它内置了调用分析——如果某个漏洞函数在你的代码里根本没被调用,就不会报警。这个功能能有效减少干扰。

5、 适合谁用

正在维护多语言项目的团队、做 CI/CD 安全流水线的开发者、或者单纯想了解自己项目依赖状况的人,都可以试试 OSV-Scanner。安装很简单,下载预编译二进制或者用 go install 一行就行。

想了解自己项目依赖状况的人,都可以试试 OSV-Scanner。安装很简单,下载预编译二进制或者用 go install 一行就行。

Logo

CANN开发者社区旨在汇聚广大开发者,围绕CANN架构重构、算子开发、部署应用优化等核心方向,展开深度交流与思想碰撞,携手共同促进CANN开放生态突破!

更多推荐