anchore/vunnel
GitHub: anchore/vunnel
Vunnel 是一个从多种上游安全公告和漏洞数据库采集、转换并存储漏洞数据的命令行工具,主要用于构建 Grype 等漏洞扫描器所需的底层数据库。
Stars: 116 | Forks: 56
# vunnel
**一个用于从多种来源获取、转换和存储漏洞数据的工具。**
[](https://github.com/anchore/vunnel/releases/latest)
[](https://github.com/anchore/vunnel/blob/main/LICENSE)
[](https://anchore.com/discourse)

支持的数据源:
- Alpine (https://secdb.alpinelinux.org)
- Amazon (https://alas.aws.amazon.com/AL2/alas.rss & https://alas.aws.amazon.com/AL2022/alas.rss)
- Azure (https://github.com/microsoft/AzureLinuxVulnerabilityData)
- Debian (https://security-tracker.debian.org/tracker/data/json & https://salsa.debian.org/security-tracker-team/security-tracker/raw/master/data/DSA/list)
- Echo (https://advisory.echohq.com/data.json)
- GitHub Security Advisories (https://api.github.com/graphql)
- NVD (https://services.nvd.nist.gov/rest/json/cves/2.0)
- Oracle (https://linux.oracle.com/security/oval)
- RedHat (https://www.redhat.com/security/data/oval)
- SLES (https://ftp.suse.com/pub/projects/security/oval)
- Ubuntu (https://launchpad.net/ubuntu-cve-tracker)
- Wolfi (https://packages.wolfi.dev)
## 前置条件
你的 PATH 环境变量中必须包含以下系统工具:
- **git** - 某些需要从 git 仓库获取数据的提供者会用到
## 安装说明
使用 pip 安装:
```
pip install vunnel
```
使用 docker 安装:
```
docker run \
--rm -it \
-v $(pwd)/data:/data \
-v $(pwd)/.vunnel.yaml:/.vunnel.yaml \
ghcr.io/anchore/vunnel:latest \
run nvd
```
说明:
- `data` 卷用于在主机上保留处理后的数据
- `.vunnel.yaml` 用于使用主机上的应用配置(如果存在)
- 你可以将 `latest` 替换为特定的版本(与 git 标签相同)
请查看 [vunnel 包](https://github.com/anchore/vunnel/pkgs/container/vunnel) 以获取所有可用标签的完整列表。
## 入门指南
列出所有可用的漏洞数据提供者:
```
$ vunnel list
alpine
amazon
chainguard
debian
echo
github
mariner
minimos
nvd
oracle
rhel
sles
ubuntu
wolfi
```
下载并处理某个提供者的数据:
```
$ vunnel run wolfi
2023-01-04 13:42:58 root [INFO] running wolfi provider
2023-01-04 13:42:58 wolfi [INFO] downloading Wolfi secdb https://packages.wolfi.dev/os/security.json
2023-01-04 13:42:59 wolfi [INFO] wrote 56 entries
2023-01-04 13:42:59 wolfi [INFO] recording workspace state
```
你可以在本地的 `./data` 目录中看到处理后的漏洞数据
```
$ tree data
data
└── wolfi
├── checksums
├── metadata.json
├── input
│ └── secdb
│ └── os
│ └── security.json
└── results
└── wolfi:rolling
├── CVE-2016-2781.json
├── CVE-2017-8806.json
├── CVE-2018-1000156.json
└── ...
```
*注意:要获取更详细的输出,请使用 `-v`、`-vv` 或 `-vvv`(例如 `vunnel -vv run wolfi`)*
删除一个或多个提供者已有的输入和结果数据:
```
$ vunnel clear wolfi
2023-01-04 13:48:31 root [INFO] clearing wolfi provider state
```
用于更改应用行为的配置文件示例:
```
# .vunnel.yaml
root: ./processed-data
log:
level: trace
providers:
wolfi:
request_timeout: 125
runtime:
existing_input: keep
existing_results: delete-before-write
on_error:
action: fail
input: keep
results: keep
retry_count: 3
retry_delay: 10
```
使用 `vunnel config` 命令可以更好地了解所有可能的配置选项。
## 常见问题
### 我可以实现一个新的提供者吗?
当然可以!请参阅[提供者文档](https://github.com/anchore/vunnel/blob/main/DEVELOPING.md#adding-a-new-provider)获取更多信息。
### 为什么叫“vunnel”?
这个工具将漏洞数据“汇集 (funnels)”到一个统一的处理节点以便轻松处理……把“vulnerability data funnel”连读 100 遍,读得足够快,最后就会含糊地发音成“vunnel” :)。
标签:Alpine, Amazon Linux, Anchore, Angular, CVE, Debian, DevSecOps, Docker, GitHub Advisory, GPT, Grype, NVD, Python, RedHat, URL抓取, Vunnel, Web截图, XSS, 上游代理, 安全数据源, 安全防御评估, 实时处理, 容器安全, 密码管理, 数字签名, 数据抓取, 数据清洗, 数据转换, 无后门, 测试覆盖率, 漏洞情报, 漏洞管理, 网络安全研究, 请求拦截, 逆向工具