liquibase/vex-repo
GitHub: liquibase/vex-repo
为 Liquibase 产品提供机器可读的漏洞评估(VEX)仓库,通过 OpenVEX 和 CycloneDX 格式声明漏洞状态,帮助安全扫描器过滤无效误报。
Stars: 0 | Forks: 0
# Liquibase VEX 仓库
Liquibase 产品的自托管 [VEX](https://www.cisa.gov/sites/default/files/2023-04/minimum-requirements-for-vex-508c.pdf)
(漏洞利用可交换性 Vulnerability Exploitability eXchange)仓库。
此仓库提供 [OpenVEX](https://github.com/openvex/spec) 格式的漏洞评估,遵循
[Trivy VEX 仓库规范 v0.1](https://github.com/aquasecurity/trivy/blob/main/docs/docs/supply-chain/vex/repo.md)。
## 组件关系
```
liquibase-pro vex-repo Customer
+---------------------------+ +--------------------+ +----------------+
| vex/assessments.yaml | | | | |
| (source of truth) | | vex-repository.json| | Trivy |
| | | index.json | | --vex repo |
| vex/generate-vex-repo.sh |---------->| pkg/maven/ |----->| (auto-fetch) |
| | dispatch | .../vex.openvex | | |
| .github/workflows/ | | .../vex.cdx.vex | +----------------+
| vex-repo-dispatch.yml | | |
+---------------------------+ +--------------------+
```
评估内容维护在 `liquibase-pro/vex/assessments.yaml` 中。当该
文件在 `master` 分支发生变更时,GitHub Actions 工作流会调度到本
仓库,重新生成所有 VEX 内容,并开启一个 pull request。
## 什么是 VEX?
VEX 是一种行业标准的格式,用于通报已知漏洞是否实际影响软件产品。当漏洞扫描器标记一个 CVE 时,VEX 文档可以声明该 CVE 在特定上下文中
**不可被利用**——例如因为易受攻击的代码路径不存在,或者因为依赖项的较新版本已包含修复。
## 如何与 Trivy 结合使用
配置 Trivy 将此仓库与默认的 [VEX Hub](https://github.com/aquasecurity/vexhub) 一起使用(或代替它):
```
# ~/.trivy/vex/repository.yaml
repositories:
- name: default
url: https://github.com/aquasecurity/vexhub
enabled: true
- name: liquibase
url: https://github.com/liquibase/vex-repo
enabled: true
```
然后使用 `--vex repo` 标志运行 Trivy:
```
# 扫描 Liquibase Docker 镜像
trivy image --vex repo liquibase/liquibase:latest
# 扫描本地 Liquibase 安装
trivy fs --vex repo /path/to/liquibase/
# 扫描 Liquibase 容器的根文件系统
trivy rootfs --vex repo /liquibase/
# 显示已抑制的漏洞与活动漏洞
trivy image --vex repo --show-suppressed liquibase/liquibase:latest
```
Trivy 将自动下载并缓存此仓库中的 VEX 文档,并抑制任何被评估为不可利用的 CVE。
## 如何与 Grype 结合使用
下载 OpenVEX 文件并配置 Grype 使用它:
```
# 下载 VEX 文件
mkdir -p /tmp/liquibase-vex
curl -sSfL "https://raw.githubusercontent.com/liquibase/vex-repo/main/pkg/maven/org.liquibase/liquibase-core/vex.openvex.json" \
-o /tmp/liquibase-vex/vex.openvex.json
# 使用 VEX 抑制进行扫描
grype liquibase/liquibase:latest --vex /tmp/liquibase-vex/vex.openvex.json
```
或者在 `~/.grype.yaml` 中进行永久配置:
```
# ~/.grype.yaml
vex-documents:
- /path/to/vex.openvex.json
ignore:
- vex-status: not_affected
- vex-status: fixed
```
然后每次 `grype` 扫描都会自动应用 VEX 抑制规则。
## 如何与 Docker Scout 结合使用
将 VEX 文件下载到本地目录并指向 Scout:
```
# 下载 VEX 文件
mkdir -p ./vex
curl -sSfL "https://raw.githubusercontent.com/liquibase/vex-repo/main/pkg/maven/org.liquibase/liquibase-core/vex.openvex.json" \
-o ./vex/liquibase-core.vex.json
# 使用 VEX 抑制进行扫描
docker scout cves --vex-location ./vex liquibase/liquibase:latest
```
## 可用格式
为每个包生成两种 VEX 格式:
| 文件 | 格式 | 用途 |
|------|--------|---------|
| `vex.openvex.json` | OpenVEX 0.2.0 | Trivy `--vex repo` 抑制的主要格式。在 `index.json` 中建立索引。 |
| `vex.cdx.vex.json` | CycloneDX 1.6 | 完整的公告数据:CVSS 评级、CWE、建议、版本范围。 |
Trivy 通过索引使用 OpenVEX 文件。提供 CycloneDX 文件是为了满足
需要更丰富公告内容(严重性评级、修复指导、外部参考)的消费者。
## 仓库结构
```
vex-repo/
vex-repository.json # VEX Repo Spec v0.1 manifest
index.json # PURL-to-file mapping
pkg/
maven/
org.liquibase/
liquibase-core/
vex.openvex.json # OpenVEX document (Trivy suppression)
vex.cdx.vex.json # CycloneDX 1.6 VEX (full advisory)
```
| 文件 | 用途 |
|------|---------|
| `vex-repository.json` | VEX 仓库规范要求的仓库清单。声明仓库名称、规范版本、下载位置和更新间隔(24小时)。 |
| `index.json` | 将包 PURL 映射到其 VEX 文档路径。Trivy 使用此文件定位给定包的正确 VEX 文件。 |
| `pkg/.../vex.openvex.json` | OpenVEX 文档,包含 `pkg:maven/org.liquibase/liquibase-core` 的所有漏洞评估。由 Trivy 用于抑制。 |
| `pkg/.../vex.cdx.vex.json` | CycloneDX 1.6 VEX 文档,包含完整的公告字段(评级、建议、CWE)。 |
## 当前评估
当前评估的漏洞如下:
| CVE | 包 | 状态 | 理由 |
|-----|---------|--------|---------------|
| CVE-2022-0839 / GHSA-jvfv-hrrc-6q72 | org.liquibase:liquibase-core | not_affected | vulnerable_code_not_present |
| CVE-2014-8180 | com.liquibase.ext:liquibase-commercial-mongodb | not_affected | component_not_present |
| CVE-2022-0839 | com.liquibase:liquibase-license-utility | not_affected | component_not_present |
| CVE-2023-36415 | com.azure:azure-identity | not_affected | vulnerable_code_not_present |
| CVE-2024-35255 | com.azure:azure-identity | not_affected | vulnerable_code_not_present |
| CVE-2024-35255 | com.microsoft.azure:msal4j | not_affected | component_not_present |
| CVE-2024-45394 | com.instaclustr:cassandra-driver-kerberos | not_affected | component_not_present |
| CVE-2025-59250 | com.microsoft.sqlserver:mssql-jdbc | not_affected | vulnerable_code_not_present |
| CVE-2022-40897 | setuptools (GraalVM Python) | not_affected | vulnerable_code_not_in_execute_path |
| CVE-2024-6345 | setuptools (GraalVM Python) | not_affected | vulnerable_code_not_in_execute_path |
| CVE-2025-47273 | setuptools (GraalVM Python) | not_affected | vulnerable_code_not_in_execute_path |
| CVE-2026-33870 | io.netty:netty-codec-http | not_affected | vulnerable_code_not_in_execute_path |
| CVE-2026-33871 | io.netty:netty-codec-http2 | not_affected | vulnerable_code_not_in_execute_path |
| GHSA-2m67-wjpj-xhg9 | tools.jackson.core:jackson-core | not_affected | vulnerable_code_not_in_execute_path |
## 手动验证 VEX 文档
```
# 检查 OpenVEX 文档
jq '.statements[] | {vuln: .vulnerability.name, status, justification}' \
pkg/maven/org.liquibase/liquibase-core/vex.openvex.json
# 检查 CycloneDX VEX 文档
jq '.vulnerabilities[] | {id, status: .analysis.state, justification: .analysis.justification}' \
pkg/maven/org.liquibase/liquibase-core/vex.cdx.vex.json
# 使用 vexctl 验证 OpenVEX(需要已安装 vexctl)
vexctl verify pkg/maven/org.liquibase/liquibase-core/vex.openvex.json
```
## 此仓库如何更新
此仓库是从 liquibase-pro 仓库中的
[`vex/assessments.yaml`](https://github.com/liquibase/liquibase-pro/blob/master/vex/assessments.yaml)
自动生成的。更新流程如下:
1. `assessments.yaml` 的变更被合并到 liquibase-pro 的 `master` 分支
2. [`vex-repo-dispatch.yml`](https://github.com/liquibase/liquibase-pro/blob/master/.github/workflows/vex-repo-dispatch.yml) 工作流触发
3. 它调度到此仓库的 [`update-vex.yaml`](.github/workflows/update-vex.yaml) 工作流
4. 该工作流稀疏检出 `liquibase-pro/vex/`,运行 `generate-vex-repo.sh`,验证输出,并开启一个 PR
该工作流也可以通过 `workflow_dispatch` 手动触发。
## 参考资料
- [VEX 仓库规范 v0.1](https://github.com/aquasecurity/trivy/blob/main/docs/docs/supply-chain/vex/repo.md)
- [OpenVEX 规范](https://github.com/openvex/spec)
- [Trivy VEX 文档](https://aquasecurity.github.io/trivy/latest/docs/supply-chain/vex/)
- [CISA VEX 最低要求](https://www.cisa.gov/sites/default/files/2023-04/minimum-requirements-for-vex-508c.pdf)
- [贡献评估](https://github.com/liquibase/liquibase-pro/blob/master/vex/CONTRIBUTING.md)
## 许可证
此仓库根据 Apache License, Version 2.0 授权。
全文请参阅 [LICENSE](LICENSE)。
标签:AES-256, CVE分析, DevSecOps, GitHub Actions, GPT, Homebrew安装, Liquibase, Maven, OpenVEX, SBOM, VEX, 上游代理, 安全合规, 漏洞可利用性交换, 漏洞管理, 漏洞评估, 漏洞验证, 硬件无关, 网络代理, 自动化扫描集成, 自动笔记, 自托管