Skip to content

restructure VEX documentation into dedicated how-to-guides section - #228

Merged
timbastin merged 12 commits into
mainfrom
restructure-vex-documentation
Aug 5, 2026
Merged

restructure VEX documentation into dedicated how-to-guides section#228
timbastin merged 12 commits into
mainfrom
restructure-vex-documentation

Conversation

@refoo0

@refoo0 refoo0 commented Aug 3, 2026

Copy link
Copy Markdown
Member

No description provided.

Signed-off-by: rafi <refaei.shikho@hotmail.com>
## What is CSAF?

**Affected**: Vulnerability impacts your application, requires remediation.
<Tooltip><TooltipTrigger asChild><span className="underline decoration-dotted decoration-yellow-400 decoration-1 underline-offset-4 cursor-pointer">CSAF</span></TooltipTrigger><TooltipContent><p>Common Security Advisory Framework - Machine-readable security advisories</p></TooltipContent></Tooltip> (Common

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can use dwts glossary feature right here

**Without VEX**: Customers see scan results and assume you're vulnerable. You repeatedly explain why specific CVEs don't affect you.

**With VEX**: Publish machine-readable assessments stating which vulnerabilities affect your product and which don't, with justifications. Customers' tools automatically consume this, eliminating redundant analysis.
<Tooltip><TooltipTrigger asChild><span className="underline decoration-dotted decoration-yellow-400 decoration-1 underline-offset-4 cursor-pointer">VEX</span></TooltipTrigger><TooltipContent><p>Vulnerability Exploitability eXchange - Vulnerability impact assessments</p></TooltipContent></Tooltip> is a

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can use dwts glossary feature right here

distinguishes them, so you can choose what to publish and know what to expect when consuming someone else's.

### VEX States
If you have not yet met the concept, start with

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think at least a brief sentence about the concept would be great. Sharing vulnerability assessments


**Affected**: Vulnerability impacts your application, requires remediation.
<Tooltip><TooltipTrigger asChild><span className="underline decoration-dotted decoration-yellow-400 decoration-1 underline-offset-4 cursor-pointer">CSAF</span></TooltipTrigger><TooltipContent><p>Common Security Advisory Framework - Machine-readable security advisories</p></TooltipContent></Tooltip> (Common
Security Advisory Framework)[^1] is an OASIS standard for machine-readable security advisories. Where earlier

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Answer the question, what a security advisory even is. Just a single sentence.

can process an advisory without a human reading it.

**Fixed**: Vulnerability remediated through patching or other action.
CSAF is broader than VEX. A CSAF document consists of:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need a clear distinction right here. CSAF in general is about sharing advisories. There is a special csaf profile, which allows you to share vex in formation as well. Those are two distinct types in the csaf space

### CycloneDX VEX is component-centric

Details vulnerabilities at component level using <Tooltip><TooltipTrigger asChild><span className="underline decoration-dotted decoration-yellow-400 decoration-1 underline-offset-4 cursor-pointer">PURL</span></TooltipTrigger><TooltipContent><p>Package URL - Standardized package identifier</p></TooltipContent></Tooltip> (Package URL).
CycloneDX attaches the assessment to the component itself, inside the SBOM structure.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Elaborate a bit. It's a json file as well - same like csaf. Just a different structure. Used a lot as a format when exchanging vulnerabilities...

**CSAF VEX**: Complex supply chains needing detailed product structure. Ideal for regulated industries.
This is simpler and more widely supported, but the <Tooltip><TooltipTrigger asChild><span className="underline decoration-dotted decoration-yellow-400 decoration-1 underline-offset-4 cursor-pointer">PURL</span></TooltipTrigger><TooltipContent><p>Package URL - Standardized package identifier</p></TooltipContent></Tooltip> is the whole
identity — there is no way to say "affected via one path, not affected via another". Where DevGuard holds two
different decisions for one component, the CycloneDX export collapses them and keeps the more severe state.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does that mean?

### OpenVEX is minimal

## DevGuard Support
OpenVEX carries statements as a flat list, designed to be small and embeddable anywhere. DevGuard's OpenVEX

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are product and subcomponents as well in OpenVeX. In terms of functionality and information expressiveness cyclonedx and OpenVeX are pretty equal. But I can send an SBOM using cyclonedx, I can't do that using OpenVeX


## DevGuard Support
OpenVEX carries statements as a flat list, designed to be small and embeddable anywhere. DevGuard's OpenVEX
export is repository-level: each statement names the product as a whole rather than individual components.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's wrong

## The point of publishing any of them

**Supply Chain Automation**: Suppliers publish → You consume → Customers consume yours → Eliminates redundant analysis.
**Without VEX**, customers see your scan results and assume you are vulnerable. You answer the same

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is like the motivation. We should start with that

@timbastin

Copy link
Copy Markdown
Member

I did not finished the review yet

**Use Cases**: Reduce false positives, communicate actual exploitability, eliminate redundant analysis.

**DevGuard**: Document Not Affected assessments, publish VEX endpoints, consume supplier VEX.
**DevGuard**: Document Not Affected assessments, publish all three formats from the same decisions, consume supplier VEX and CSAF as rules.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can link to vex rules here

# Vulnerability Mitigation Strategies & VEX Rules
# Vulnerability Mitigation Strategies

Discovering vulnerabilities is only the first step—the critical question is how to respond. Not every vulnerability requires immediate patching, and understanding your response options enables efficient resource allocation while maintaining security posture. DevGuard supports four distinct mitigation strategies based on the <Tooltip><TooltipTrigger asChild><span className="underline decoration-dotted decoration-yellow-400 decoration-1 underline-offset-4 cursor-pointer">VEX</span></TooltipTrigger><TooltipContent><p>Vulnerability Exploitability eXchange - A standard format for communicating vulnerability impact assessments</p></TooltipContent></Tooltip> standard[^1] and provides **VEX Rules** to automate these strategies at scale.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can Link to the vex pages here.

### Rule Sources

VEX rules can enter DevGuard through three paths:
Rules reach DevGuard three ways: written by hand in the web UI or over the API, generated from a VEX document you upload, or synced from an upstream supplier's URL. Rules from external sources can be held back for manual review by enabling **Paranoid Mode** on the repository.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can tell here, that devguard syncs official upstream vex source. Currently it's only the rancher vex hub but feel free to open a ticket if you know a vex source which should be part of devguard official vex rule database.

Add here, that official vex rules are distributed using the vulnerability database distribution mechanism. And they are recommended to you if they match a vulnerability part of your software.


<Callout type="warning" emoji="⚠️">
When creating VEX rules intended for sharing, choose your path pattern carefully. A pattern scoped to your specific application protects your project but doesn't help others. A pattern scoped to the library itself benefits the entire ecosystem—but requires deeper analysis to justify.
When creating VEX rules intended for sharing, scope the path carefully. A path scoped to your specific application protects your project but doesn't help others. A path scoped to the library itself benefits the entire ecosystem—but requires deeper analysis to justify.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Love this

@@ -0,0 +1,202 @@
---
title: CEL Expression Reference for VEX Rules

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should move this file to the reference directory

the URLs stable once you have handed them to customers.
</Callout>

Published CycloneDX documents reference each other: the VEX links to the SBOM and to the dashboard, so a

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After enabling publish vulnerability assessment sharing the downloaded vex and SBOMs will include those urls as well for consumers as always up to date reference.

| Open / untriaged | `in_triage` | `under_investigation` | `under_investigation` |
| False positive | `false_positive` | `not_affected` | `known_not_affected` + a `flags` label |
| Accepted risk | `exploitable` + `will_not_fix` | `affected` | `known_affected` + `no_fix_planned` |
| Fixed | `exploitable` + `update` | `fixed` | `fixed` |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just removed that yesterday - wasn't really obvious for users. Let's just delete this table row


Use this when a supplier publishes VEX continuously. You configure the URL once and DevGuard re-syncs it.

1. On the **VEX Rules** page, expand **Upstream VEX sources** and click **Add source** (or use

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be great to have some end to end test here

| **CSAF** | `known_affected` with a `no_fix_planned` remediation | Accepted risk |
| **CSAF** | `known_affected` without that remediation, `fixed`, `under_investigation` | *ignored* |
| **CycloneDX** | `false_positive`, `not_affected` | False positive |
| **CycloneDX** | `exploitable` + response `will_not_fix` | Accepted risk |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we don't do that

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should merge this with the vex index page. What do you think?

@timbastin
timbastin merged commit f544238 into main Aug 5, 2026
5 of 7 checks passed
@timbastin
timbastin deleted the restructure-vex-documentation branch August 5, 2026 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants