Skip to content

SBOM & CBOM Guide

EcosystemLockfilePURL Prefix
RustCargo.lockpkg:cargo/
npmpackage-lock.jsonpkg:npm/
npm (Yarn)yarn.lockpkg:npm/
Python (Poetry)poetry.lockpkg:pypi/
Python (Pipenv)Pipfile.lockpkg:pypi/
Gogo.sumpkg:golang/
PHPcomposer.lockpkg:composer/
.NETpackages.lock.jsonpkg:nuget/
RubyGemfile.lockpkg:gem/

CycloneDX 1.6 JSON. Each component includes:

{
"type": "library",
"name": "serde",
"version": "1.0.200",
"purl": "pkg:cargo/serde@1.0.200",
"licenses": [{ "license": { "id": "MIT OR Apache-2.0" } }],
"hashes": [{ "alg": "SHA-256", "content": "abc..." }],
"properties": [{ "name": "ecosystem", "value": "cargo" }]
}

Compare two SBOMs to track changes between versions:

SbomDiff {
added: [Component] — New dependencies
removed: [Component] — Removed dependencies
updated: [{ name, ecosystem, old_version, new_version }]
}

When enabled, the scanner queries OSV.dev for known CVEs:

Terminal window
fleet scan --path . --sbom # Enrichment via pipeline config

Results include severity classification:

CVSS ScoreSeverity
>= 9.0Critical
7.0 - 8.9High
4.0 - 6.9Medium
< 4.0Low

30 crypto rules across 6 categories:

CategoryExamples
HashMD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3, BLAKE2, BLAKE3
Symmetric cipherAES-128, AES-256, AES-GCM, ChaCha20-Poly1305, DES, 3DES, RC4
AsymmetricRSA, ECDSA, Ed25519, X25519
Key derivationArgon2, bcrypt, scrypt, PBKDF2
ProtocolTLS 1.3, TLS 1.2, TLS 1.0/1.1, SSLv2/v3
PRNG(detected via crypto detector, not CBOM)

Each detected primitive is classified:

StatusMeaningAction
ApprovedMeets current standardsNone required
DeprecatedWeakened but not immediately brokenMigration recommended
ProhibitedKnown broken, must not be usedRemediation required
AlgorithmWhyReplace With
MD5Collision attacks since 2004SHA-256+
DES56-bit key, trivially brute-forcedAES-128+
RC4Multiple biases, broken in TLSAES-GCM or ChaCha20
SSLv2/v3Fundamentally broken (POODLE, etc.)TLS 1.2+
AlgorithmWhyReplace With
SHA-1Collision attacks demonstrated (SHAttered)SHA-256+
3DESMeet-in-the-middle, Sweet32 attackAES-128+
TLS 1.0/1.1Known weaknesses, deprecated by IETFTLS 1.2+

CycloneDX 1.6 with type: cryptographic-asset:

{
"bomFormat": "CycloneDX",
"specVersion": "1.6",
"components": [
{
"type": "cryptographic-asset",
"name": "SHA-256",
"properties": [
{ "name": "category", "value": "hash" },
{ "name": "compliance", "value": "approved" },
{ "name": "key-length", "value": "256" },
{ "name": "usage-context", "value": "hashing" },
{ "name": "source-file", "value": "src/auth.rs" },
{ "name": "source-line", "value": "42" }
]
}
]
}
{
"total": 314,
"approved": 301,
"deprecated": 6,
"prohibited": 7,
"by_category": {
"hash": 120,
"symmetric-cipher": 45,
"asymmetric-algorithm": 30,
"key-derivation": 15,
"protocol": 20
}
}

The scanner infers usage context from surrounding code:

ContextDetected By
password-hashingNear password, passwd keywords
transport-securityNear tls, ssl, https keywords
digital-signatureNear sign, verify keywords
encryptionNear encrypt, decrypt, cipher keywords
hashingNear hash, digest, hmac, sha keywords
key-managementNear key, kdf, derive keywords
authenticationNear token, jwt keywords
generalNo specific context detected

SBOM and CBOM address multiple CRA Annex I requirements:

Requirement AreaSBOM/CBOM Role
I.2(a) — No known exploitable vulnerabilitiesSBOM + vulnerability enrichment
I.3(a) — Protect confidentialityCBOM verifies crypto strength
I.3(d) — Protect stored dataCBOM checks encryption at rest
II.1 — Identify vulnerabilitiesSBOM enables CVE tracking
II.3 — Effective remediationSBOM diff tracks dependency updates
Section 2(3) — Secure updatesSBOM tracks update dependencies