Skip to content

Commit d8cee7d

Browse files
authored
Merge pull request #87 from RedHatProductSecurity/vex-beta
Update documentation for VEX Beta
2 parents 4a48d3f + 6fad4ee commit d8cee7d

3 files changed

Lines changed: 81 additions & 68 deletions

File tree

Lines changed: 72 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,34 @@
1-
# CSAF-VEX Alpha Details
1+
# CSAF-VEX Beta Details
22

3-
This document is intended to cover the changes made in the new release of alpha VEX files compared to the legacy VEX files. These changes are broken out by the three main CSAF VEX document sections: Document, Product Tree and Vulnerabilities.
3+
This document is intended to cover the changes made in the new release of beta VEX files compared to the legacy VEX files. These changes are broken out by the three main CSAF VEX document sections: Document, Product Tree and Vulnerabilities.
44

5-
<u>Please Note: </u> The alpha VEX files are still in a state of flux as we address known issues. We aim to keep this documentation in sync with the changes, but there may be times when the documentation and implementation are not aligned. If you have questions on any of these changes, please see [How to Provide Feedback](https://redhatproductsecurity.github.io/security-data-guidelines/vex-alpha-details/#how-to-provide-feedback).
5+
++Please Note:++ The beta VEX files may experience minor changes as we address any final known issues. We aim to keep this documentation in sync with the changes, but there may be times when the documentation and implementation are not aligned. If you have questions on any of these changes, please see [How to Provide Feedback](https://redhatproductsecurity.github.io/security-data-guidelines/vex-beta-details/#how-to-provide-feedback).
66

7-
## Document Section
8-
The new alpha VEX files include a few minor changes to the `document` section, outlined in the sections below.
7+
## Document Section
98

10-
### Document Changes
9+
The new beta VEX files include a few minor changes to the `document` section, outlined in the sections below.
1110

12-
#### Title
13-
Previously, the `document.title` followed the format component:CVE title. The title in the alpha VEX files removed the component prefix. This decision was made to simplify the title and remove confusion when a CVE affects multiple components.
11+
### Document Changes
12+
13+
#### Title
14+
15+
Previously, the `document.title` followed the format component:CVE title. The title in the beta VEX files removed the component prefix. This decision was made to simplify the title and remove confusion when a CVE affects multiple components.
1416

1517
```json
1618
# Example of legacy VEX title
1719
"title": "glibc: Integer overflow in memalign leads to heap corruption",
1820
```
1921

2022
```json
21-
# Example of alpha VEX title
23+
# Example of beta VEX title
2224
"title": "Integer overflow in memalign leads to heap corruption",
2325
```
2426

25-
#### Tracking
26-
The `document.tracking` object has two changes in the new alpha VEX files: the generator name has changed and the revision history has been simplified.
27+
#### Tracking
28+
29+
The `document.tracking` object has two changes in the new beta VEX files: the generator name has changed and the revision history has been simplified.
2730

28-
In the new alpha VEX files, the `document.tracking.generator.engine.name` now references the new service responsible for creating VEX files, "CSAF Generator".
31+
In the new beta VEX files, the `document.tracking.generator.engine.name` now references the new service responsible for creating VEX files, "CSAF Generator".
2932

3033
```json
3134
# Example of legacy VEX generator
@@ -40,7 +43,7 @@ In the new alpha VEX files, the `document.tracking.generator.engine.name` now re
4043
```
4144

4245
```json
43-
# Example of alpha VEX generator
46+
# Example of beta VEX generator
4447
"generator": {
4548
"date": "2026-02-27T12:07:46+00:00",
4649
"engine": {
@@ -50,7 +53,7 @@ In the new alpha VEX files, the `document.tracking.generator.engine.name` now re
5053
},
5154
```
5255

53-
The `document.tracking.revision_history` has also been updated in the new alpha VEX files. Previously, the revision history object implemented some logic to create a history of changes, which was neither accurate nor comprehensive of the historical changes to an individual VEX file. In the new alpha VEX files, there will only be one revision that represents the last generated version.
56+
The `document.tracking.revision_history` has also been updated in the new beta VEX files. Previously, the revision history object implemented some logic to create a history of changes, which was neither accurate nor comprehensive of the historical changes to an individual VEX file. In the new beta VEX files, there will only be one revision that represents the last generated version.
5457

5558
```json
5659
# Example of legacy VEX revision history
@@ -74,7 +77,7 @@ The `document.tracking.revision_history` has also been updated in the new alpha
7477
```
7578

7679
```json
77-
# Example of alpha VEX revision history
80+
# Example of beta VEX revision history
7881
"revision_history": [
7982
{
8083
"date": "2026-02-27T12:07:46+00:00",
@@ -85,20 +88,22 @@ The `document.tracking.revision_history` has also been updated in the new alpha
8588

8689
```
8790

88-
### Removed Document Objects
89-
The following optional objects were removed from the `document` section and will not be present in the new alpha VEX files:
91+
### Removed Document Objects
92+
93+
The following optional objects were removed from the `document` section and will not be present in the new beta VEX files:
94+
95+
- `document.distribution`
96+
- `document.lang`
97+
- `document.notes`
98+
- `document.references`
9099

91-
* `document.distribution`
92-
* `document.lang`
93-
* `document.notes`
94-
* `document.references`
100+
## Product Tree Section
95101

102+
The `product_tree` section of VEX files includes the most significant changes between legacy VEX files and the new beta VEX files.
96103

97-
## Product Tree Section
98-
The `product_tree` section of VEX files includes the most significant changes between legacy VEX files and the new alpha VEX files.
104+
### Branch Removal
99105

100-
### Branch Removal
101-
In the `product_tree` section of a VEX file, legacy VEX files used to nest `product_name` objects under `product_family` branches and `product_version` objects under `architecture` branches, depending on the fix status of each. The new alpha VEX files remove any branch nesting. All `product_name` and `product_version` objects will only be nested under the parent `vendor` branch.
106+
In the `product_tree` section of a VEX file, legacy VEX files used to nest `product_name` objects under `product_family` branches and `product_version` objects under `architecture` branches, depending on the fix status of each. The new beta VEX files remove any branch nesting. All `product_name` and `product_version` objects will only be nested under the parent `vendor` branch.
102107

103108
```json
104109
# Example of legacy VEX branch nesting
@@ -130,7 +135,7 @@ In the `product_tree` section of a VEX file, legacy VEX files used to nest `prod
130135
```
131136

132137
```json
133-
# Example of alpha VEX branch nesting
138+
# Example of beta VEX branch nesting
134139
"branches": [
135140
{
136141
"category": "vendor",
@@ -153,10 +158,12 @@ In the `product_tree` section of a VEX file, legacy VEX files used to nest `prod
153158
```
154159

155160
### Product Changes
156-
The new alpha VEX files include three notable changes to product representation: products are now always represented with a minor version, the product naming convention has been modified for improved consistency and product variants have been eliminated for simplicity.
161+
162+
The new beta VEX files include three notable changes to product representation: products are now always represented with a minor version, the product naming convention has been modified for improved consistency and product variants have been eliminated for simplicity.
157163

158164
#### Product Granularity
159-
Previously, legacy VEX files only represented a product with a minor version when a fix was available. New alpha VEX files include representation for any supported minor version, regardless of fix status. This change is intended to provide better affectedness information for each support version of a product that may be impacted by a vulnerability.
165+
166+
Previously, legacy VEX files only represented a product with a minor version when a fix was available. New beta VEX files include representation for any supported minor version, regardless of fix status. This change is intended to provide better affectedness information for each support version of a product that may be impacted by a vulnerability.
160167

161168
In the example for CVE-2026-0861, the [legacy VEX file](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-0861.json) only includes a single `product_name` entry to represent the status of Red Hat Enterprise Linux 8.
162169

@@ -175,10 +182,10 @@ In the example for CVE-2026-0861, the [legacy VEX file](https://security.access.
175182
}
176183
```
177184

178-
The [alpha VEX file](https://security.access.redhat.com/data/csaf/v2/vex-alpha/2026/cve-2026-0861.json) includes 5 `product_name` entries to represent the status of each supported version of Red Hat Enterprise Linux 8.
185+
The [beta VEX file](https://security.access.redhat.com/data/csaf/v2/vex-feed/2026/cve-2026-0861.json) includes 5 `product_name` entries to represent the status of each supported version of Red Hat Enterprise Linux 8.
179186

180187
```json
181-
# Example of alpha VEX RHEL 8 product representation
188+
# Example of beta VEX RHEL 8 product representation
182189
{
183190
"category": "product_name",
184191
"name": "Red Hat Enterprise Linux 8.10.z",
@@ -237,7 +244,8 @@ The [alpha VEX file](https://security.access.redhat.com/data/csaf/v2/vex-alpha/2
237244
```
238245

239246
#### Product Naming
240-
Previously, legacy VEX files used different naming schemas based on the fix status of the product. The new alpha VEX files has standardized on a naming schema to improve consistency of a product's representation throughout the entire lifecycle of a VEX file.
247+
248+
Previously, legacy VEX files used different naming schemas based on the fix status of the product. The new beta VEX files has standardized on a naming schema to improve consistency of a product's representation throughout the entire lifecycle of a VEX file.
241249

242250
By comparing the Openshift 4.18 in legacy VEX files for [CVE-2025-12801](https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-12801.json) and [CVE-2025-6176](https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-6176.json), you can see that the `product_id` changes format from "red_hat_openshift_container_platform_4" in an unfixed state to "9Base-RHOSE-4.18" in a fixed state.
243251

@@ -269,10 +277,10 @@ By comparing the Openshift 4.18 in legacy VEX files for [CVE-2025-12801](https:/
269277
}
270278
```
271279

272-
In new alpha VEX files for [CVE-2025-12801](https://security.access.redhat.com/data/csaf/v2/vex-alpha/2025/cve-2025-12801.json) and [CVE-2025-6176](https://security.access.redhat.com/data/csaf/v2/vex-alpha/2025/cve-2025-6176.json), the `product_id` value remains the same between fixed and unfixed states.
280+
In new beta VEX files for [CVE-2025-12801](https://security.access.redhat.com/data/csaf/v2/vex-feed/2025/cve-2025-12801.json) and [CVE-2025-6176](https://security.access.redhat.com/data/csaf/v2/vex-feed/2025/cve-2025-6176.json), the `product_id` value remains the same between fixed and unfixed states.
273281

274282
```json
275-
# Example of alpha VEX unfixed product name for CVE-2025-12801
283+
# Example of beta VEX unfixed product name for CVE-2025-12801
276284
{
277285
"category": "product_name",
278286
"name": "OpenShift Container Platform 4.18",
@@ -285,7 +293,7 @@ In new alpha VEX files for [CVE-2025-12801](https://security.access.redhat.com/d
285293
}
286294
}
287295

288-
# Example of alpha VEX fixed product name for CVE-2025-6176
296+
# Example of beta VEX fixed product name for CVE-2025-6176
289297
{
290298
"category": "product_name",
291299
"name": "OpenShift Container Platform 4.18",
@@ -301,9 +309,10 @@ In new alpha VEX files for [CVE-2025-12801](https://security.access.redhat.com/d
301309
```
302310

303311
#### Product Variants
304-
The new alpha VEX files change how multiple product variants are represented. For RHEL products, only the 'appstream' variant will be represented. For other products that are based on RHEL, the RHEL base version will be represented like '::el8'.
305312

306-
```json
313+
The new beta VEX files change how multiple product variants are represented. For RHEL products, only the 'appstream' variant will be represented. For other products that are based on RHEL, the RHEL base version will be represented like '::el8'.
314+
315+
```json
307316
# Example of legacy VEX product variants
308317
{
309318
"category": "product_name",
@@ -342,7 +351,7 @@ The new alpha VEX files change how multiple product variants are represented. Fo
342351
```
343352

344353
```json
345-
# Example of alpha VEX product variants
354+
# Example of beta VEX product variants
346355
{
347356
"category": "product_name",
348357
"name": "Red Hat Enterprise Linux 9.7.z",
@@ -358,10 +367,12 @@ The new alpha VEX files change how multiple product variants are represented. Fo
358367
```
359368

360369
### Component Changes
370+
361371
In additon to the product representation changes, there are a few changes to component representation.
362372

363-
#### Component Naming
364-
A minor change was made to the component naming in the new alpha VEX files. The `product_version.name` and `product.name` fields for components will not include any version information, even when fixed in the new alpha VEX files.
373+
#### Component Naming
374+
375+
A minor change was made to the component naming in the new beta VEX files. The `product_version.name` and `product.name` fields for components will not include any version information, even when fixed in the new beta VEX files.
365376

366377
```json
367378
# Example of legacy VEX component naming for unfixed component
@@ -392,7 +403,7 @@ A minor change was made to the component naming in the new alpha VEX files. The
392403
```
393404

394405
```json
395-
# Example of alpha VEX component naming for unfixed component
406+
# Example of beta VEX component naming for unfixed component
396407
{
397408
"category": "product_version",
398409
"name": "libxml2",
@@ -405,7 +416,7 @@ A minor change was made to the component naming in the new alpha VEX files. The
405416
}
406417
}
407418

408-
# Example of alpha VEX component naming for fixed component
419+
# Example of beta VEX component naming for fixed component
409420
{
410421
"category": "product_version",
411422
"name": "libxml2",
@@ -420,6 +431,7 @@ A minor change was made to the component naming in the new alpha VEX files. The
420431
```
421432

422433
#### Architecture Removal
434+
423435
In legacy VEX files, fixed components were represented multiple times for their different architectures. To reduce the total number of component and relationship entries, we have decided to remove architecture representation for components in both their `name`, `product_id` and `purl`. The only exception to this is for SRPM components, which will include a ".src" in the `name` and `product_id` and "arch=src" in the `purl`.
424436

425437
```json
@@ -472,33 +484,36 @@ In legacy VEX files, fixed components were represented multiple times for their
472484
```
473485

474486
```json
475-
# Example of alpha VEX component architecture
476-
# Note: Subject to change pending resolution of component version jiras
487+
# Example of beta VEX component architecture
477488
{
478489
"category": "product_version",
479490
"name": "glibc",
480491
"product": {
481492
"name": "glibc",
482-
"product_id": "glibc-2.34-231.el9_7.10",
493+
"product_id": "glibc-0:2.34-231.el9_7.10",
483494
"product_identification_helper": {
484495
"purl": "pkg:rpm/redhat/glibc@2.34-231.el9_7.10?arch=src"
485496
}
486497
}
487498
},
488499

489500
```
490-
#### Binary RPMs
491-
More information available soon
501+
502+
#### Binary RPMs
503+
504+
More information on binary RPMS will be available soon. Product Security is working to address this gap as soon as possible.
492505

493506
## Vulnerabilities Section
494-
Finally, there were a few changes made the the `vulnerabilties` section of the new alpha VEX files.
495507

496-
### Remediations
497-
A minor change to the `vulnerabilites.remediations` object was included in the new alpha VEX files. Product and component pairs that have a 'fixed' product status will no longer be listed under a `category: workaround` remediation object. Fixed product and componets will only be listed under a `category: vendor_fix` remediation object.
508+
Finally, there were a few changes made the the `vulnerabilties` section of the new beta VEX files.
509+
510+
### Remediations
498511

512+
A minor change to the `vulnerabilites.remediations` object was included in the new beta VEX files. Product and component pairs that have a 'fixed' product status will no longer be listed under a `category: workaround` remediation object. Fixed product and componets will only be listed under a `category: vendor_fix` remediation object.
499513

500514
### CVSS Score
501-
The new alpha VEX files simplify the representation of CVSS scores by eliminating the individual metrics, which are still represented in the `vectorString`.
515+
516+
The new beta VEX files simplify the representation of CVSS scores by eliminating the individual metrics, which are still represented in the `vectorString`.
502517

503518
```json
504519
# Example of legacy VEX CVSS scores
@@ -519,7 +534,7 @@ The new alpha VEX files simplify the representation of CVSS scores by eliminatin
519534
```
520535

521536
```json
522-
# Example of alpha VEX CVSS scores
537+
# Example of beta VEX CVSS scores
523538
"cvss_v3": {
524539
"version": "3.1",
525540
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H",
@@ -530,10 +545,10 @@ The new alpha VEX files simplify the representation of CVSS scores by eliminatin
530545

531546
### Removed Vulnerabilties Objects
532547

533-
* `vulnerabilities.ids`: Entire object has been removed
534-
* `vulnerabilities.notes`: Note objects of the summary category and the general category have been removed
535-
* `vulnerabilities.references`: References to legacy Bugzilla flaws have been removed from this section
536-
* `vulenrabilities.release_date`: Removed as this date is a duplicate value to `vulnerabilities.discovery_date`
548+
- `vulnerabilities.ids`: Entire object has been removed
549+
- `vulnerabilities.notes`: Note objects of the summary category and the general category have been removed
550+
- `vulnerabilities.references`: References to legacy Bugzilla flaws have been removed from this section
551+
- `vulenrabilities.release_date`: Removed as this date is a duplicate value to `vulnerabilities.discovery_date`
537552

538553
## How to Provide Feedback
539554

@@ -542,4 +557,5 @@ For any issues or questions you have, please file a jira issue with the followi
542557
- **Project**: [SECDATA](https://issues.redhat.com/projects/SECDATA/summary)
543558
- **Issue Type**: Ticket
544559
- **Component**: ‘feedback-new-vex’
545-
- **Description**: The question or issue you wish to raise. Please provide a detailed explanation, the VEX file you are referencing and a specific example of the data.
560+
- **Description**: The question or issue you wish to raise. Please provide a detailed explanation, the VEX file you are referencing and a specific example of the data.
561+

0 commit comments

Comments
 (0)