chainguard-dev/vex

GitHub: chainguard-dev/vex

vexctl 是一个用于创建和应用 VEX 漏洞可利用性声明的命令行工具,帮助用户从安全扫描结果中过滤掉已确认不影响产品的漏洞告警。

Stars: 45 | Forks: 11

# 彙整通知 本仓库已归档。此处最初开展的工作 已发展成为 [OpenVEX 项目](https://openvex.dev)。 原本托管在本仓库的代码现已拆分到 [OpenVEX GitHub 组织](https://github.com/openvex) 下的多个仓库中, 例如 [vexctl](https://github.com/openvex/vexctl)、 [go-vex](https://github.com/openvex/go-vex) 以及 [OpenVEX 规范](https://github.com/openvex/spec)。 感谢您的支持! ## :heart: Chainguard # vexctl:让 VEX 生效的工具 `vexctl` 是一个用于应用和证明 VEX(Vulnerability Exploitability eXchange,漏洞可利用性交换)数据的工具。其目的是“关闭”那些已知不影响产品的漏洞警报。 VEX 可以被视为一种“负面安全公告”。通过 VEX,软件作者可以告知用户,某个存在漏洞的组件对其产品没有安全影响。 ## 运作模型 为了实现其使命,`vexctl` 有两种主要的运作模式。一种是帮助用户创建 VEX 声明,另一种是将 VEX 数据应用于扫描器结果。 ### 1. 创建 VEX 声明 VEX 数据可以创建为磁盘上的文件,也可以捕获在已签名的证明中,并附加到容器镜像。 该数据是从已知的规则集(黄金数据)生成的,该规则集会被重复使用并重新应用于同一项目的新版本。 #### 生成示例 ``` # 对 container image 进行证明并将 mydata.vex.json 中的 vex 语句附加到其中: vexctl attest --attach --sign mydata.vex.json cgr.dev/image@sha256:e4cf37d568d195b4.. ``` ### 2. 对结果集进行 VEX 处理 使用 VEX 文档或证明中的声明,`vexctl` 将过滤安全扫描器结果,以移除 _已被 VEX 排除_ 的条目。 #### 过滤示例 ``` # 来自 VEX 文件: vexctl filter scan_results.sarif.json vex_data.csaf # 来自存储的 VEX attestation: vexctl filter scan_results.sarif.json cgr.dev/image@sha256:e4cf37d568d195b4b5af4c36a... ``` 这两个示例的输出将是相同的 SARIF 结果数据,但不包含那些声明为不可利用的漏洞: ``` { "version": "2.1.0", "$schema": "https://json.schemastore.org/sarif-2.1.0-rtm.5.json", "runs": [ { "tool": { "driver": { "fullName": "Trivy Vulnerability Scanner", "informationUri": "https://github.com/aquasecurity/trivy", "name": "Trivy", "rules": [ ``` 我们目前支持 SARIF 格式的结果文件。我们计划增加对最流行的扫描器专有格式的支持。 ### 多个 VEX 文件 评估影响是一个耗时的过程。VEX 旨在随着时间的推移与用户沟通。一个示例时间线可能如下所示: 1. 一个项目意识到与其某个组件相关的 `CVE-2022-12345`。 2. 开发者发布一个状态为 `under_investigation` 的 VEX 数据文件, 以通知用户他们已知晓该 CVE,但正在检查其影响。 3. 经过调查,开发者确定该 CVE 对其项目没有影响,因为组件中易受攻击的函数从未被执行。 4. 他们发布第二个 VEX 文档,状态为 `not_affected`,并使用 `vulnerable_code_not_in_execute_path` 作为理由。 `vexctl` 将按时间顺序读取所有文档,并按发现的顺序“重放”已知的影响状态,从而有效地计算出 `not_affected` 状态。 如果 SARIF 报告使用 `vexctl` 进行了 VEX 处理,任何关于 CVE-2022-12345 的警报条目都将被过滤掉。 ## 构建 vexctl 要构建 `vexctl`,请克隆此仓库并直接运行 make。 ``` git clone git@github.com:chainguard-dev/vex.git cd vex make ./vexctl version _ _ _____ __ __ _____ _____ _ | | | || ___|\ \ / // __ \|_ _|| | | | | || |__ \ V / | / \/ | | | | | | | || __| / \ | | | | | | \ \_/ /| |___ / /^\ \| \__/\ | | | |____ \___/ \____/ \/ \/ \____/ \_/ \_____/ vexctl: A tool for working with VEX data GitVersion: devel GitCommit: unknown GitTreeState: unknown BuildDate: unknown GoVersion: go1.19 Compiler: gc Platform: linux/amd64 ```
标签:Chainguard, CSAF, CVE, DevSecOps, EVTX分析, EVTX分析, EVTX分析, Go, GPT, OpenVEX, Ruby工具, SARIF, SBOM, VEX, Vulnerability Exploitability eXchange, Web截图, 上游代理, 人工智能安全, 免受影响证明, 合规性, 安全公告, 容器安全, 数字签名, 日志审计, 漏洞管理, 漏洞过滤, 硬件无关, 证明书, 误报处理, 软件供应链安全, 远程方法调用