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截图, 上游代理, 人工智能安全, 免受影响证明, 合规性, 安全公告, 容器安全, 数字签名, 日志审计, 漏洞管理, 漏洞过滤, 硬件无关, 证明书, 误报处理, 软件供应链安全, 远程方法调用