public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
* [RFC PATCH 0/2] spdx30: Add OpenVEX standalone document generation
@ 2026-03-31 14:19 stondo
  2026-03-31 14:19 ` [RFC PATCH 1/2] " stondo
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: stondo @ 2026-03-31 14:19 UTC (permalink / raw)
  To: openembedded-core
  Cc: JPEWhacker, richard.purdie, ross.burton, marta.rybczynska,
	benjamin.robin, peter.marko, adrian.freihofer,
	mathieu.dubois-briand, stefano.tondo.ext

From: Stefano Tondo <stefano.tondo.ext@siemens.com>

Hi all,

Back at the end of December 2025, I had a conversation with Adrian
regarding OpenVEX. Following my SPDX 3.0 enhancement series that was
merged recently [1], I would like to propose adding OpenVEX [2]
standalone document generation to the SPDX 3.0 workflow.


Context: current VEX landscape in oe-core
-----------------------------------------

Yocto currently has three VEX-related mechanisms:

1. SPDX embedded VEX (Joshua's recipe-level architecture in
   create-spdx-3.0): VEX assessment relationships embedded inside SPDX
   3.0 documents, controlled by SPDX_INCLUDE_VEX. This is the richest
   VEX data source, now at recipe level after the package VEX
   removal [3].

2. vex.bbclass (Marta Rybczynska): A standalone do_generate_vex task
   that produces per-recipe JSON files and a rootfs manifest in a custom
   Yocto JSON format. Used for CVE reporting and consumed by external
   analysis tools.

3. sbom-cve-check (Benjamin Robin, under review [4]): Post-build CVE
   analysis using an external tool that reads SPDX SBOMs + vex.bbclass
   manifests, then re-exports enriched SPDX 3 data.

What is currently missing is output in the OpenVEX format (openvex.dev),
which is a lightweight, interoperable JSON format adopted by an
increasing number of vulnerability management tools.


Motivation
----------

The OpenVEX specification [2] is gaining adoption as the standard VEX
transport format. Several widely-used tools already consume OpenVEX
natively:

  - Grype (Anchore):       grype --vex openvex.json
  - Trivy (Aqua Security): trivy image --vex openvex.json
  - cosign/sigstore:       VEX attestation support

Having standalone OpenVEX files alongside SPDX SBOMs would enable:

  - Direct integration with the scanning tools listed above
  - Separate distribution of VEX data without shipping the full SBOM
  - Compliance with EU Cyber Resilience Act and US Executive Order 14028
    requirements for machine-readable vulnerability assessments
  - Decoupled VEX lifecycle: documents can be updated independently
    when vulnerability status changes

This implementation does NOT replace or conflict with the existing VEX
mechanisms. It is an additional optional output format that reuses the
VEX data already produced by Joshua's recipe-level SPDX architecture.


Implementation
--------------

The approach hooks into the existing create-spdx-3.0 workflow. When a
recipe has CVE data, the implementation reads the VEX assessment
relationships already present in the SPDX output and generates a
standalone .vex.json file in OpenVEX format alongside the SPDX
document. The SPDX VEX statuses (patched, unpatched, ignored, unknown)
are mapped to their OpenVEX equivalents, and product identification
uses PURLs from the SPDX packages. The feature is disabled by default
and opt-in via a single configuration variable.

The series is two patches (generation logic + selftests), both included
below for anyone who wants to look at the details.


Open questions
--------------

1. Should the OpenVEX document ID scheme use a different namespace
   than https://openvex.dev/docs/yocto/ ?

2. Is the SSTATE_ALLOW_OVERLAP_FILES += "${DEPLOY_DIR_SPDX}" approach
   acceptable for VEX file sharing between recipe and package sstate
   tasks?

Looking forward to your feedback.

[1] https://lists.openembedded.org/g/openembedded-core/message/213367
[2] https://openvex.dev/
[3] commit 6406240932 ("spdx30: Remove package VEX")
[4] https://patchwork.openembedded.org/project/oe-core/list/?series=&submitter=&state=&q=sbom-cve-check&archive=&delegate=

Stefano Tondo (2):
  spdx30: Add OpenVEX standalone document generation
  oeqa/selftest: Add tests for OpenVEX integration

 meta/classes/create-spdx-3.0.bbclass |  19 +++
 meta/classes/spdx-common.bbclass     |  15 +++
 meta/lib/oe/spdx30_tasks.py          | 193 +++++++++++++++++++++++++++
 meta/lib/oeqa/selftest/cases/spdx.py |  90 +++++++++++++
 4 files changed, 317 insertions(+)

-- 
2.53.0



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2026-04-01 11:34 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-31 14:19 [RFC PATCH 0/2] spdx30: Add OpenVEX standalone document generation stondo
2026-03-31 14:19 ` [RFC PATCH 1/2] " stondo
2026-03-31 14:19 ` [RFC PATCH 2/2] oeqa/selftest: Add tests for OpenVEX integration stondo
2026-03-31 14:23 ` [RFC PATCH 0/2] spdx30: Add OpenVEX standalone document generation Richard Purdie
2026-03-31 14:46   ` [OE-core] " Marta Rybczynska
2026-03-31 15:04   ` Joshua Watt
2026-03-31 22:05     ` Freihofer, Adrian
2026-04-01  7:43       ` Benjamin Robin
2026-04-01  9:58         ` Freihofer, Adrian
2026-04-01 11:34           ` Benjamin Robin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox