google/osv-scanner
GitHub: google/osv-scanner
基于 OSV.dev 开放数据库的依赖漏洞扫描工具,支持源码、容器镜像扫描及许可证合规检查。
Stars: 8506 | Forks: 530
[](https://scorecard.dev/viewer/?uri=github.com/google/osv-scanner)
[](https://goreportcard.com/report/github.com/google/osv-scanner)
[](https://codecov.io/gh/google/osv-scanner)
[](https://slsa.dev)
[](https://github.com/google/osv-scanner/releases)
使用 OSV-Scanner 查找影响您项目依赖项的现有漏洞。
OSV-Scanner 为 [OSV 数据库](https://osv.dev/)提供了官方支持的前端,并为 [OSV-Scalibr](https://github.com/google/osv-scalibr) 提供了 CLI 接口,将项目的依赖项列表与影响它们的漏洞连接起来。
OSV-Scanner 支持广泛的项目类型、包管理器和功能,包括但不限于:
OSV-Scanner 在底层使用可扩展的 [OSV-Scalibr](https://github.com/google/osv-scalibr) 库来提供此功能。如果目前不支持某种语言或包管理器,请提交 [功能请求](https://github.com/google/osv-scanner/issues)。
#### 底层数据库
底层数据库 [OSV.dev](https://osv.dev/) 与闭源建议数据库和扫描器相比具有多项优势:
以上所有这些都带来了准确且可操作的漏洞通知,从而减少了解决这些漏洞所需的时间。请查看 [OSV.dev](https://osv.dev/) 了解更多详情!
## 基本安装
要安装 OSV-Scanner,请参阅我们文档中的 [安装部分](https://google.github.io/osv-scanner/installation)。OSV-Scanner 的版本发布可以在 GitHub 仓库的 [发布页面](https://github.com/google/osv-scanner/releases) 找到。推荐的方法是下载适用于您平台的预构建二进制文件。或者,您可以使用
`go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest` 从源代码构建。
## 主要功能
欲了解更多信息,请阅读我们的 [详细文档](https://google.github.io/osv-scanner) 以了解如何使用 OSV-Scanner。有关每项功能的详细信息,请单击本 README 中的标题。
请注意:这些是最新 OSV-Scanner V2 beta 的说明。如果您使用的是 V1,请查看 V1 的 [README](https://github.com/google/osv-scanner-v1) 和 [文档](https://google.github.io/osv-scanner-v1/)。
### [扫描源目录](https://google.github.io/osv-scanner/usage)
```
$ osv-scanner scan source -r /path/to/your/dir
```
此命令将递归扫描指定目录以查找任何受支持的包文件(例如 `package.json`、`go.mod`、`pom.xml` 等),并输出任何发现的漏洞。
OSV-Scanner 可以选择使用调用分析来确定项目中是否实际使用了易受攻击的函数,从而减少误报并提供可操作的警报。
OSV-Scanner 还可以检测供应商提供的 C/C++ 代码以进行漏洞扫描。详情请参阅 [此处](https://google.github.io/osv-scanner/usage/#cc-scanning)。
#### 支持的 Lockfiles
OSV-Scanner 支持 11 种以上的语言生态系统和 19 种以上的 lockfile 类型。要检查您的生态系统是否被覆盖,请查看我们的 [详细文档](https://google.github.io/osv-scanner/supported-languages-and-lockfiles/#supported-lockfiles)。
### [容器扫描](https://google.github.io/osv-scanner/usage/scan-image)
OSV-Scanner 还支持对容器映像进行全面、感知层的扫描,以检测以下操作系统包和特定语言依赖项中的漏洞。
| 发行版支持 | 语言工件支持 |
| -------------- | -------------------------- |
| Alpine OS | Go |
| Debian | Java |
| Ubuntu | Node |
| | Python |
有关支持的详细信息,请参阅 [完整文档](https://google.github.io/osv-scanner/supported-languages-and-lockfiles/#supported-artifacts)。
**用法**:
```
$ osv-scanner scan image my-image-name:tag
```

### [许可证扫描](https://google.github.io/osv-scanner/usage/license-scanning/)
使用 deps.dev 数据检查依赖项的许可证。摘要如下:
```
osv-scanner --licenses path/to/repository
```
根据允许的许可证列表(SPDX 格式)进行检查:
```
osv-scanner --licenses="MIT,Apache-2.0" path/to/directory
```
### [离线扫描](https://google.github.io/osv-scanner/usage/offline-mode/)
根据本地 OSV 数据库扫描您的项目。初始数据库下载后不需要网络连接。也可以手动下载数据库。
```
osv-scanner --offline --download-offline-databases ./path/to/your/dir
```
### [引导式修复](https://google.github.io/osv-scanner/experimental/guided-remediation/)(实验性)
OSV-Scanner 提供引导式修复,这是一项根据依赖深度、最低严重性、修复策略和投资回报率等标准建议包版本升级的功能。
我们目前支持修复以下文件中的漏洞:
| 生态系统 | 文件格式(类型) | 支持的修复策略 |
| :-------- | :----------------------------- | :---------------------------------------------------------------------------------------------------------------- |
| npm | `package-lock.json` (lockfile) | [`in-place`](https://google.github.io/osv-scanner/experimental/guided-remediation/#in-place-lockfile-remediation) |
| npm | `package.json` (manifest) | [`relock`](https://google.github.io/osv-scanner/experimental/guided-remediation/#in-place-lockfile-remediation) |
| Maven | `pom.xml` (manifest) | [`override`](https://google.github.io/osv-scanner/experimental/guided-remediation/#override-dependency-versions) |
这可以作为无头 CLI 命令使用,也可以作为交互模式使用。
#### 示例(针对 npm)
```
$ osv-scanner fix \
--max-depth=3 \
--min-severity=5 \
--ignore-dev \
--strategy=in-place \
-L path/to/package-lock.json
```
#### 交互模式(针对 npm)
```
$ osv-scanner fix \
-M path/to/package.json \
-L path/to/package-lock.json
```

## 数据源和隐私
OSV-Scanner 在运行期间与以下外部服务通信:
### [OSV.dev API](https://osv.dev/)
漏洞信息的主要数据源。OSV-Scanner 查询此 API 以检查包是否存在已知漏洞,并识别供应商提供的 C/C++ 依赖项。发送的数据包括包名称、版本、生态系统和文件哈希。使用 [`--offline` 模式](https://google.github.io/osvanner/usage/offline-mode/) 禁用网络请求并改为针对本地数据库进行扫描。
### [deps.dev API](https://docs.deps.dev/api/)
用于补充包信息:
发送的数据包括包名称、版本和生态系统。不传输源代码。
### 包注册表
当使用本机注册表进行依赖项解析(而不是 deps.dev)时,OSV-Scanner 可能会查询:
| 注册表 | URL | 用途 |
| ------------- | ------------------------------ | ------------------------------------ |
| Maven Central | `repo.maven.apache.org/maven2` | Maven 包元数据和 POM 文件 |
| npm Registry | `registry.npmjs.org` | npm 包元数据 |
| PyPI | `pypi.org` | Python 包元数据 |
## 贡献
### 报告问题
如果您发现看起来像错误的问题,请使用 [GitHub 问题跟踪系统](https://github.com/google/osv-scanner/issues)。在提交问题之前,请搜索现有问题以查看您的问题是否已被涵盖。
### 向 `osv-scanner` 贡献代码
有关如何贡献代码的文档,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## Star 历史
[](https://www.star-history.com/#google/osv-scanner&Date)
标签:AI应用开发, Claude, CVE检测, DevSecOps, EVTX分析, EVTX分析, EVTX分析, EVTX分析, EVTX分析, EVTX分析, EVTX分析, Go语言, GUI应用, NPM包, OSV, OSV-Scalibr, pip安装, Rust语言, SCA, Vercel, Windows工具, 上游代理, 二进制文件分析, 云安全监控, 代码生成, 供应链安全, 依赖扫描, 函数图谱, 加密, 包管理器, 安全审计, 带宽管理, 开源安全, 文档安全, 文档结构分析, 日志审计, 模型提供商, 渗透测试工具, 漏洞扫描器, 用户界面自定义, 程序破解, 系统工具, 统一API, 软件开发工具包, 软件成分分析, 静态分析