首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >9.8K Star!谷歌开源神器 OSV-Scanner,一条命令扫出所有依赖漏洞!

9.8K Star!谷歌开源神器 OSV-Scanner,一条命令扫出所有依赖漏洞!

作者头像
开源星探
发布2026-05-06 11:18:37
发布2026-05-06 11:18:37
2140
举报
文章被收录于专栏:翩翩白衣少年翩翩白衣少年

作为一名开发者,或者经常 Vibe Coding 的人,相信大家跟各种「第三方依赖」打交道比较多。

写个前端项目,npm install 一下,几十上百个依赖就进来了;写个 Python 脚本,pip install 一堆包;Java 项目的 pom.xml 更是写得满满当当。

依赖让我们的开发效率大大提升,但背后隐藏的安全风险,也是不容小觑的。

省事是省事了,但背后的安全风险往往让人防不胜防。你引入的可能是别人写好的轮子,但同时也可能把别人代码里的漏洞一并带进了自己的项目。

等问题发生了,再去补救往往已经来不及了。

今天就给大家介绍一款由 Google 官方出品的开源漏洞扫描工具——OSV-Scanner,它能帮你轻松解决这个问题。

项目介绍

OSV-Scanner 是 Google 开源的一款轻量级命令行工具,专门用于扫描项目依赖中的已知安全漏洞。

它能连接你的项目依赖列表与 OSV.dev 数据库中的漏洞信息,快速定位哪些依赖存在安全隐患。

这个项目诞生于 Google 的安全团队,是一个官方支持的 OSV 数据库前端工具。与其他漏洞扫描工具不同,OSV-Scanner 基于开源且权威的 OSV.dev 数据库,每个漏洞公告都来自于可信的来源。

目前这个项目在 GitHub 上已经有 9.8k Star。

核心亮点
  • 支持超多语言:包括 C/C++、Dart、Elixir、Go、Java、JavaScript、PHP、Python、R、Ruby、Rust 等 11+ 种主流语言。
  • 支持主流包管理器:覆盖了 npm、pip、yarn、maven、go modules、cargo、gem、composer、nuget 等 19+ 种锁文件类型。
  • 容器镜像分层扫描:支持容器镜像的分层扫描,能够识别漏洞是在哪个容器层引入的,还能区分是操作系统包的漏洞还是语言依赖的漏洞。
  • 完全离线模式:OSV-Scanner 提供了离线模式。你可以先预下载 OSV 数据库到本地,然后在断网的情况下完成扫描,无需担心代码或依赖信息泄露。
  • 引导式修复建议:会根据依赖深度、漏洞严重程度、修复策略等因素,推荐最小化的版本升级方案。
  • 许可证扫描:除了漏洞扫描,还能帮你检查依赖的许可证信息。
主要功能

1、源码目录扫描

这是最基本也是最常用的功能。你只需要一条命令,就能递归扫描指定目录中的所有支持的包文件:

代码语言:javascript
复制
osv-scanner scan source -r /path/to/your/dir

它会自动识别 package.json、go.mod、pom.xml 等文件,然后检查里面的依赖是否存在已知漏洞。

更厉害的是,它还支持调用分析功能,能够判断漏洞函数是否真的在你的项目中被使用,这样可以大大减少误报,让告警更精准。

2、容器镜像扫描

对于容器镜像,你可以这样扫描:

代码语言:javascript
复制
osv-scanner scan image my-image-name:tag

它会进行分层扫描,让你清楚地知道每个漏洞是在哪个层引入的,这样修复起来更有针对性。

3、多种输出格式

OSV-Scanner 支持多种输出格式,包括表格、Markdown、JSON、SPDX 等,你可以根据需要选择:

代码语言:javascript
复制
# 输出 JSON 格式
osv-scanner scan -L package-lock.json --format json

# 保存到文件
osv-scanner scan -L package-lock.json --output-file scan-results.txt

甚至还有 --serve 标志,可以直接在本地 8000 端口启动一个 HTML 报告,查看起来更直观。

4、Pre-Commit 集成

你还可以把 OSV-Scanner 集成到 pre-commit 钩子中,这样每次提交代码前都会自动扫描一遍,把问题扼杀在摇篮里:

代码语言:javascript
复制
repos:
  - repo: https://github.com/google/osv-scanner/
    rev: v2.2.4
    hooks:
      - id: osv-scanner
快速入手

官方推荐的方式是直接下载预编译的二进制文件,大家可以在 GitHub Releases 页面找到对应你平台的版本。

如果你已经安装了 Go 环境,也可以直接用 go install 安装:

代码语言:javascript
复制
go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest

安装完成后,你可以用以下命令验证:

代码语言:javascript
复制
osv-scanner --version

最基本的用法就是扫描一个源码目录:

代码语言:javascript
复制
# 扫描当前目录
osv-scanner scan -r .

# 扫描指定目录
osv-scanner scan -r /path/to/your/project

如果你只想扫描某个特定的锁文件:

代码语言:javascript
复制
osv-scanner scan -L package-lock.json

扫描 Docker 镜像:

代码语言:javascript
复制
osv-scanner scan image my-image:latest

注意:这个功能需要你的系统中安装了 docker 命令。

离线模式

首先下载离线数据库:

代码语言:javascript
复制
osv-scanner --offline --download-offline-databases ./path/to/your/dir

然后就可以在断网情况下扫描了:

代码语言:javascript
复制
osv-scanner --offline -r ./your-project

引导式修复

对于 npm 项目,可以这样使用修复功能:

代码语言:javascript
复制
# 命令行模式
osv-scanner fix \
    --max-depth=3 \
    --min-severity=5 \
    --ignore-dev \
    --strategy=in-place \
    -L path/to/package-lock.json

# 交互式模式
osv-scanner fix \
    -M path/to/package.json \
    -L path/to/package-lock.json

许可证扫描

检查依赖许可证:

代码语言:javascript
复制
# 只显示许可证摘要
osv-scanner --licenses path/to/repository

# 检查是否符合白名单
osv-scanner --licenses="MIT,Apache-2.0" path/to/directory
写在最后

在开源软件无处不在的今天,依赖安全已经成为每个开发者都必须重视的问题。

OSV-Scanner 这样的工具,让我们能够用极低的成本,就能给自己的项目做一次全面的安全体检。

它的优势很明显:

  • • Google 官方出品,质量有保障
  • • 支持的生态非常全面
  • • 功能丰富,从扫描到修复一条龙
  • • 可以离线使用,隐私有保障
  • • 轻量级,性能出色

无论你是个人开发者,还是在企业中工作,都建议把 OSV-Scanner 加入到你的开发工作流中。定期给项目做个扫描,及时发现和修复漏洞,让你的代码更安全。

GitHub:

https://github.com/google/osv-scanner

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源星探 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目介绍
  • 核心亮点
  • 主要功能
  • 快速入手
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档