Guide · ML-BOM
What Is an ML-BOM? Machine Learning Bill of Materials Explained
The canonical guide to ML-BOMs: what they contain, the CycloneDX and SPDX standards behind them, and how they become verifiable audit evidence.
A machine learning bill of materials (ML-BOM) is a structured, machine-readable inventory of every component that goes into an AI model: the model's identity and version, its architecture family, the datasets it was trained and evaluated on, its software dependencies, licenses, evaluation results, and the cryptographic signatures that prove none of it has been altered. Just as a software bill of materials (SBOM) lists the packages inside an application, an ML-BOM documents the full supply chain of a machine learning system — so security teams, auditors, and regulators can see exactly what a model is made of without needing access to the model itself.
The term AI-BOM is often used interchangeably with ML-BOM. Both describe the same artifact class: a transparency document for AI systems, standardized primarily through CycloneDX (which added ML-BOM support in version 1.5) and the SPDX AI profile. This guide covers what an ML-BOM contains, how the two standards compare, how ML-BOMs differ from SBOMs, and how they are generated and signed in practice.
Why do ML-BOMs exist?
ML-BOMs emerged because three pressures converged on AI teams at roughly the same time: supply chain risk, regulation, and management-system standards.
AI supply chain risk
Modern models are rarely built from scratch. They are fine-tuned from pretrained checkpoints, trained on third-party or scraped datasets, and assembled from open-source frameworks and libraries. Every one of those inputs is an attack surface. MITRE ATLAS, the adversarial-threat knowledge base for AI systems, catalogs techniques that target exactly this supply chain — poisoned training data, backdoored pretrained models, and compromised ML dependencies. Without an inventory of what went into a model, you cannot answer the most basic incident-response question: are we affected? When a dataset is found to be poisoned or a model repository is compromised, an ML-BOM lets you query your entire model estate for exposure in minutes rather than weeks. (For how ATLAS threat categories map to management controls, see our ISO 42001 to MITRE ATLAS crosswalk.)
EU AI Act transparency obligations
The EU AI Act entered into force in August 2024, with obligations phasing in over the following years. Providers of high-risk AI systems must maintain technical documentation describing how the system was developed, what data it was trained on, and how it performs — and keep that documentation current across the system's lifecycle. The Act does not name a file format, but a machine-readable, versioned ML-BOM is the most defensible way to demonstrate that this documentation exists, is complete, and has not been edited after the fact.
ISO/IEC 42001 documentation duties
ISO/IEC 42001:2023, published in December 2023, is the first certifiable management system standard for AI. Its Annex A controls cover themes such as AI system documentation, data provenance and quality, impact assessment, and supplier management. Auditors assessing an AI management system need evidence that the organization actually knows what its models are made of. An ML-BOM is that evidence in its most concrete form. Our ISO/IEC 42001 explainer walks through the standard's structure in detail.
What does an ML-BOM contain?
A complete ML-BOM records seven categories of information. The exact field names differ between CycloneDX and SPDX, but the substance is the same:
| Category | What it records | Why auditors care |
|---|---|---|
| Model identity | Name, version, unique identifier (bom-ref / SPDX ID), hashes of the model artifact | Ties every claim in the document to one specific, verifiable model build |
| Architecture family | Model type and task — e.g. transformer, gradient-boosted trees, binary classification | Determines applicable threat classes and evaluation expectations |
| Training-data lineage | Dataset names, versions, sources, classifications, and sensitivity metadata — not the data itself | Answers provenance questions under the EU AI Act and ISO 42001 without exposing the data |
| Dependencies | Frameworks, libraries, base models, and their versions | Enables vulnerability and supply chain exposure queries across the model estate |
| Licenses | License identifiers for models, datasets, and dependencies | Surfaces restrictions on commercial use, redistribution, and derivative models |
| Evaluation results | Performance metrics, test slices, robustness and bias evaluations | Documents that claimed performance was actually measured, and on what |
| Signatures | Cryptographic signatures and timestamps over the document | Makes the ML-BOM tamper-evident — the difference between a claim and evidence |
A crucial point: an ML-BOM contains metadata about these components, not the components themselves. Model weights, training records, and source code never need to appear in the document. That is what makes ML-BOMs shareable with auditors, customers, and regulators without leaking intellectual property — and it is the principle behind metadata-only compliance architectures.
CycloneDX vs SPDX: which ML-BOM standard should you use?
Two open standards dominate the space. CycloneDX, an OWASP flagship project, added first-class ML-BOM support in version 1.5 (2023) with a machine-learning-model component type, a data component type for datasets, and an embedded model card structure. SPDX, a Linux Foundation project and ISO-published SBOM standard, introduced an AI profile and a dataset profile in SPDX 3.0 (2024).
| Dimension | CycloneDX ML-BOM (v1.5+) | SPDX AI Profile (3.0) |
|---|---|---|
| Steward | OWASP | Linux Foundation |
| ML support since | v1.5 (2023) | SPDX 3.0 (2024) |
| Model representation | machine-learning-model component with embedded modelCard | AI package element with dedicated AI profile fields |
| Dataset representation | data component type with classification and sensitivity fields | Dataset profile elements linked to the AI package |
| Primary heritage | Security and supply chain tooling | License and IP compliance |
| Evaluation metrics | Yes — quantitative analysis in the model card | Partial — captured via profile properties |
| Typical consumers | Security teams, vulnerability tooling, GRC platforms | Legal, OSPO, and license-compliance tooling |
| Serialization | JSON, XML, Protocol Buffers | JSON-LD |
The pragmatic answer for most organizations is both. The two formats are complementary — CycloneDX is stronger for security-driven workflows, SPDX for license governance — and because both are generated from the same underlying metadata, tooling can emit the two in parallel. SecureGRC's ML-BOM generation aligns with both CycloneDX and SPDX for exactly this reason.
What does a real CycloneDX ML-BOM look like?
Below is a realistic, minimal CycloneDX 1.5 ML-BOM for a fraud-detection classifier. It records the model, its training dataset (as metadata only), and one library dependency with its license:
{
"bomFormat": "CycloneDX",
"specVersion": "1.5",
"serialNumber": "urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79",
"version": 1,
"metadata": {
"timestamp": "2026-07-17T09:00:00Z",
"component": {
"type": "machine-learning-model",
"name": "fraud-detection-classifier",
"version": "2.4.1"
}
},
"components": [
{
"type": "machine-learning-model",
"bom-ref": "model-fraud-detection-2.4.1",
"name": "fraud-detection-classifier",
"version": "2.4.1",
"modelCard": {
"modelParameters": {
"task": "binary-classification",
"architectureFamily": "gradient-boosted-trees",
"datasets": [
{ "ref": "dataset-transactions-2025q4" }
]
},
"quantitativeAnalysis": {
"performanceMetrics": [
{ "type": "AUC-ROC", "value": "0.94", "slice": "holdout-test" }
]
}
}
},
{
"type": "data",
"bom-ref": "dataset-transactions-2025q4",
"name": "transactions-2025q4",
"data": [
{
"type": "dataset",
"classification": "internal",
"sensitiveData": ["pseudonymized transaction records"]
}
]
},
{
"type": "library",
"name": "xgboost",
"version": "2.0.3",
"licenses": [
{ "license": { "id": "Apache-2.0" } }
]
}
]
}
Notice what is absent: no weights, no training rows, no feature code. The dataset entry describes classification and sensitivity, and the model entry describes architecture and measured performance. Everything a reviewer needs; nothing an attacker or competitor could exploit.
How is an ML-BOM different from an SBOM?
An ML-BOM extends the SBOM idea, but the two documents answer different questions and change at different rhythms. An SBOM asks "what packages are in this build?"; an ML-BOM asks "what model is this, what shaped its behavior, and can you prove it?"
| Aspect | SBOM | ML-BOM |
|---|---|---|
| Subject | A software application or container | A machine learning model or AI system |
| Core components | Packages, libraries, container layers | Models, datasets, pipelines — plus their software dependencies |
| Data lineage | Not applicable | Central — dataset versions, sources, sensitivity |
| Behavioral evidence | None — behavior is fully code-defined | Evaluation metrics, test slices, bias and robustness results |
| Change trigger | New build or dependency bump | Retraining, fine-tuning, new data version, drift remediation |
| Dominant risks | Known CVEs, license conflicts | Data poisoning, model backdoors, adversarial manipulation (per MITRE ATLAS) |
| Key standards | CycloneDX, SPDX | CycloneDX v1.5+ ML-BOM, SPDX 3.0 AI profile |
The practical consequence of the "change trigger" row is easy to underestimate. Software rebuilds when engineers ship; models retrain on schedules, on drift alerts, and on new data drops. An ML-BOM maintained by hand is therefore stale almost immediately — which leads directly to the generation question.
How are ML-BOMs generated?
There are two approaches, and the gap between them is where most AI transparency programs fail.
Manual assembly
Teams document models in spreadsheets, wikis, or hand-written model cards, then transcribe the results into CycloneDX or SPDX. This works for a demo and fails in production: fields go stale after the first retrain, human transcription introduces errors, and nothing links the document back to the actual model artifact. A manually assembled ML-BOM is a statement of intent, not evidence.
Automated extraction
The sustainable approach is to extract metadata programmatically — from training pipelines, model registries, experiment trackers, and dependency manifests — and generate the ML-BOM as a build artifact, versioned and regenerated on every model change. Automation keeps the document synchronized with reality and makes every field traceable to a source.
This is the approach SecureGRC takes, with one architectural constraint that matters for IP-sensitive teams: the platform is metadata-only. Model weights, training data, and proprietary code never enter SecureGRC; the analysis pipeline operates exclusively on extracted metadata, as described in our metadata-only compliance deep dive. That metadata then flows through the TCCE engine — threat assessment, control mapping, compliance evaluation, and evidence linking as a sequential, independently auditable pipeline — so the generated ML-BOM arrives already connected to MITRE ATLAS threat profiles and ISO/IEC 42001 control gaps, and browsable in a dedicated ML-BOM Explorer. SecureGRC is a purpose-built, early-stage platform opening early access in 2026 — a deliberate contrast to retrofitting AI inventories onto broad GRC suites, as our SecureGRC vs OneTrust comparison discusses.
Key principle
An ML-BOM should be generated from the system of record, never typed into one. If a human can edit a field without the underlying model changing, the document is an inventory. If every field is extracted and signed, it is evidence.
Why sign an ML-BOM with post-quantum signatures?
An unsigned ML-BOM is a claim; a signed one is audit evidence. A cryptographic signature over the document proves two things: integrity (no field was altered after generation) and origin (it was produced by the stated system at the stated time). For regulators and auditors, that distinction is the difference between "trust our spreadsheet" and independently verifiable proof.
The quantum dimension comes from timescales. Compliance evidence for AI systems must remain verifiable for years — through audits, certifications, incidents, and litigation. Classical signature schemes based on RSA and elliptic curves are exactly what a future cryptographically relevant quantum computer would break, meaning evidence signed today with classical algorithms could become repudiable within its own retention window. NIST addressed this by standardizing post-quantum algorithms, including FIPS 204 (ML-DSA, the standardized form of CRYSTALS-Dilithium), finalized in August 2024.
SecureGRC applies this end to end: every generated artifact — ML-BOMs included — is signed with CRYSTALS-Dilithium, hashed with SHA-3, and anchored in a Merkle tree, forming a cryptographically verified audit trail. Verification requires only public keys, so an auditor or regulator can independently confirm that an ML-BOM is authentic and unmodified without any access to SecureGRC's systems — or yours. The full rationale is covered in our quantum-safe compliance guide.
Quantum-safe by default
A signed, Merkle-anchored ML-BOM is tamper-evident in both directions: no one can alter a historical document without breaking the tree, and no one can deny having produced it. With post-quantum signatures, that property is designed to survive the arrival of quantum computing.
Frequently asked questions
Quick answers to the ML-BOM questions we hear most. More general questions live on the SecureGRC FAQ.
Is an ML-BOM the same as an AI-BOM?
The terms are used interchangeably in practice. AI-BOM is sometimes used as the broader umbrella covering any AI system, while ML-BOM refers specifically to machine learning models and their training pipelines. Both describe the same idea: a structured inventory of an AI system's components, data lineage, dependencies, and licenses. CycloneDX and SPDX, the two main standards, support both usages.
Does the EU AI Act require an ML-BOM?
Not by name. The EU AI Act, which entered into force in August 2024 with staged obligations, requires providers of high-risk AI systems to maintain detailed technical documentation covering the system's development, training data, and performance. An ML-BOM is one of the most practical ways to produce and maintain that documentation in a machine-readable, verifiable form, but the regulation does not mandate a specific format.
Can I generate an ML-BOM without sharing my model weights?
Yes. An ML-BOM describes a model's components and lineage — it does not include weights, training data, or source code. Metadata-only platforms such as SecureGRC generate ML-BOMs entirely from extracted metadata, so proprietary IP never leaves your environment. The resulting document contains identifiers, hashes, license references, and evaluation summaries rather than the assets themselves.
Should I use CycloneDX or SPDX for my ML-BOM?
CycloneDX has supported ML-BOMs since version 1.5 through its machine-learning-model component type and embedded model card object, and is generally the more mature option for security-focused workflows. SPDX 3.0 added an AI profile and remains strongest for license compliance. Many organizations emit both from the same metadata, since the formats are complementary rather than competing.
How often should an ML-BOM be updated?
Every time the model changes: retraining, fine-tuning, a new dataset version, a dependency upgrade, or a change in deployment configuration. Because models change more often than traditional software, automated generation from pipeline metadata is the only approach that keeps an ML-BOM accurate over time. Each version should be signed and timestamped so auditors can reconstruct the model's history.
What is the difference between an ML-BOM and a model card?
A model card is a human-readable summary of a model's intended use, performance, and limitations, written for people. An ML-BOM is a machine-readable inventory built for tooling, automation, and audit. They overlap — CycloneDX embeds a modelCard object inside its ML-BOM format — but an ML-BOM adds dependency graphs, license data, hashes, and signatures that a standalone model card does not carry.