Markdown Editor

SBOM and VEX Policy Template (CISA 2026, CycloneDX, SPDX)

SBOM production, signing, VEX rules, distribution, supplier SBOMs, retention, exceptions, metrics, CISA 2026 to CycloneDX and SPDX field map

सुरक्षा इंजीनियरिंगपूर्णCISA 2026 SBOM Minimum Elements; CycloneDX 1.7; SPDX 3.0.1; CISA VEXsbomvexpolicy
एडिटर में खोलें.md डाउनलोड करें

उपयोग कैसे करें: Use it to set one organisation-wide rule set for producing, signing, sharing and keeping SBOMs and VEX, and for what you require from suppliers. Fill the scope, roles and production rules first, then validate the Appendix A field mapping against your generator's real output. The main pitfall is treating the SBOM as a one-off compliance file instead of regenerating it every release and backing it with VEX.

प्रीव्यू

SBOM and VEX Policy: [Organisation name]

Organisation policy for producing, consuming, signing, distributing and retaining software bills of materials (SBOMs) and vulnerability exploitability exchange (VEX) statements. Data fields and practices follow the joint CISA guidance 2026 Minimum Elements for a Software Bill of Materials (SBOM) (version 2.1, 29 July 2026), which updates and replaces the NTIA 2021 minimum elements. Formats: CycloneDX 1.7 (ECMA-424, 2nd edition, December 2025) and SPDX 3.0.1 (December 2024). VEX follows the CISA Minimum Requirements for VEX (April 2023) and is expressed in CycloneDX, the OASIS CSAF 2.0 VEX profile or OpenVEX v0.2.0. Appendix A maps every 2026 minimum element to CycloneDX 1.7 and SPDX 3.0.1 fields. Replace every [bracketed] value and every row marked Example. Worked examples use Corvid Commerce, a fictional SaaS company that also ships an on-premises point-of-sale agent and an open-source SDK. This is a documentation format, not legal advice.

Document control

FieldValue
Document ID[SBV-POL-001]
Version[1.0]
Status[Draft / In review / Approved / Superseded]
Owner[@head-of-product-security]
Approvers / reviewers[@ciso], [@vp-engineering], [@head-of-legal], [@head-of-procurement]
Last updatedYYYY-MM-DD
Classification[Internal]
Effective dateYYYY-MM-DD
Next reviewYYYY-MM-DD (at least annually, and within 90 days of a new major format or guidance version)
Products in scope[Example: Corvid Storefront (SaaS), Corvid POS Agent (on-premises), corvid-sdk (open source)]
Primary SBOM format[Example: CycloneDX 1.7 JSON]
Secondary SBOM format[Example: SPDX 3.0.1 JSON-LD, on request]
VEX formats[Example: CSAF 2.0 VEX profile for customers, OpenVEX v0.2.0 for corvid-sdk]
Related[Software supply chain assessment], [PSIRT procedure], [Dependency management policy], [Records retention schedule]

Approvals

RoleNameDecisionDate
Chief information security officer[@name][Approved / Changes requested]YYYY-MM-DD
VP Engineering[@name][Decision]YYYY-MM-DD
Head of Legal[@name][Decision]YYYY-MM-DD
Head of Procurement[@name][Decision]YYYY-MM-DD

Revision history

VersionDateAuthorChange summary
0.1YYYY-MM-DD[@name]First draft
0.2YYYY-MM-DD[@name]Example: Field mapping (Appendix A) validated against generator output for all three products
1.0YYYY-MM-DD[@name]Example: Approved; replaces SBOM section of the 20XX secure development standard

Contents

1. Purpose and drivers

1.1 Purpose

This policy makes software composition transparent, both for the software [Organisation name] ships and for the software it buys. It sets one organisation-wide rule set so that every product produces SBOMs with the same minimum content, signs them the same way, publishes VEX statements to explain vulnerability status, and keeps the records long enough to answer a customer, auditor or regulator about any supported version.

The policy has three outcomes. Know what we ship: for every released version, an accurate, signed, machine-processable component inventory exists and is retrievable. Answer "are we affected?" quickly: when a vulnerability is published, the security team can tell within hours which products and versions contain the component and can publish a VEX status. Know what we buy: third-party software that processes our data or runs in our environment comes with SBOM data that we validate and ingest.

1.2 Drivers

IDDriverRequirement it createsPolicy statements
DRV-01 (Example)CISA 2026 Minimum Elements for an SBOMBaseline data fields and practices for SBOMs requested and produced4.3, Appendix A
DRV-02 (Example)EU Cyber Resilience Act, Regulation (EU) 2024/2847, Annex I Part II point 1Manufacturers identify and document components, including by drawing up an SBOM covering at least top-level dependencies (check the consolidated text and any implementing act on format)4.1, 4.3, 8
DRV-03 (Example)Enterprise customer contracts (retail chains buying Corvid POS Agent)SBOM per release delivered within 5 business days of request; VEX for listed CVEs6.2, 5.1
DRV-04 (Example)OpenSSF OSPS Baseline OSPS-QA-02.02 and OSPS-VM-04.02 (corvid-sdk)Released compiled assets carry an SBOM; non-affecting vulnerabilities explained in VEX4.2, 5.1
DRV-05[Sector or national rule][Requirement][Section]

2. Scope and applicability

2.1 In scope and out of scope

ItemIn scopeNotes
Distributed software: installable software, container images, mobile apps, firmware, librariesYesEvery product, version and release channel shipped to customers or the public
Open-source projects maintained by employees in an official capacityYesPublic channels per section 6.2
Software operated as a service (SaaS)YesDeployed services that customers depend on; deployed-context SBOM (SBV-08)
Internal build and signing platforms (CI/CD runners, base images)YesThey are components of the delivered product
Third-party software used in production or processing confidential dataYesConsumption rules in section 7
AI components embedded in products (models, datasets, agent tools)YesAdditional elements recorded in the AI bill of materials
End-user productivity software that does not process customer dataNoUnless procurement flags it as critical
Prototypes and spikes that never leave a development environmentNoBecomes in scope at first external release
Data management and storage details inside SBOM toolsNoAlso out of scope of the CISA guidance

2.2 Lifecycle

Each arrow is a control point covered by a numbered statement in sections 4 to 7.

3. Roles and responsibilities

3.1 Roles

RoleResponsibilities
Policy owner (Head of Product Security)Maintains this policy, approves exceptions up to Medium risk, reports metrics quarterly
Product engineering leadEnsures the product's release pipeline generates, validates and signs SBOMs that meet section 4
Build platform teamProvides the standard SBOM generation and signing jobs, key management integration and the SBOM repository
PSIRTMatches SBOMs against new vulnerabilities, decides VEX status with engineering, publishes VEX and advisories
Release managerBlocks a release whose SBOM gate fails; confirms SBOM and VEX are published with release notes
Legal and open-source programme officeReviews licence data, approves what is withheld from external SBOMs, owns licence obligations
Procurement and vendor riskPuts SBOM and VEX clauses in contracts; tracks supplier delivery
Customer trust teamHandles SBOM requests from customers; tracks NDA status

3.2 RACI

ActivityPolicy ownerEngineering leadBuild platformPSIRTRelease managerLegalProcurement
Generate SBOM per releaseIARICI-
Sign SBOM and bind to artefactIARIC--
Validate SBOM quality gateCARCR--
Decide VEX statusCC-A, RI--
Publish VEX or advisoryIC-A, RIC-
Answer customer SBOM requestIC-C-C-
Contract clauses for supplier SBOMsC--C-CA, R
Approve exceptionsARCCICC

R = responsible, A = accountable, C = consulted, I = informed.

4. SBOM production

The keywords MUST, MUST NOT, SHOULD and MAY are used as in RFC 2119 and RFC 8174 when written in capitals.

4.1 Formats and versions

  • SBV-01 Every SBOM MUST be produced in a format that is open, machine-processable and widely supported. The approved formats are CycloneDX and SPDX, the two formats the 2026 minimum elements name as widely used.
  • SBV-02 The primary format MUST be [CycloneDX 1.7] in JSON. Products MAY additionally publish [SPDX 3.0.1] in JSON-LD where a customer or regulator asks for it.
  • SBV-03 Products MUST NOT emit a format version that its maintainer has declared deprecated. The policy owner reviews supported versions at each review (section 11). At the time of writing CycloneDX 1.7 is current (Ecma published ECMA-424 2nd edition in December 2025; specification patch 1.7.2 was tagged in September 2026) and SPDX 3.0.1 is current, with SPDX 3.1 at release candidate stage only.
  • SBV-04 When a new major or minor format version is published, the build platform team SHOULD support it within [6 months] and MUST keep support for the previous version for at least [12 months] so that customers' tools keep working.

4.2 Generation

  • SBV-05 Each released software version or update MUST have its own SBOM, including patch releases and rebuilt container images whose base layers changed.
  • SBV-06 SBOMs MUST be generated automatically in the release build from the resolved dependency graph (lockfiles, build manifests and the final artefact), not written by hand.
  • SBV-07 Each SBOM MUST record its generation context. The default for release SBOMs is the build phase; products SHOULD add a post-build (analysed) SBOM for container images and firmware, produced by binary or image analysis, and reconcile it with the build SBOM.
  • SBV-08 SaaS services MUST maintain a deployed-context SBOM for each production deployment unit, regenerated on every deployment, so that the running inventory can be matched against new vulnerabilities.
  • SBV-09 When the producer discovers an error or new information about a component, a revised SBOM MUST be issued with an incremented SBOM Version and a new timestamp, and the previous revision kept (section 8).

4.3 Content and coverage

  • SBV-10 Every SBOM MUST populate all 17 data fields of the 2026 minimum elements: nine SBOM Metadata fields and eight Component Data fields, as mapped in Appendix A. The SBOM Author MUST name the organisation that operated the generator (in full, not as an acronym), never the tool.
  • SBV-11 Coverage MUST include all components that make up the target software, including transitive dependencies, with no minimum depth cut-off. If several instances of one component differ in metadata, each instance MUST be listed separately with its dependency relationship.
  • SBV-12 Non-code files MAY be excluded, but security-relevant configuration files SHOULD be included.
  • SBV-13 Where a field cannot be populated, the SBOM MUST state whether the value is unknown to the author or deliberately withheld. Silence is not allowed: an empty field is a gate failure.
  • SBV-14 Component Producer MUST name the single organisation that created the component, using its full name rather than an acronym. When the producer cannot be determined, the SBOM MUST mark the component as of unknown provenance. Suppliers or redistributors (for example a Linux distribution) are recorded in the supplier field, not as producer.
  • SBV-15 Component Identifiers MUST include a Package URL (PURL) where the ecosystem supports one, and SHOULD include every other identifier known (CPE, SWHID, OmniBOR identifier, commit hash).
  • SBV-16 Component Hash Value MUST be computed over the executable artefact with an approved algorithm, [SHA-256] minimum, and the algorithm MUST be recorded. MD5 and SHA-1 MUST NOT be the only hash recorded.
  • SBV-17 Component License MUST use SPDX licence identifiers or expressions where they exist; otherwise it MUST point to where the full licence terms are available and flag proprietary conditions.
  • SBV-18 The SBOM Timestamp MUST be in UTC with an explicit offset (for example 2026-10-24T09:30:00Z), which is valid under RFC 3339 and RFC 9557 and accepted by both formats.
  • SBV-19 First-party code copied from another project MUST be recorded as a dependency (an internal fork with a name), not hidden inside a first-party component.
  • SBV-20 Withheld information MUST be limited to what Legal approves (for example unreleased internal component names in a public SBOM), and recipients MUST have a documented route to ask about withheld security-relevant data.

4.4 Signing and integrity

  • SBV-21 Every distributed SBOM MUST carry an SBOM Author Signature that lets a recipient verify who produced it and that it was not modified.
  • SBV-22 Signatures MUST use an algorithm approved by NIST (FIPS 186-5) or an equivalent national authority. [Example: ECDSA P-256 with SHA-256 via the organisation's keyless signing service, with transparency log entries.]
  • SBV-23 The SBOM MUST be bound to the artefact it describes, either as a signed attestation that references the artefact digest or by listing the target component hash in the SBOM itself.
  • SBV-24 Signing keys MUST be managed under the key management standard, with private keys in a hardware-backed or managed key service and rotation at least every [12 months] for long-lived keys.
  • SBV-25 SPDX 3.0.1 has no in-document signature property, so SPDX SBOMs MUST be signed with a detached signature distributed beside the document. CycloneDX SBOMs MAY use the enveloped JSON Signature Format signature or a detached signature; the product records which.

4.5 Quality gate

Every release pipeline runs an automated SBOM gate. A release MUST NOT be promoted if the gate fails, unless an exception is approved (section 9).

Gate checkRuleThreshold
QG-01 Schema validityDocument validates against the official schema of its format version100%
QG-02 Metadata completenessAll nine SBOM Metadata fields present100%
QG-03 Component completenessName, version, producer, identifier, hash, licence present or explicitly marked unknown or withheld100% marked; [95%] populated (Example)
QG-04 PURL coverageComponents with a PURL, where the ecosystem supports PURL[98%] (Example)
QG-05 Dependency graphEvery component reachable from the target component through dependency relationships100%
QG-06 SignatureSignature verifies against the published key or identityPass
QG-07 DriftBuild SBOM and post-build SBOM differ by no more than the accepted list[0 unexplained components] (Example)
QG-08 Prohibited componentsNo component on the deny list (licence or security)0

4.6 Worked example

ProductVersionFormatsGeneration contextComponentsUnknown or withheldGateNotes
Corvid POS Agent (Example)5.4.0CycloneDX 1.7, SPDX 3.0.1build plus post-build4126 unknown producer, 0 withheldPass6 vendored C files marked unknown provenance; ticket SEC-2201 to trace origin
Corvid Storefront (Example)deploy 2026-10-20.3CycloneDX 1.7deployed1,1860 unknown, 14 withheld (internal service names)PassShared with customers under NDA
corvid-sdk (Example)3.2.1CycloneDX 1.7build370PassPublished on the release page with the signature bundle

5. VEX and exploitability statements

5.1 When to issue VEX

  • SBV-26 PSIRT MUST publish a VEX statement for a product version when any of the following is true: a vulnerability in a listed component is added to the CISA Known Exploited Vulnerabilities catalogue; a customer asks about a specific vulnerability; a vulnerability rated High or Critical is published for a component in a supported version; or the product is affected and a fix or mitigation is available.
  • SBV-27 PSIRT SHOULD publish "not affected" statements proactively for widely reported vulnerabilities in components the product does not contain or does not reach, to reduce customer triage effort.
  • SBV-28 An "under investigation" statement SHOULD be published within [2 business days] of a High or Critical vulnerability in a listed component being made public, and updated to a final status within [10 business days] (Example targets; align with the PSIRT procedure).

5.2 Status, justification and evidence

Every VEX statement MUST identify the product (and version), the vulnerability and one status. The four statuses come from the CISA minimum requirements for VEX (April 2023); the five "not affected" justification labels come from the earlier CISA document VEX Status Justifications (June 2022).

StatusAdditional content requiredEvidence before publishing
Not affectedA justification from the fixed list, or an impact statement explaining why the vulnerability cannot be exploitedEngineering analysis recorded in the PSIRT case; second reviewer from product security
AffectedAn action statement describing remediation or mitigationReproduction or reachability analysis; fix plan
FixedThe fixed product versionsRelease record showing the patched component version
Under investigationNone beyond identificationCase opened in the PSIRT tracker
  • SBV-29 A "not affected" status MUST NOT be published on the grounds of a compensating control the customer must configure; that is "affected" with a mitigation in the action statement.
  • SBV-30 The justifications "vulnerable code cannot be controlled by adversary" and "inline mitigations already exist" MUST be approved by the head of product security, because they are hard to prove and frequently bypassed.
  • SBV-31 Every change of status MUST produce a new VEX document version with a new timestamp; earlier versions are retained.

5.3 Formats and binding to SBOMs

  • SBV-32 Customer-facing VEX MUST be machine-readable. Approved formats are the CSAF 2.0 VEX profile, CycloneDX 1.7 vulnerability analysis (embedded in or alongside the BOM) and OpenVEX v0.2.0 (a draft specification: use it where the ecosystem expects it, such as container image scanners and open-source projects).
  • SBV-33 VEX statements MUST reference products with the same identifiers used in the SBOM (PURL or CPE plus version) so that tools can correlate them automatically.
  • SBV-34 VEX documents MUST be signed under the same rules as SBOMs (4.4).
  • SBV-35 Full advisories for affected products are produced with the Security Advisory template (security/security-advisory); this policy governs the VEX content only.

5.4 Worked example

VEX IDProduct versionVulnerabilityStatusJustification or actionApproved byFormat
CORVID-VEX-2026-031 (Example)Corvid POS Agent 5.4.0CVE-YYYY-NNNNN (XML parser entity expansion)Not affectedVulnerable code not in execute path: the parser is used only for signed configuration from the management server, with entity expansion disabled[@head-of-product-security]CSAF 2.0 VEX
CORVID-VEX-2026-032 (Example)Corvid POS Agent 5.3.2CVE-YYYY-NNNNN (TLS library)AffectedUpgrade to 5.3.3; until then disable the legacy cipher list in agent settings[@psirt-lead]CSAF 2.0 VEX
CORVID-VEX-2026-033 (Example)corvid-sdk 3.2.1CVE-YYYY-NNNNN (HTTP client)FixedFixed in 3.2.1 (client pinned to the patched release)[@maintainer]OpenVEX

6. Distribution and access

6.1 Rules

  • SBV-36 SBOMs and VEX MUST be available promptly to those who need them, through the channel defined per product class below.
  • SBV-37 Access controls MAY restrict SBOM data to authorised parties (for example customers under NDA), but MUST NOT prevent an authorised recipient from importing the data into its own security tooling.
  • SBV-38 Each SBOM MUST be retrievable by a stable, version-specific URL or API query, and MUST be referenced from the release notes.
  • SBV-39 Distribution services MUST follow the organisation's security policy (authenticated channels, TLS, logging of downloads for restricted documents).

6.2 Channels by product class

Product classSBOM channelVEX channelAudienceResponse time for requests
Open-source projects (Example)Release page, signed, publicRepository vex/ directory and release pagePublicPublished with release
Installable software (Example)Customer trust portal and inside the installation packageTrust portal and CSAF provider metadataCustomersPublished with release
SaaS (Example)Trust portal, on request, under NDATrust portalCustomers and auditors[5 business days]
Regulators and market surveillanceSecure transfer on reasoned requestSameAuthoritiesPer legal deadline

7. Consuming third-party SBOMs and VEX

  • SBV-40 Contracts for software in scope (2.1) MUST require the supplier to provide an SBOM meeting the 2026 minimum elements for each delivered version, in CycloneDX or SPDX, with VEX or CSAF advisories for vulnerabilities in listed components. Use the supplier security assessment for the wider questionnaire.
  • SBV-41 Received SBOMs MUST be validated on intake: schema validity, signature verification, the 17 data fields and a spot check of coverage (for example comparing with a binary scan of the delivered artefact).
  • SBV-42 Validated SBOMs MUST be ingested into the central inventory and matched against vulnerability sources at least [daily].
  • SBV-43 Supplier VEX "not affected" statements MAY be used to suppress findings only when the VEX is signed by the supplier and references the exact product version in use.
  • SBV-44 SBOM quality issues (missing fields, failed signature, large undeclared components) MUST be raised with the supplier and recorded in the vendor risk register; persistent failure is a risk acceptance decision (section 9).
Supplier (Example)ProductSBOM receivedValidation resultAction
Northwind Payments Ltd (fictional)Card terminal SDK 8.1CycloneDX 1.6, signed15 of 17 fields: SBOM Generation Context and Component License missingRequest revised SBOM by YYYY-MM-DD; ingest meanwhile with gaps flagged
Example Analytics Inc (fictional)Reporting service (SaaS)NoneNot deliveredContract renewal blocked until clause accepted

8. Retention and records

  • SBV-45 Every SBOM and VEX revision MUST be retained, with its signature, for at least the longest of: the product version's support period plus [2 years]; the contractual retention period; and any legal retention period (for products under the EU Cyber Resilience Act, check the technical documentation retention requirement in the consolidated text).
  • SBV-46 Records MUST be stored in the SBOM repository with integrity protection (write-once storage or signed manifests) and backed up under the backup policy.
  • SBV-47 Deletion at the end of retention MUST follow the records schedule and be logged.
RecordRetention (Example)LocationOwner
Release SBOMs and signaturesSupport period plus 10 years (CRA products)SBOM repository, immutable bucketBuild platform
Deployed SaaS SBOMs3 yearsSBOM repositoryBuild platform
VEX documents, all revisionsSame as the related SBOMCSAF provider and repositoryPSIRT
Supplier SBOMsContract term plus 3 yearsVendor risk systemProcurement
Gate results3 yearsCI logs archiveRelease management

9. Exceptions and risk acceptance

  • SBV-48 Any deviation from a MUST statement requires an exception recorded in the exception register with: the statement ID, product and version, reason, compensating measures, risk rating, owner and expiry date (maximum [6 months], renewable once).
  • SBV-49 Approval levels: Low and Medium risk by the policy owner; High risk by the CISO; any exception that affects a regulatory or contractual obligation also requires Legal.
Exception IDStatementProductReasonCompensating measureRiskApproved byExpires
SBV-EXC-004 (Example)SBV-08Corvid Storefront legacy reporting serviceDeployment tooling cannot run the SBOM jobWeekly image scan of the running container; migration to the standard pipeline planned in Q1Medium[@head-of-product-security]YYYY-MM-DD

10. Compliance measurement

MetricFormulaTarget (Example)Source
M1 SBOM coverageReleases with a gate-passing signed SBOM ÷ all releases in the period × 100100%Release records
M2 Field completenessPopulated or explicitly marked fields ÷ (17 × components) × 100100% marked, ≥ 95% populatedGate results
M3 VEX timelinessMedian business days from public disclosure to final VEX status for High and Critical≤ 10PSIRT tracker
M4 Customer request timeRequests answered within target ÷ all requests × 100≥ 95%Trust portal
M5 Supplier SBOM coverageIn-scope suppliers delivering compliant SBOMs ÷ in-scope suppliers × 100≥ 80% this yearVendor risk register
M6 Drift findingsUnexplained components found by post-build analysis per release0Gate QG-07

Example quarter for Corvid Commerce: 46 releases, 46 with passing signed SBOMs (M1 = 100%); 1,635 components across the latest SBOMs of three products, 27,795 field slots (1,635 × 17), 27,795 marked and 27,402 populated (M2 = 100% marked, 98.6% populated); median VEX time 6 business days (M3 met); 19 of 20 customer requests on time (M4 = 95%); 12 of 18 suppliers compliant (M5 = 66.7%, below target, action owned by Procurement).

11. Review cycle

The policy owner reviews this policy at least annually, records the outcome in the revision history, and also reviews it when any of these triggers occurs:

  • a new edition of the CISA minimum elements or of related guidance, such as the G7 Software Bill of Materials for AI: Minimum Elements (May 2026);
  • a new CycloneDX or SPDX version (SPDX 3.1 final, CycloneDX 1.8) or CSAF 2.1 approval as an OASIS standard;
  • an EU implementing act specifying SBOM format or elements under the Cyber Resilience Act;
  • an incident where SBOM or VEX data was wrong, late or missing;
  • two consecutive quarters below target on any metric in section 10.

12. Related documents

DocumentRelationship
Software Supply Chain Security Assessment (security/supply-chain-security)Product-level assessment (SLSA, signing, Scorecard) that applies this policy
AI Bill of Materials (ai-data/ai-bom)Additional elements for models, datasets and agent tools
CRA Vulnerability Handling and Reporting Procedure (security/cra-vulnerability-handling)EU duties for SBOM, vulnerability handling and reporting
Security Advisory (security/security-advisory)Public advisory format that carries VEX for affected products
PSIRT Vulnerability Handling (security/psirt-vulnerability-handling)Producer-side triage that decides VEX status
Vulnerability Disclosure Policy (security/vulnerability-disclosure-policy)Public intake channel for reports
Dependency Management Policy (dev/dependency-management-policy)Rules for adding and updating the components the SBOM lists
Release Checklist (dev/release-checklist)Release step that confirms SBOM and VEX publication
SSDF Practice Conformance (security/ssdf-practice-attestation)Evidence that SBOM practices meet NIST SSDF expectations
Supplier Security Assessment (compliance/supplier-security-assessment)Questionnaire that includes the SBOM clauses of section 7
OSS Project Security Baseline (security/oss-project-security-baseline)Self-assessment for open-source projects, including SBOM and VEX controls

13. Glossary and references

13.1 Glossary

TermDefinition
SBOMSoftware bill of materials: a nested, machine-processable inventory of the components that make up a piece of software
Target componentThe component an SBOM is generated for
Component ProducerThe single organisation that created a component, distinct from a distributor or supplier
SBOM AuthorThe entity that operated the tool to create the SBOM data
Generation contextThe lifecycle phase (before build, build, after build, deployed) in which the SBOM was produced
VEXVulnerability exploitability exchange: a statement of whether a product version is affected by a vulnerability
CSAFCommon Security Advisory Framework, an OASIS standard for machine-readable advisories, with a VEX profile
PURLPackage URL, a uniform identifier for software packages, standardised as ECMA-427
DriftComponents present in the artefact but absent from its build SBOM, or the reverse

13.2 References

ReferenceUse
CISA, NSA, FBI and international partners, 2026 Minimum Elements for a Software Bill of Materials (SBOM), version 2.1, 29 July 2026 (cisa.gov/resources-tools/resources/2026-minimum-elements-software-bill-materials-sbom; TLP:CLEAR copy: ic3.gov/CSA/2026/260729.pdf)Element names and practices (4, Appendix A)
CISA, Minimum Requirements for Vulnerability Exploitability eXchange (VEX), April 2023 (cisa.gov)VEX statuses and required content (5)
CISA, Vulnerability Exploitability eXchange (VEX): Status Justifications, June 2022 (cisa.gov)Justification labels (5.2, Appendix B)
CycloneDX Bill of Materials Standard 1.7, ECMA-424 2nd edition, December 2025 (cyclonedx.org; ecma-international.org)Field paths (Appendix A, B)
SPDX Specification 3.0.1, 17 December 2024 (spdx.github.io/spdx-spec/v3.0.1)Field paths (Appendix A, B)
OASIS, Common Security Advisory Framework Version 2.0, OASIS Standard, 18 November 2022, with Errata 01 (2024) (docs.oasis-open.org/csaf/csaf/v2.0)VEX profile and product status (5, Appendix B)
OpenVEX Specification v0.2.0, draft (github.com/openvex/spec)VEX fields (Appendix B)
G7 and CISA, Software Bill of Materials for AI: Minimum Elements, May 2026Additional AI elements (11)
RFC 9557 (timestamps), RFC 9562 (UUIDs), RFC 2119 and RFC 8174 (requirement keywords)Timestamp, serial number, keywords
Regulation (EU) 2024/2847 (Cyber Resilience Act), eur-lex.europa.euDriver DRV-02, retention (8)

Appendix A. Field mapping: CISA 2026 minimum elements to CycloneDX 1.7 and SPDX 3.0.1

A.1 SBOM Metadata

2026 minimum elementMeaning (paraphrased)CycloneDX 1.7SPDX 3.0.1Policy
SBOM AuthorEntity that created the SBOM data (the operator of the tool, not the tool)metadata.manufacturer (organisation) or metadata.authors (people)CreationInfo.createdBy (Organization or Person agent)SBV-06, SBV-10, SBV-21
SBOM Author SignatureDigital signature attributable to the SBOM authorTop-level signature (JSON Signature Format) or detached signatureNo in-document property: detached signature over the serialised documentSBV-21 to SBV-25
SBOM Data Format NameName of the data formatbomFormat = CycloneDXImplied by the SPDX 3.0.1 JSON-LD context and the SpdxDocument typeSBV-01
SBOM Data Format VersionVersion identifier of that formatspecVersion = 1.7CreationInfo.specVersion = 3.0.1SBV-03
SBOM Generation ContextLifecycle phase and data available when generatedmetadata.lifecycles[].phase (design, pre-build, build, post-build, operations, discovery, decommission)software_Sbom.software_sbomType (design, source, build, deployed, runtime, analyzed)SBV-07
SBOM TimestampDate and time of the most recent update, per RFC 9557metadata.timestampCreationInfo.createdSBV-18
SBOM Tool NameTool used to generate or amend the SBOMmetadata.tools.components[].nameCreationInfo.createdUsing (Tool element name)SBV-06
SBOM Tool VersionVersion of that toolmetadata.tools.components[].versionTool has no version property: include the version in the Tool name or an externalIdentifierSBV-06
SBOM VersionAuthor's identifier for this revision of the SBOMversion (integer, increment on change) with a stable serialNumber (UUID URN)No dedicated property: issue a new SpdxDocument with a new spdxId per revision, link the previous revision to it with an amendedBy relationship and record the revision in nameSBV-09

A.2 Component Data

2026 minimum elementMeaning (paraphrased)CycloneDX 1.7SPDX 3.0.1Policy
Component ProducerSingle entity that created the component (replaces 2021 "Supplier Name")components[].manufacturer; keep supplier for distributorsoriginatedBy (Agent); keep suppliedBy for distributorsSBV-14
Component NameName assigned by the producercomponents[].name (with group where the ecosystem uses namespaces)nameSBV-10
Component VersionProducer's version identifiercomponents[].versionsoftware_packageVersionSBV-10
Component IdentifiersIdentifiers for look-up (CPE, PURL, SWHID, OmniBOR and others)purl, cpe, swhid, omniborId, swidsoftware_packageUrl; externalIdentifier with type packageUrl, cpe23, swhid, gitoid, swidSBV-15
Component Hash ValueHash of the executable component artefactcomponents[].hashes[].contentverifiedUsing Hash hashValueSBV-16
Component Hash AlgorithmAlgorithm used, named per IANA hash function textual namescomponents[].hashes[].alg (for example SHA-256)verifiedUsing Hash algorithm (for example sha256)SBV-16; spellings differ by format and from IANA (sha-256): the rule is the algorithm, not the spelling
Component LicenseLicence identifiers, SPDX identifiers preferredcomponents[].licenses[] (license.id or expression)Relationship hasDeclaredLicense or hasConcludedLicense to a licence expressionSBV-17
Component Dependency RelationshipOne component is needed by anotherdependencies[] with ref and dependsOnRelationship of type dependsOn (and contains for inclusion)SBV-11

A.3 Practices and Processes

2026 practiceWhat it expects (paraphrased)Where this policy meets itFormat support
Accommodation of Updates to SBOM DataCorrect errors promptly; accept correctionsSBV-09, SBV-31CycloneDX version; SPDX new revision
CoverageAll components including transitive; no minimum depth; linked SBOMs allowed if the recipient can access themSBV-11, SBV-12CycloneDX compositions[].aggregate (complete, incomplete, unknown and variants); SPDX Relationship completeness (complete, incomplete, noAssertion)
Distribution and DeliveryPrompt availability; access control must not block authorised sharing (absorbs the removed 2021 Access Controls element)SBV-36 to SBV-39Out of format scope
Explicitly Identifying Unknown InformationState whether data is unknown or withheld; offer a route to ask about redactionsSBV-13, SBV-20CycloneDX compositions with unknown; SPDX noAssertion completeness and NoAssertion elements
FrequencyNew SBOM for every version, build or update; revised SBOM on new knowledgeSBV-05, SBV-09n/a
Machine-Processable DataSupport the widely used open formats; retire formats that become unmaintainedSBV-01 to SBV-04n/a

Appendix B. VEX status and justification mapping

Internal status (CISA VEX)CSAF 2.0 product_statusCycloneDX 1.7 analysis.stateOpenVEX v0.2.0 statusSPDX 3.0.1 security profile
Not affectedknown_not_affected (with a flag or an impact threat)not_affected (or false_positive when the finding is wrong)not_affectedVexNotAffectedVulnAssessmentRelationship
Affectedknown_affected (with a remediation)exploitableaffected (with action_statement)VexAffectedVulnAssessmentRelationship
Fixedfixed (and first_fixed)resolvedfixedVexFixedVulnAssessmentRelationship
Under investigationunder_investigationin_triageunder_investigationVexUnderInvestigationVulnAssessmentRelationship
CISA and OpenVEX justificationCSAF 2.0 flag labelClosest CycloneDX 1.7 justification
Component not presentcomponent_not_presentcode_not_present (component level)
Vulnerable code not presentvulnerable_code_not_presentcode_not_present
Vulnerable code not in execute pathvulnerable_code_not_in_execute_pathcode_not_reachable
Vulnerable code cannot be controlled by adversaryvulnerable_code_cannot_be_controlled_by_adversaryrequires_configuration, requires_environment or requires_dependency (choose the specific reason)
Inline mitigations already existinline_mitigations_already_existprotected_by_compiler, protected_at_runtime or protected_by_mitigating_control

SPDX 3.0.1 class names are shown as defined in the model; in the JSON-LD serialisation they carry the profile prefix (for example security_VexNotAffectedVulnAssessmentRelationship).

CycloneDX protected_at_perimeter relies on a control outside the product and does not meet SBV-29 for a "not affected" statement to customers.

Standard and licence note

Based on the joint guidance 2026 Minimum Elements for a Software Bill of Materials (SBOM) led by CISA (July 2026) and the CISA Minimum Requirements for VEX (April 2023), works of the United States Government; minimum element names are used exactly as published and their meanings are paraphrased. Field names are cited from CycloneDX 1.7 (Apache License 2.0; ECMA-424), the SPDX Specification 3.0.1 (Community Specification License 1.0, with earlier portions under CC BY 3.0; attribution: SPDX project, The Linux Foundation, spdx.dev), the OASIS CSAF 2.0 standard (Copyright OASIS Open; this template comments on and assists implementation of it and reproduces no specification text) and the OpenVEX specification (CC0 1.0). The text of this template is original. Check the current official versions at cisa.gov, cyclonedx.org, spdx.dev and oasis-open.org before relying on this policy, because SPDX 3.1 and CSAF 2.1 were in progress at the time of writing. Template licence: MIT.

संबंधित टेम्पलेट