|
| 1 | +# Vulnerability Exploitability Exchange (VEX) |
| 2 | + |
| 3 | +Known vulnerabilities inherited from the use of third-party and open source software and the exploitability of the vulnerabilities |
| 4 | +can be communicated with CycloneDX. Previously unknown vulnerabilities affecting both components and services may also be disclosed |
| 5 | +using CycloneDX, making it ideal for both VEX and security advisory use cases. |
| 6 | +- VEX information can be represented inside an existing BOM, or in a dedicated VEX BOM |
| 7 | +- Supports known and unknown vulnerabilities against components and services |
| 8 | +- Communicates the vulnerability details, exploitability, and detailed analysis |
| 9 | + |
| 10 | +## Independent BOM and VEX BOM |
| 11 | +Inventory described in a BOM (SBOM, SaaSBOM, etc) will typically remain static until such time the inventory changes. |
| 12 | +However, vulnerability information is much more dynamic and subject to change. Therefore, it is recommended to decouple |
| 13 | +the VEX from the BOM. This allows VEX information to be updated without having to create and track additional BOMs. |
| 14 | + |
| 15 | +VEX is an integral part of the CycloneDX specification providing the convenience of leveraging a single format and tool chain. |
| 16 | + |
| 17 | +{: width="500" } |
| 18 | + |
| 19 | +With CycloneDX, it is possible to reference a component, service, or vulnerability inside a BOM from other systems or |
| 20 | +other BOMs. This deep-linking capability is referred to as BOM-Link. |
| 21 | + |
| 22 | +**Syntax**: |
| 23 | +``` |
| 24 | +urn:cdx:serialNumber/version#bom-ref |
| 25 | +``` |
| 26 | + |
| 27 | +**Examples**: |
| 28 | +``` |
| 29 | +urn:cdx:f08a6ccd-4dce-4759-bd84-c626675d60a7/1 |
| 30 | +urn:cdx:f08a6ccd-4dce-4759-bd84-c626675d60a7/1#componentA |
| 31 | +``` |
| 32 | + |
| 33 | +| Field | Description | |
| 34 | +| ------------ | ----------- | |
| 35 | +| serialNumber | The unique serial number of the BOM. The serial number MUST conform to RFC-4122. | |
| 36 | +| version | The version of the BOM. The default version is `1`. | |
| 37 | +| bom-ref | The unique identifier of the component, service, or vulnerability within the BOM. | |
| 38 | + |
| 39 | +## BOM With Embedded VEX |
| 40 | + |
| 41 | +{: width="167" } |
| 42 | + |
| 43 | +CycloneDX also supports embedding VEX information inside a BOM, thus having a single artifact that describes both |
| 44 | +inventory and VEX data. There are several uses for embedding VEX data including: |
| 45 | + |
| 46 | +* Audit use cases where inventory and vulnerability data need to be captured at a specific point in time |
| 47 | +* Automated security tools may opt to create a single BOM with embedded vulnerability or VEX data for convenience and portability |
| 48 | + |
| 49 | +## CycloneDX and Third-Party Advisory Formats |
| 50 | + |
| 51 | +Every component or service defined in a CycloneDX BOM may optionally define external references to security advisory |
| 52 | +feeds. CycloneDX is agnostic to the advisory format, however, the |
| 53 | +[Common Security Advisory Framework (CSAF)](https://www.oasis-open.org/committees/csaf), an OASIS Open standard, is |
| 54 | +recommended. Refer to the [Security Advisories Use Case](https://cyclonedx.org/use-cases/#security-advisories) for more information. |
| 55 | + |
| 56 | +CSAF also supports an optional VEX profile which can be used with CycloneDX. |
| 57 | + |
| 58 | +## High-Level Object Model |
| 59 | + |
| 60 | +{: width="900"} |
0 commit comments