Skip to content

Commit bbdb268

Browse files
committed
Move OpenVEX overview into README
Signed-off-by: Dan Luhring <[email protected]>
1 parent 4496a5e commit bbdb268

File tree

1 file changed

+98
-2
lines changed

1 file changed

+98
-2
lines changed

README.md

Lines changed: 98 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,98 @@
1-
# spec
2-
OpenVEX Specification
1+
# OpenVEX Specification
2+
3+
OpenVEX is an implementation of the
4+
[Vulnerability Exploitability Exchange](https://www.ntia.gov/files/ntia/publications/vex_one-page_summary.pdf)
5+
(VEX for short) that is designed to be minimal, compliant, interoperable, and
6+
embeddable.
7+
8+
## OpenVEX is...
9+
10+
### A Specification
11+
12+
OpenVEX documents are minimal JSON-LD files that capture the minimal requirements
13+
for VEX as defined by the VEX working group organized by CISA. The
14+
[OpenVEX Specification](https://github.com/openvex/spec/blob/main/OPENVEX-SPEC.md)
15+
is owned and steered by the community.
16+
17+
### A Go Library
18+
19+
The project has a go library
20+
([openvex/go-vex](https://github.com/openvex/go-vex)) that lets projects generate,
21+
transform and consume OpenVEX files. It enables the ingestion of VEX metadata
22+
expressed in other VEX implementations.
23+
24+
### A Set of Tools
25+
26+
Work is underway to create the tools software authors and consumers need to
27+
handle VEX metadata. The current flagship project is
28+
[`vexctl`](https://github.com/openvex/vexctl), a CLI to create, merge and
29+
attest VEX documents.
30+
31+
## What Does an OpenVEX Document Look Like?
32+
33+
An OpenVEX document is composed of a JSON-LD structure that contains the
34+
[document metadata](https://github.com/openvex/spec/blob/main/OPENVEX-SPEC.md#vex-documents)
35+
and one or more
36+
[VEX statements](https://github.com/openvex/spec/blob/main/OPENVEX-SPEC.md#the-vex-statement):
37+
38+
```json
39+
{
40+
"@context": "https://openvex.dev/ns",
41+
"@id": "https://openvex.dev/docs/example/vex-9fb3463de1b57",
42+
"author": "Wolfi J Inkinson",
43+
"role": "Document Creator",
44+
"timestamp": "2023-01-08T18:02:03.647787998-06:00",
45+
"version": "1",
46+
"statements": [
47+
{
48+
"vulnerability": "CVE-2014-123456",
49+
"products": [
50+
"pkg:apk/distro/[email protected]?arch=armv7",
51+
"pkg:apk/distro/[email protected]?arch=x86_64"
52+
],
53+
"status": "fixed"
54+
}
55+
]
56+
}
57+
```
58+
59+
Check out
60+
[the OpenVEX specification](https://github.com/openvex/spec/blob/main/OPENVEX-SPEC.md)
61+
and our [examples repository](https://github.com/openvex/examples) for more
62+
information and use cases.
63+
64+
65+
## Frequently Asked Questions
66+
67+
#### How does this compare to CSAF?
68+
69+
OpenVEX is designed to be more Lightweight, easy to be recorded in
70+
[Sigstore](https://sigstore.dev), and embedded in [in-toto](https://in-toto.io/)
71+
attestations. While CSAF has a rich mechanism to express product trees,
72+
OpenVEX favors [package URLs](https://github.com/package-url/purl-spec) (purl)
73+
as its software identifier of choice.
74+
75+
#### How does this compare to CycloneDX VEX?
76+
77+
OpenVEX aims to be SBOM format agnostic. While there are plans to have both
78+
CycloneDX and SPDX VEX implementations, we feel that VEX metadata should be
79+
kept separate from the SBOM.
80+
81+
On the implementation details, the CycloneDX VEX implementation defines a
82+
different set of
83+
[status](https://github.com/openvex/spec/blob/main/OPENVEX-SPEC.md#status-labels) and
84+
[justification](https://github.com/openvex/spec/blob/main/OPENVEX-SPEC.md#status-justifications)
85+
labels than those defined by the VEX Working Group. To match CDX VEX documents to the unified labels documents have to be translated, which is not ideal.
86+
87+
#### Does it work with SBOMs?
88+
89+
Yes, OpenVEX is designed to be SBOM format agnostic. It can reference software
90+
described in both SPDX and CycloneDX Software Bills of Materials.
91+
92+
#### Why not use CSAF or CycloneDX?
93+
94+
When OpenVEX was released, both the CSAF and CycloneDX implementations of VEX
95+
are missing a few pieces of the minimum elements of VEX. Nevertheless, OpenVEX
96+
can be used along with CSAF and CycloneDX documents. The OpenVEX tooling can
97+
generate a complete VEX impact history from files expressed in the other
98+
implementations

0 commit comments

Comments
 (0)