Skip to content

Commit 5d19e41

Browse files
dhi: add vex status and refresh (#24838)
<!--Delete sections as needed --> ## Description - Adds VEX status reference and `not_affected` justification codes based on OpenVEX and usage in the advisory repo. - Adds "Why DHI does not use `fixed`" - Removes "Why is VEX important?" and "How DHI integrates VEX" sections. This content is covered more concretely in `scanner-integrations.md`. Will follow up to figure out how to cover the content better between these two topics, but removing redundant content for now. https://deploy-preview-24838--docsdocker.netlify.app/dhi/core-concepts/vex/ ## Related issues or tickets ENGDOCS-3238 ## Reviews <!-- Notes for reviewers here --> <!-- List applicable reviews (optionally @tag reviewers) --> - [ ] Technical review - [ ] Editorial review --------- Signed-off-by: Craig Osterhout <craig.osterhout@docker.com>
1 parent f7686b3 commit 5d19e41

3 files changed

Lines changed: 32 additions & 44 deletions

File tree

_vale/config/vocabularies/Docker/accept.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ autolock
2020
[Aa]llowlist(ing)?
2121
Azure
2222
Azure AD
23+
[Bb]ackport
2324
bootup
2425
Bitnami
2526
Btrfs

content/manuals/dhi/core-concepts/vex.md

Lines changed: 29 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -17,56 +17,41 @@ indicating whether a vulnerability is exploitable in the product as shipped.
1717
This helps organizations prioritize remediation efforts by identifying
1818
vulnerabilities that do not affect their specific product configurations.
1919

20-
## Why is VEX important?
20+
For how VEX affects vulnerability counts and scanner selection, see [Scanner
21+
integrations](/manuals/dhi/explore/scanner-integrations.md). To scan a DHI with
22+
VEX support, see [Scan Docker Hardened Images](/manuals/dhi/how-to/scan.md).
2123

22-
VEX enhances traditional vulnerability management by:
24+
## VEX status reference
2325

24-
- Suppressing non-applicable vulnerabilities: By providing product-level
25-
exploitability assertions from the supplier, VEX helps filter out
26-
vulnerabilities that do not affect the product as shipped.
26+
Each VEX statement includes a `status` field that records Docker's
27+
exploitability assessment for a given CVE and image. DHI uses three of the four
28+
OpenVEX status values.
2729

28-
- Prioritizing remediation: Organizations can focus resources on addressing
29-
vulnerabilities that the producer has confirmed are exploitable in the
30-
product, improving efficiency in vulnerability management.
30+
| Status | Meaning |
31+
|---|---|
32+
| `not_affected` | The CVE was reported against a package in the image, but Docker has assessed it is not exploitable as shipped |
33+
| `under_investigation` | Docker is aware of the CVE and is actively evaluating whether it affects the image |
34+
| `affected` | Docker has confirmed the CVE is exploitable in the image and a fix is not yet available |
3135

32-
- Supporting vulnerability documentation: VEX statements can support audit
33-
discussions and help document why certain vulnerabilities do not require
34-
remediation.
36+
You can view the VEX statements for any DHI using Docker Scout. See [Scan Docker
37+
Hardened Images](/manuals/dhi/how-to/scan.md).
3538

36-
This approach is particularly beneficial when working with complex software
37-
components where not all reported CVEs apply to the specific product
38-
configuration.
39+
### `not_affected` justification codes
3940

40-
## How Docker Hardened Images integrate VEX
41+
`not_affected` statements include a machine-readable `justification` field
42+
explaining why the vulnerability does not apply:
4143

42-
To enhance vulnerability management, Docker Hardened Images (DHI) incorporate
43-
VEX reports, providing context-specific assessments of known vulnerabilities.
44+
| Justification | Meaning |
45+
|---|---|
46+
| `component_not_present` | The vulnerable component is not present in this image; the CVE matched by name against a different package |
47+
| `vulnerable_code_not_present` | The vulnerable code path was not compiled into this build |
48+
| `vulnerable_code_not_in_execute_path` | The vulnerable code exists in the package but is not called in this image's runtime configuration |
49+
| `vulnerable_code_cannot_be_controlled_by_adversary` | The vulnerable code exists but an attacker cannot trigger it in this configuration |
50+
| `inline_mitigations_already_exist` | Docker has applied a backport or patch that addresses the CVE |
4451

45-
This integration allows you to:
52+
### Why DHI does not use `fixed`
4653

47-
- Consume producer assertions: Review Docker's assertions about whether known
48-
vulnerabilities in the image's components are exploitable in the product as
49-
shipped.
50-
51-
- Prioritize actions: Focus remediation efforts on vulnerabilities that Docker
52-
has confirmed are exploitable in the image, optimizing resource allocation.
53-
54-
- Support audit documentation: Use VEX statements to document why certain
55-
reported vulnerabilities do not require immediate action.
56-
57-
By combining the security features of DHI with VEX's product-level
58-
exploitability assertions, organizations can achieve a more effective and
59-
efficient approach to vulnerability management.
60-
61-
> [!TIP]
62-
>
63-
> To understand which scanners support VEX and why it matters for your security
64-
> workflow, see [Scanner integrations](/manuals/dhi/explore/scanner-integrations.md).
65-
66-
## Use VEX to suppress non-applicable CVEs
67-
68-
Docker Hardened Images include VEX attestations that can be consumed by
69-
vulnerability scanners to suppress non-applicable CVEs. For detailed
70-
instructions on scanning with VEX support across different tools including
71-
Docker Scout, Trivy, and Grype, see [Scan Docker Hardened
72-
Images](/manuals/dhi/how-to/scan.md).
54+
DHI does not use `fixed`. VEX-enabled scanners may not handle `fixed`
55+
consistently, so when Docker backports an upstream patch where the version
56+
number alone would not reflect the fix, it uses `not_affected` with
57+
`inline_mitigations_already_exist` justification instead.

content/manuals/dhi/resources.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ organization:
5858
files and catalog metadata
5959
- [Advisories](https://github.com/docker-hardened-images/advisories): CVE
6060
advisories for OSS packages distributed with DHIs
61+
- [Scanner vendor integration guide](https://github.com/docker-hardened-images/advisories/tree/main/integration):
62+
Reference for scanner vendors integrating DHI VEX support
6163
- [Keyring](https://github.com/docker-hardened-images/keyring): Public signing
6264
keys and verification tools
6365
- [Log](https://github.com/docker-hardened-images/log): Log of references (tag >

0 commit comments

Comments
 (0)