How to validate an HBOM: a step-by-step procedure
A repeatable procedure for checking a supplier or operational HBOM, from schema validation to reconciliation with the devices it describes.
- Automate schema validation with the CycloneDX CLI and fail the pipeline on errors.
- Check CERT-In Table 11 fields per component, not per file.
- Reconcile the HBOM with Redfish, fwupd, lshw and dmidecode output from real devices.
- Verify firmware hashes and record every result as a dated version.
Before you start
You need the HBOM under review, a field policy (for example the CERT-In Table 11 elements [1]), access to at least one representative device, and a place to record results. For the concepts behind each step, see HBOM validation.
Step 1: validate the schema
Run the CycloneDX CLI against the file, specifying the format and version the supplier claims:
cyclonedx validate --input-file hbom.json --input-format json --input-version v1_6 --fail-on-errors
The --fail-on-errors flag returns a non-zero exit code on validation errors, so the check can gate an intake pipeline [2]. For SPDX files, use an SPDX validator for the declared version. Reject files that fail; nothing else is meaningful until this passes.
Step 2: check component types and structure
Confirm that physical parts use the device type and firmware uses firmware, and that each device with firmware includes a component for the hardware itself, as the CycloneDX specification advises [3]. Check that nesting reaches the depth agreed in the contract.
Step 3: check field completeness
For each component, test for every element in your policy: name, version, supplier, licence (on firmware), dependencies, vulnerabilities, patch status, release date, EOL date, criticality, hashes (on firmware) and unique identifier [1]. Output a per-component gap list. A simple script over the JSON is enough to start; what matters is that gaps are reported individually and tracked to closure.
Step 4: reconcile with the device
Collect observations from a representative unit and compare:
- Out of band: query
/redfish/v1/UpdateService/FirmwareInventoryon the BMC; entries include version and manufacturer for platform firmware [4]. - Firmware on Linux: run
fwupdmgr get-devicesto list devices and firmware that fwupd detects [5]. - Hardware configuration: run
lshw -xmlfor memory, mainboard, CPU and firmware details [6]. - SMBIOS data: run
dmidecode -t systemanddmidecode -t biosfor manufacturer, model, serial and BIOS version [7].
Classify each difference as expected (documented update), benign (naming) or unexplained. Remember that dmidecode reports what the BIOS declares and is not proof on its own [7].
Step 5: verify firmware integrity
Compare firmware hashes in the HBOM with the vendor’s published values and with images in your repository. Where the platform supports it, confirm signature verification at update. For critical platforms, run CHIPSEC in a lab to assess firmware and platform configuration; its maintainers note it is intended for security testing [8]. This supports the detection principle of NIST SP 800-193 [9].
Step 6: check identifiers and vulnerabilities
Confirm that unique identifiers resolve: CPE names should use the hardware part value where appropriate [10], and part numbers should match supplier catalogues. Then run the HBOM through vulnerability correlation against vendor advisories and CISA’s KEV catalogue [11], and confirm the supplier’s declared vulnerabilities and patch status agree.
Step 7: check provenance declarations
For critical components, compare declared manufacturers and locations with your approved-source and restricted-entity lists. Where contracts require authorised-source purchasing, check the supplier’s declarations against it.
Step 8: record and diff
Store the validated HBOM as a dated version with the validation report. On the next delivery or collection, compare with cyclonedx diff hbom-old.json hbom-new.json --component-versions to list added, removed or modified component versions [2]. Unexplained changes go back to step 4.
Checklist
| Check | Pass condition |
|---|---|
| Schema | No validation errors |
| Structure | Device and firmware types used; agreed depth reached |
| Completeness | All policy fields present per component, or exceptions recorded |
| Consistency | No unexplained differences from device observations |
| Integrity | Firmware hashes match vendor values |
| Identifiers | CPE and part numbers resolve |
| Record | Version and report stored with timestamp |
How IntelliXBOM helps
IntelliXBOM automates the document-level steps: it validates CycloneDX and SPDX HBOMs against required-field policies, reports gaps per component, keeps each version with diffs and correlates components with vulnerabilities and known-exploited lists. Results are stored as timestamped evidence mapped to framework controls.
Frequently asked questions
What tool validates a CycloneDX HBOM?
The open-source CycloneDX CLI has a validate command that checks a BOM against the specification for a given version and can return a non-zero exit code on errors, which suits automated intake pipelines.
How do I check an HBOM against real hardware?
Collect observations from a representative device using Redfish FirmwareInventory, fwupdmgr get-devices, lshw and dmidecode, then compare models, serials and firmware versions with the HBOM and investigate unexplained differences.
How often should HBOMs be validated?
Validate supplier HBOMs on every delivery and operational HBOMs after every change, such as a firmware update or part replacement, plus periodic re-validation to catch vulnerability and EOL changes.
Sources
- Technical Guidelines on SBOM, QBOM & CBOM, AIBOM and HBOM, Version 2.0 (9 July 2025)CERT-In, Government of Indiawww.cert-in.org.in/PDF/TechnicalGuidelines-on-SBOM,QBOM&CBOM,AIBOM_and_HBOM_ver2.0.pdf
- CycloneDX CLIOWASP CycloneDX (GitHub)github.com/CycloneDX/cyclonedx-cli
- CycloneDX v1.6 JSON ReferenceOWASP CycloneDXcyclonedx.org/docs/1.6/json/
- DSP2062, Redfish Firmware Update White PaperDMTFwww.dmtf.org/sites/default/files/standards/documents/DSP2062_1.0.0.pdf
- fwupd, firmware update daemonfwupd project (GitHub)github.com/fwupd/fwupd
- lshw, Hardware Listerlshw project (GitHub)github.com/lyonel/lshw
- Dmidecodedmidecode project (Savannah)www.nongnu.org/dmidecode/
- CHIPSEC: Platform Security Assessment FrameworkCHIPSEC project (GitHub)github.com/chipsec/chipsec
- SP 800-193, Platform Firmware Resiliency Guidelines (May 2018)NISTcsrc.nist.gov/pubs/sp/800/193/final
- NIST IR 7695, Common Platform Enumeration: Naming Specification Version 2.3NISTcsrc.nist.gov/pubs/ir/7695/final
- Known Exploited Vulnerabilities CatalogCISAwww.cisa.gov/known-exploited-vulnerabilities-catalog
Sources checked in September 2026. Regulations and guidance change; always refer to the issuing body’s current publication. This content is for general information and is not legal advice.