vexcalibur-dev/vexcalibur-action

GitHub: vexcalibur-dev/vexcalibur-action

该项目是一个 GitHub Action 封装工具,用于在 CI 工作流中运行 Vexcalibur CLI,从而自动化地从 SBOM 生成 VEX 文档并查询漏洞信息。

Stars: 0 | Forks: 0

# Vexcalibur Action ![Vexcalibur 文字标识和剑形 Logo](https://raw.githubusercontent.com/vexcalibur-dev/vexcalibur-action/main/docs/assets/vexcalibur-banner.png) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/vexcalibur-dev/vexcalibur-action/actions/workflows/ci.yml) [![OpenSSF Scorecard](https://static.pigsec.cn/wp-content/uploads/repos/cas/f3/f3a65d47b9bca0d58f5096d2122d67f03dcf1853eb5aeb80be08786490206dd6.svg)](https://github.com/vexcalibur-dev/vexcalibur-action/actions/workflows/scorecard.yml) Vexcalibur Action 在 GitHub Actions 工作流中运行 [Vexcalibur 命令行接口 (CLI)](https://github.com/vexcalibur-dev/vexcalibur)。使用它可以从软件物料清单 (SBOM) 生成漏洞可利用性交换 (VEX),查询实现了开源漏洞 (OSV) API 的服务,或者运行其他 Vexcalibur 命令,而无需维护单独的安装步骤。 该 action 处于 1.0 之前的阶段。每个 action 版本都会与特定的 Vexcalibur 软件包版本进行测试。当前的配对是 `vexcalibur-action@v0.2.0` 和 `vexcalibur==0.3.0`。 当前的持续集成 (CI) 在 `ubuntu-latest` 上测试了该封装程序。它使用本地测试固件验证了 CycloneDX 1.6、OpenVEX 0.2.0 和 CSAF 2.0 的 VEX 输出。 ## 试用该 action 此工作流会安装当前的发行配对并打印 Vexcalibur 的帮助信息。它不会检出到你的代码仓库,也不会查询漏洞服务。 ``` name: Vexcalibur on: workflow_dispatch: permissions: {} jobs: help: runs-on: ubuntu-latest steps: - name: Run Vexcalibur uses: vexcalibur-dev/vexcalibur-action@v0.2.0 with: package-spec: vexcalibur==0.3.0 args: --help ``` 将文件保存为 `.github/workflows/vexcalibur.yml` 并将其提交到仓库的默认分支。从 **Actions** 标签页中运行 **Vexcalibur**,然后打开 **Run Vexcalibur** 日志。一个包含 Vexcalibur 命令帮助的通过任务就是成功的信号。 要从现有的 SBOM 生成制品,请按照 [CycloneDX](docs/how-to/generate-vex-from-sbom.md)、[OpenVEX](docs/how-to/generate-openvex-from-sbom.md) 或 [CSAF](docs/how-to/generate-csaf-from-sbom.md) 指南操作。 ## 选择信任的内容 该 action 和 Python 软件包是不同的信任边界。在经过审查的工作流中同时固定两者: ``` - uses: vexcalibur-dev/vexcalibur-action@6a028a18b4b7fc15cd5e83056e0013ed0928a483 # v0.2.0 with: package-spec: vexcalibur==0.3.0 args: --help ``` action 的发行标签具有人类可读性,但完整的发行 commit SHA 是不可变的。上面的示例使用了 `v0.2.0` 的 commit。[兼容性参考](docs/reference/compatibility.md)列出了经过测试的 action 和软件包配对。 精确的 `package-spec` 不会固定传递性的 Python 依赖项。为了实现可重复的安装,请提交一个 pip 约束文件并传递其绝对路径: ``` - uses: vexcalibur-dev/vexcalibur-action@v0.2.0 with: package-spec: vexcalibur==0.3.0 constraints-file: ${{ github.workspace }}/.github/vexcalibur-constraints.txt args: --help ``` 除非你设置了 `allow-development-package-spec: "true"`,否则该 action 会拒绝 Git URL、本地 wheel 和其他开发版本的软件包规范。在使用开发版本规范之前,请参阅 [action 参考](docs/reference/action.md)。 ## 了解数据何时离开 runner 安装 PyPI 或 Git 软件包会使用网络。根据参数的不同,Vexcalibur 命令可能还会联系 GitHub 或开源漏洞 (OSV) 服务。 除非存在 `--allow-public-osv` 参数,否则 Vexcalibur CLI 会拒绝向 `https://api.osv.dev` 发送软件包 URL、版本或 SBOM 清单。未经批准,请勿为私有清单添加该标志。请改用本地发现结果或经过批准的兼容私有 OSV 的 endpoint。 ## 运行方式 该 action 会选择 Python,并在 `RUNNER_TEMP` 下创建一个私有的虚拟环境。它在那里安装 `package-spec`,然后调用已安装的 `vexcalibur` 可执行文件。`args` 中的每个非空行都会成为一个 CLI 参数。 CLI 是从该 action 的私有临时目录运行的,而不是从你的代码仓库运行的。输入请使用绝对路径,例如 `${{ github.workspace }}/sbom.json`,输出请使用 `${{ runner.temp }}/vex.json`。 有关每个输入、路径和参数规则、安装隔离、输出行为以及失败代码,请参阅 [action 参考](docs/reference/action.md)。 ## 文档 | 如果你想… | 请阅读… | | --- | --- | | 从检出的 SBOM 生成并上传 CycloneDX VEX | [从 SBOM 生成 CycloneDX VEX](docs/how-to/generate-vex-from-sbom.md) | | 从检出的 SBOM 生成并上传 OpenVEX | [从 SBOM 生成 OpenVEX](docs/how-to/generate-openvex-from-sbom.md) | | 从检出的 SBOM 生成并上传 CSAF VEX | [从 SBOM 生成 CSAF VEX](docs/how-to/generate-csaf-from-sbom.md) | | 配置 action 输入或诊断失败的运行 | [Action 参考](docs/reference/action.md) | | 选择 action 和软件包版本 | [兼容性参考](docs/reference/compatibility.md) | | 发布或恢复 action 发行版 | [发布 action](docs/how-to/release-action.md) | | 更改封装程序或其测试 | [贡献指南](CONTRIBUTING.md) | | 报告非安全漏洞或请求新功能 | [Vexcalibur Action issues](https://github.com/vexcalibur-dev/vexcalibur-action/issues) | | 报告漏洞 | [安全策略](SECURITY.md) | | 了解参与期望 | [行为准则](https://github.com/vexcalibur-dev/.github/blob/main/CODE_OF_CONDUCT.md) | Vexcalibur 仓库拥有 [CLI 参考](https://github.com/vexcalibur-dev/vexcalibur/blob/main/docs/reference/cli.md)、输入格式和生成的 VEX 契约。 ## 验证本地更改 在安装 Python 3.14 和 [actionlint 1.7.12](https://github.com/rhysd/actionlint/releases/tag/v1.7.12) 之后,从仓库根目录运行以下命令: ``` python -m pip install -r requirements-dev.txt bash -n scripts/*.sh shellcheck scripts/*.sh actionlint git ls-files -z | xargs -0 detect-secrets-hook --baseline .secrets.baseline -- python -m unittest discover -s tests ``` 每个命令的退出状态都应为 `0`;最后一条命令会报告测试计数和 `OK`。[贡献指南](CONTRIBUTING.md)涵盖了开发设置和 pull request 检查清单。 Vexcalibur Action 基于 [Apache License 2.0](LICENSE) 提供。
标签:GitHub Actions, GPT, SBOM, SOC Prime, VEX, 开发工具, 开源框架, 持续集成, 漏洞管理, 硬件无关, 自动笔记, 逆向工具