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, 上游代理, 安全合规, 漏洞可利用性交换, 漏洞管理, 漏洞评估, 漏洞验证, 硬件无关, 网络代理, 自动化扫描集成, 自动笔记, 自托管