Most organisations that buy an SBOM management platform discover a year later that it stores thousands of SBOMs nobody can trust, match or query, because the selection tested whether files could be uploaded rather than whether the answers coming out were right. An SBOM management platform is the system of record that ingests software bills of materials you produce and receive, checks their quality, resolves component identities, matches them to vulnerability data, records VEX decisions and shares the results with customers, auditors and internal teams. This guide gives vendor-neutral criteria, questions and a proof of concept plan for that product class only. It is written for product security teams, vulnerability management leads, procurement and evaluation panels. If you are buying the wider supply chain stack (package firewalls, provenance verification, admission policy), start with the Software Supply Chain Security Buyer's Guide; for how to run SBOMs day to day, see SBOM operations.
Key takeaways
- Judge the answers, not the uploads. The test of a platform is whether "which of our products contain component X at version Y?" returns a correct, complete answer within minutes.
- Identity resolution decides match quality. SBOMs from different tools name the same component differently. Package URL (purl) handling, CPE fallback and hash matching determine how many real vulnerabilities you see and how many false ones you chase.
- Quality must be measured on the way in. Score every SBOM against the minimum elements you require, flag known unknowns, and reject or quarantine files that fail, rather than storing them silently.
- VEX is where risk decisions live. The platform must author, import, export and apply VEX statements with standard statuses and justifications across every affected release, not as free-text notes.
- The platform is a high-value target. It holds your full component inventory and every "not affected" decision. Weight its own access control, integrity and audit features as heavily as its features.
Define requirements
Agree these with product security, development, procurement and legal before you see a demo. A platform bought only for one use case, usually customer requests, rarely grows into the others.
- Producer, consumer or both: a software producer needs an SBOM per release, VEX publication and customer sharing. A consumer needs supplier intake, quality checks and matching against new advisories. Most organisations are both; rank which matters first.
- Volume and shape: number of products, releases a year, average components per SBOM, container images, firmware and third-party products. A platform that handles 50 products may fail at 5,000 releases with full transitive trees.
- Formats in and out: SPDX (2.3 and 3.0) and CycloneDX (currently 1.7, published 21 October 2025 and standardised as ECMA-424) in JSON, plus XML or protocol buffers if your tools emit them. List the generators your build systems already use.
- Vulnerability and advisory sources: which feeds you need matched (for example the National Vulnerability Database, the OSV database, distribution advisories and vendor CSAF advisories) and whether some sites must work offline.
- Drivers and evidence: customer contracts, sector rules, the EU Cyber Resilience Act (in force since 10 December 2024, reporting obligations from 11 September 2026, full application from 11 December 2027) and national technical guidance such as BSI TR-03183 Part 2. See the EU Cyber Resilience Act Guide.
- Adjacent tools: software composition analysis, ASPM, ticketing and the vulnerability management platform. Decide what the SBOM platform owns and what it only feeds. See SBOM vs SCA.
Size changes the answer. A small producer with a handful of products can often meet customer requests with build-time SBOM generation, a versioned store and a VEX file per release. A large manufacturer, or an operator consuming SBOMs from hundreds of suppliers, needs central policy, quality gates, supplier portals, multi-format normalisation and an API that other systems query.
| Deployment model | When it fits | Trade-offs to test |
|---|---|---|
| SaaS | Fast start, many suppliers or customers to share with, no offline sites | Your full component inventory and open findings sit with a third party; check data location, tenant isolation and export |
| Self-hosted | Regulated or classified products, air-gapped build environments | You run patching, feed mirroring, backups and scaling; ask how offline feed updates are signed |
| Module of a wider platform | You already run SCA or ASPM and mainly need storage and sharing | Check whether it ingests third-party and supplier SBOMs or only its own scan results |
Evaluation criteria
Weight criteria to your ranked use cases. An illustrative split is 20% ingestion and quality, 20% identity resolution and matching, 20% VEX and triage, 15% query, policy and reporting, 25% platform security, integration and cost. Fix the weights before responses arrive.
| Criterion | What good looks like | Weak signs |
|---|---|---|
| Ingestion and normalisation | Accepts SPDX and CycloneDX in the versions and serialisations you use, normalises them to one model without losing dependency relationships, licences or hashes, and reports what was dropped | Accepts the file but flattens the dependency graph; silently discards unsupported fields |
| Quality scoring | Scores each SBOM against a configurable baseline (for example the CISA 2025 draft minimum elements or TR-03183 Part 2 fields), flags missing hashes, versions and suppliers, records generation context and tool name, and can quarantine failures | A single opaque "quality" number; no way to set your own required fields |
| Known unknowns | Distinguishes "no further dependencies", "unknown" and "redacted", and carries that into match results so gaps are visible | Treats missing data as zero components, which reads as zero risk |
| Component identity resolution | Uses purl (ECMA-427) as the primary key, falls back to CPE and hashes, shows the confidence of each match and lets analysts correct mappings once for all products | Name and version string matching only; corrections must be repeated per SBOM |
| Vulnerability matching | Multiple sources including OSV-format data and vendor or distribution advisories, ecosystem-aware version ranges, KEV and exploitation flags, re-matching of stored SBOMs when new advisories arrive | One feed; matching only at upload time, so old releases never get new findings |
| VEX authoring and consumption | Imports and exports VEX in OpenVEX, CycloneDX and the CSAF VEX profile; uses the four statuses with machine-readable justifications; applies a statement across every release and product it names; keeps statement history | Free-text suppressions; VEX applied to one project at a time; no export |
| Versioning and history | Every SBOM version kept, bound to the artefact hash it describes, with diffs between releases and an immutable record of who changed which decision | Overwrites the SBOM in place on each upload |
| Query and impact analysis | Search by purl, version range, licence, supplier or hash across all products and releases; saved queries and an API for incident response | Search per project only; exports needed to answer a cross-product question |
| Policy and gates | Policy as code for licence, vulnerability and quality rules, evaluated in CI through a read-only token, with audit mode and expiring exceptions | Policy edited only in the console with no review or history |
| Supplier intake and customer sharing | Named supplier accounts limited to their own products, signature verification on upload, per-recipient sharing of SBOM and VEX by product and version, download logs | Shared upload links; public links with no expiry |
| Platform security | SSO with phishing-resistant MFA, separate roles for upload, triage and administration, scoped per-pipeline API keys, audit log export, signed updates and its own SBOM | One admin role; long-lived keys with full API rights |
| Exit and cost | Bulk export of SBOMs, VEX and triage history in standard formats; licence metric stated (products, components, releases or users) with prices at current and double volume | History locked in; per-SBOM pricing that punishes frequent releases |
Quality baselines you can write into the RFP
Two public baselines are useful as scoring references. The NTIA minimum elements (July 2021) set seven data fields: supplier, component name, version, other unique identifiers, dependency relationship, author of SBOM data and timestamp, plus automation support and practices. CISA's 2025 Minimum Elements, published in August 2025 as a pre-decisional draft for public comment, proposes eleven fields, adding component hash, licence, tool name and generation context (before, during or after build). It also describes practices for frequency, coverage of transitive dependencies, known unknowns, and distribution and delivery. Because the CISA text is a draft, write your own required field list and cite the draft as a reference, not as a compliance target. In Germany, BSI TR-03183 Part 2 (version 2.1.0 is current) sets formal and technical SBOM requirements and maps its fields to SPDX and CycloneDX; BSI describes the guideline as non-binding. See the SBOM Guide for the background.
| Field | NTIA 2021 | CISA 2025 draft | Why the platform should check it |
|---|---|---|---|
| Supplier or producer | Yes | Yes (software producer) | Routes questions and advisories to the right supplier |
| Component name and version | Yes | Yes | Without a version, matching produces noise or nothing |
| Unique identifiers (purl, CPE) | Yes | Yes (software identifiers) | Primary key for accurate vulnerability matching |
| Dependency relationship | Yes | Yes | Shows whether a vulnerable library is direct or deep transitive |
| Author and timestamp | Yes | Yes | Tells you who made the claim and how old it is |
| Component hash | No | Yes | Binds the record to the actual artefact and detects substitution |
| Licence | No | Yes | Licence policy and export control checks |
| Tool name and generation context | No | Yes | Explains gaps: a source-scan SBOM misses build-time additions |
VEX decisions are security decisions
OpenVEX (specification v0.2.0) defines four statuses, not_affected, affected, fixed and under_investigation, and five justifications for not_affected: component_not_present, vulnerable_code_not_present, vulnerable_code_not_in_execute_path, vulnerable_code_cannot_be_controlled_by_adversary and inline_mitigations_already_exist. A not_affected statement needs a justification or an impact statement, and an affected statement needs an action statement. CSAF 2.0, an OASIS Standard since November 2022, defines VEX as one of its five profiles, and CycloneDX supports VEX use cases too. A platform should enforce those rules at entry, so a "not affected" decision cannot be saved without its reason, and should require a second reviewer before a suppression applies across many products. See the VEX Guide and the CSAF Security Advisories Guide.
Where identity fits
The platform is fed by non-human identities: an upload key in every pipeline, feed connector keys, ticketing integrations, policy gate tokens and supplier accounts. A single organisation-wide key that can upload, triage and administer lets anyone who steals it from one pipeline replace a product's SBOM with a clean one or mark real findings not affected. Require one upload key per pipeline or product scoped to those projects, read-only gate tokens, federated or short-lived credentials where the platform supports them, and an owner for every key. See Securing the SBOM management platform itself and the CI/CD Pipeline Identity Security Guide.
Questions to ask vendors
- Which SPDX and CycloneDX versions and serialisations do you ingest and export, and what fields are lost when you convert between them? Show a round trip on our own SBOM.
- How do you resolve component identity when an SBOM has no purl? Show the match confidence and how an analyst correction propagates to every product.
- Which vulnerability sources do you match against, how do you handle ecosystem-specific version ranges, and how soon after a new advisory are stored SBOMs re-matched?
- Can we define our own required fields and quality threshold, and quarantine SBOMs that fail? How are known unknowns and redacted data shown?
- Do you import and export VEX in OpenVEX, CycloneDX and CSAF? Does one statement apply across all named products and versions, and is every change to it kept with the user, time and justification?
- Answer this live: which of our products and releases contain a given component within a version range, and how long does the query take at our volume?
- How do you verify SBOM signatures or attestations on upload, and bind each SBOM to the hash of the artefact it describes?
- Which roles exist, can upload, triage, policy and administration be separated, and can API keys be scoped per project with expiry?
- Which audit events can we export to our SIEM, and which events would show a replaced SBOM or a burst of suppressions?
- What does the licence count, what happens to cost as releases grow, and what do we receive at exit?
Red flags
- "SBOM management" that stores files but cannot answer a cross-product component query.
- Matching by name and version strings only, with no purl, CPE or hash handling and no visible match confidence.
- No re-matching of historical SBOMs when new vulnerabilities are published.
- VEX handled as free-text comments or project-local suppressions that cannot be exported.
- SBOMs overwritten in place, or triage history that administrators can edit without a trace.
- A single API key type with full rights, or supplier accounts that can see other suppliers' data.
- Claims that the product makes you compliant with the Cyber Resilience Act; regulations place obligations on manufacturers, not on tools.
Proof of concept
- Scope and score first: pick three products (one container image, one application with deep transitive dependencies, one third-party product with a supplier SBOM), agree weights and pass criteria, and name an analyst who will do the triage.
- Prepare a messy corpus: include SBOMs in both SPDX and CycloneDX, from different generators, one with missing versions and hashes, one with purls and one without, and two releases of the same product.
- Connect with least privilege: create a dedicated upload key per trial pipeline, scoped to trial projects, and record every permission each platform asks for.
- Test ingestion and quality: upload the corpus and record what each platform accepts, flags, quarantines and silently drops. Compare component counts with the source files.
- Test matching: seed a component with a known, published vulnerability, then measure true matches, false positives from name collisions and misses. Add a newly published advisory during the trial and time the re-match.
- Test VEX: record one
not_affecteddecision with a justification across two releases, import a supplier VEX document, export both, and confirm the history shows who changed what. - Test integrity signals: upload a replacement SBOM with fewer components from an unexpected key and check whether an alert or audit event appears.
- Test exit and roll back: export all SBOMs, VEX and triage history, revoke every trial key and integration, confirm loss of access and obtain written confirmation that trial data is deleted.
Keep measuring after go-live: share of releases with a stored SBOM that passes your quality baseline, share of components resolved to a purl, median time from a new advisory to a cross-product impact answer, share of not_affected decisions with a standard justification and second review, and age of open policy exceptions. For a ready-made supplier clause set, use the Supplier SBOM Request Template.
Standards and references
- CISA: 2025 Minimum Elements for a Software Bill of Materials (draft for public comment)
- NTIA: The Minimum Elements for a Software Bill of Materials (SBOM)
- OWASP CycloneDX: Specification Overview
- SPDX: Specifications
- OpenVEX: OpenVEX Specification
- OASIS: Common Security Advisory Framework Version 2.0
- Package URL: purl specification
- OpenSSF: Open Source Vulnerability (OSV) Schema
- BSI: Technical Guideline TR-03183 Cyber Resilience Requirements for Manufacturers and Products
- European Commission: Cyber Resilience Act
How NHI Mgmt Group can help
We provide independent requirements, RFP and evaluation support. Browse vendors in our products directory or contact us.
Related NHI Mgmt Group resources: SBOM Guide · VEX Guide · Software Supply Chain Security Guide · Provenance Attestation vs SBOM · Software Supply Chain Security Buyer's Guide