FOSS Wiki StationFOSS Wiki Station
SBOM & Tooling

CycloneDX

The OWASP-origin, security-first BOM standard now published as ECMA-424 — covers SBOM, HBOM, SaaSBOM, CBOM, ML-BOM, VEX.

CycloneDX Wiki

A full-stack Bill of Materials standard: lightweight, security-oriented, and now an Ecma international standard (ECMA-424). It describes not just software components, but services, hardware, cryptographic assets, AI models, and compliance evidence.

Stable release1.7.2 · 2026-09-17
Major version1.7 · 2025-10-21
Standard statusECMA-424 2nd ed.
Ecma adoption2025-12-11

Overview

CycloneDX started in 2017 inside the OWASP community, driven by the observation that vulnerability management — not licence compliance — was the problem SBOMs actually needed to solve. That origin shows in the design: a CycloneDX document is a plain, nested, developer-readable JSON structure with first-class support for vulnerabilities, VEX, service topology, and evidence.

The project is now stewarded jointly by the OWASP Foundation and Ecma International TC54. CycloneDX 1.6 was adopted as ECMA-424 1st edition in June 2024, and CycloneDX 1.7 as ECMA-424 2nd edition on 11 December 2025 — putting it on the same procedural footing as JavaScript (ECMA-262) and JSON (ECMA-404), with ISO/IEC fast-track as the next step. For regulated buyers, that edition number is what will appear in contracts and EU Cyber Resilience Act conformity packages.

Version history

VersionReleasedHighlights
1.22020-05-26Broad adoption baseline; component pedigree.
1.32021-05-04Compositions, evidence, external references; the version most procurement rules were written against.
1.42022-01-12Vulnerabilities, VEX, formulations, declarations. Still the safest compatibility target.
1.52023-06-26Machine-learning model cards, maturity, provenance.
1.62024-04-09CBOM (cryptographic BOM, contributed by IBM Research) and CDXA (CycloneDX Attestations). Became ECMA-424 1st edition.
1.72025-10-21Citations, TLP distribution constraints, patent metadata, expanded CBOM with algorithmFamily, broader formulations, version ranges for external components, multiple SPDX license expressions, Streebog hashing.
1.7.12026-06-02Schema alignment and bug fixes (ModelCard properties, protobuf fields). Back-ported to 1.6.1/1.6.2.
1.7.22026-09-17Latest. Maintenance: XML schema alignment for related cryptographic assets.

Good news for operations: 1.7 is fully backward compatible with 1.4 through 1.6. Older consumers simply ignore the new blocks under permissive schema parsing. The only breaking-ish changes are deprecations — for example the loose 1.6 curve string gives way to a typed algorithmFamily.curve enum, and component author gives way to authors/manufacturer.

Document anatomy

A CycloneDX BOM is a single object with a small, predictable top-level shape. Every significant node can carry a bom-ref — a document-local identifier that other nodes point at.

FieldPurpose
bomFormatAlways CycloneDX. Lets tools sniff the format.
specVersionThe schema version, for example 1.7.
serialNumberURN UUID uniquely identifying this BOM instance (for example urn:uuid:…).
versionYour revision counter for this BOM; incremented on each re-publish.
metadataWho and what produced the BOM: timestamp, tools, authors, supplier/manufacturer, and the primary component being described.
componentsThe inventory. Types include application, framework, library, container, platform, operating-system, device, firmware, file, machine-learning-model, data, and cryptographic-asset. Components nest to model assemblies.
servicesEndpoints and SaaS dependencies — the basis of a SaaSBOM.
dependenciesThe dependency graph, expressed as bom-ref pairs. This is what makes the BOM a graph rather than a flat list.
compositionsCompleteness assertions: which component sets are complete, partial, or incomplete, and how they aggregate. Critical for honest SBOMs.
vulnerabilitiesKnown vulnerabilities plus the author's analysis — the VEX payload.
formulationsRecipes/workflows: inputs, outputs, steps, and properties describing how something was built or assembled.
declarationsConformance and assurance claims.
externalReferencesDistribution, documentation, VCS, BOM links, and RFC 9116 security.txt.
properties / annotationsKey–value extension points and timestamped, attributable notes.
citations (1.7)Provenance for individual metadata claims: which tool or human asserted what, when.
distribution (1.7)Sharing constraints, including a Traffic Light Protocol (TLP) classification carried inside the BOM.
definitionsReusable standards, requirements, and evidence definitions referenced elsewhere.

Identity outward is handled by purl (package URL), cpe, and swid on each component — the same identifiers SPDX uses, which is what makes cross-format conversion feasible.

BOM flavours

CycloneDX deliberately uses one schema for many kinds of bill of materials:

FlavourDescribes
SBOMSoftware components: libraries, frameworks, applications, containers.
HBOMHardware: devices, firmware, and the components they contain.
SaaSBOMServices and third-party SaaS dependencies, including endpoints, data flows, and providers.
ML-BOM / AI-BOMAI and ML models via model cards: training data, hyperparameters, considerations, and 1.6+ environmental/energy impact.
CBOMCryptographic assets — algorithms, keys, certificates, protocols — the inventory you need for post-quantum migration planning.
VEXA BOM whose payload is vulnerability exploitability statements rather than an inventory.
OBOMOperational/deployed topology, extended by the broader formulations work in 1.7.
CDXAAttestations: signed claims, evidence, and compliance documentation as a machine-readable artefact.

What's new in 1.7

  1. citations — a root-level array declaring the origin of each piece of metadata: a build system, an SBOM generator, an artefact repository, or a human reviewer, with a timestamp and provenance link. It lets a consumer attribute a disagreement between two SBOMs to a specific source instead of treating the document as one undifferentiated claim.
  2. Expanded CBOM — a normative algorithmFamily object (primitive type, security strength, NIST status, mode-of-operation requirements) and a closed enumeration of elliptic curves (NIST P-curves, Brainpool, Curve25519/X25519, Curve448, secp curves). The loose 1.6 curve string is deprecated.
  3. Patent metadata — components can declare patents or patent families that read on them.
  4. Broader formulations — the construct that described how a component was built can now describe how any referenceable object came together: services, declarations, even the BOM itself.
  5. Distribution constraints — a distribution block carrying a TLP classification (CLEAR, GREEN, AMBER, AMBER+STRICT, RED) plus a free-text constraint, so downstream sharing rules travel with the document.

Also in 1.7: external components with version ranges, multiple SPDX license expressions per component, and Streebog hash support.

On TLP enforcement: the constraint is a declared policy, not a cryptographic control. It is advisory in the same way robots.txt is — a 1.7-aware repository is expected to honour it when serving the BOM, but nothing stops a careless consumer from republishing.

Vulnerabilities & VEX

A vulnerabilities entry carries the identifier (CVE, GHSA…), affected component bom-refs, ratings (CVSS, OWASP Risk, and others), and — the important part — an analysis block with a state:

  • resolved / resolved_with_pedigree — fixed, or fixed in a later version.
  • exploitable — confirmed reachable and exploitable.
  • in_triage — not yet assessed.
  • false_positive — reported but not actually present.
  • not_affected — present but not exploitable, with a justification code.

This is what turns a raw scanner dump into something an operations team can act on: the SBOM says what is there, the VEX says whether it matters.

Attestations (CDXA)

Introduced in 1.6, CycloneDX Attestations let an organisation publish machine-readable claims, the evidence supporting them, and signatures over both — "compliance as code" instead of PDFs and spreadsheets. An attestation document references requirements, maps evidence to them, and can be signed so a consumer can verify who asserted what.

Serialization formats

  • JSON — the primary format; schema published at cyclonedx.org/schema/bom-1.7.schema.json.
  • XML — maintained in parallel with the JSON schema (1.7.2 fixed an XML schema alignment issue).
  • Protobuf — supported for high-volume, streaming, and low-footprint use cases.

The project also publishes official libraries for Java, .NET, Go, Python, JavaScript, Rust, and PHP, plus build plugins for Maven and Gradle — which is why "just emit a CycloneDX BOM" is usually a one-line change in most ecosystems.

Example CycloneDX document

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.7",
  "serialNumber": "urn:uuid:9f3e5b7a-2c4d-4f8e-9a1b-6c8d0e2f4a6b",
  "version": 1,
  "metadata": {
    "timestamp": "2026-09-16T09:12:00Z",
    "component": {
      "type": "application",
      "bom-ref": "acme-portal",
      "name": "acme-portal",
      "version": "1.2.0"
    },
    "tools": [{ "vendor": "anchore", "name": "syft" }],
    "authors": [{ "name": "Acme Corp" }]
  },
  "components": [
    {
      "type": "library",
      "bom-ref": "pkg:npm/express@4.21.1",
      "name": "express",
      "version": "4.21.1",
      "purl": "pkg:npm/express@4.21.1",
      "licenses": [{ "expression": "MIT" }]
    }
  ],
  "dependencies": [
    { "ref": "acme-portal", "dependsOn": ["pkg:npm/express@4.21.1"] }
  ],
  "citations": [
    {
      "bom-ref": "cit-syft-scan",
      "source": "tool:syft",
      "appliesTo": ["pkg:npm/express@4.21.1"]
    }
  ],
  "distribution": {
    "tlp": "AMBER",
    "constraints": "do-not-redistribute-outside-organization"
  }
}

Strengths and trade-offs

Strengths

  • Broadest tooling and library ecosystem; official plugins for most build systems.
  • Security-first: vulnerabilities, VEX, services, crypto inventory, and attestations are all in the core schema.
  • Approachable — a developer can read and hand-edit a BOM in minutes.
  • Strong backward compatibility across 1.4 → 1.7.
  • International standard status via ECMA-424, with ISO fast-track in progress.

Trade-offs

  • Document-centric rather than graph-centric: cross-document linking is weaker than SPDX 3's IRI model.
  • Deeply nested documents get large; the schema is broad, so implementations vary in what they actually support.
  • Licensing is intentionally simpler than SPDX's ExpandedLicensing profile — it borrows SPDX IDs rather than modelling licences in depth.
  • Optional-but-recommended features (compositions, pedigree, citations) are frequently left empty, which quietly reduces the value of the BOM.

Where to go next

Compare with SPDX → · Generators and converters → · Regulatory drivers →


Sources: cyclonedx.org, the CycloneDX specification repository release history, and ECMA-424 / Ecma TC54 announcements (retrieved September 2026).

On this page