Skip to content

[REVIEW] sbom-analysis: add current format and artifact-bound evidence #196

@mlodygbelmondo

Description

@mlodygbelmondo

Skill Being Reviewed

Skill name: sbom-analysis
Skill path: skills/vuln-management/sbom-analysis/

False Positive Analysis

Benign SBOM that can be under-rated as unsupported or incomplete:

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.6",
  "metadata": {
    "component": { "type": "application", "name": "payments-api", "version": "2026.6.1" }
  },
  "components": [],
  "services": [],
  "dependencies": [],
  "compositions": [],
  "declarations": {}
}

Why this is a false positive risk:

The skill frontmatter and process are pinned to CycloneDX 1.5 and SPDX 2.3. CycloneDX 1.6 has been released and adds supply-chain-relevant structures such as expanded BOM capabilities beyond a classic software component list. A valid CycloneDX 1.6 SBOM should not be treated as "other" or less analyzable only because the skill's version table stops at 1.5.

Coverage Gaps

Missed variant 1: Current SBOM formats are not recognized as first-class review targets

Accepted in skill: CycloneDX 1.5, SPDX 2.3
Current ecosystem examples: CycloneDX 1.6, SPDX 3.0.1

Why it should be caught:

Reviewers need to identify current format versions, then map fields safely instead of downgrading or ignoring newer SBOMs. SPDX 3.0.1 uses a model/profile structure that is different from SPDX 2.3's document/package-centric shape, so a parser or checklist that assumes only packages, files, and relationships can miss valid SPDX 3 SBOM data.

Missed variant 2: CISA's newer SBOM framing and 2025 minimum-elements draft are not tracked

Skill minimum-elements baseline: NTIA July 2021
Current references: CISA 2024 Framing Software Component Transparency and 2025 draft Minimum Elements

Why it should be caught:

The 2021 NTIA minimum elements remain important, but SBOM operational expectations have matured. Reviews should record whether the assessment is using the 2021 NTIA baseline, CISA's 2024 framing, or the 2025 draft guidance. Otherwise the same SBOM may be scored inconsistently for identifiers, relationships, generation context, and operational use.

Missed variant 3: VEX status is trusted without signer, product, version, and timestamp binding

VEX says:
  CVE-2026-12345: not_affected
  justification: vulnerable_code_not_in_execute_path
Missing:
  matching product/version identity
  document signature or trusted source
  timestamp/freshness
  statement scope for the deployed artifact digest

Why it should be caught:

The skill explains VEX statuses and justifications, but it should also require evidence that the VEX statement applies to the exact product version/artifact under review. A correct-looking not_affected justification is weak if it is unsigned, stale, scoped to a different edition, or not bound to the deployed component identity.

Missed variant 4: SBOM integrity and attestation are not separated from SBOM completeness

Image digest: sha256:prod
SBOM file: generated locally after pulling image tag latest
Attestation: none
Signature: none
Build provenance: absent

Why it should be caught:

An SBOM can be complete but still untrustworthy if it is not generated at the right build stage or bound to the immutable artifact it describes. The skill should ask for SBOM generation point, artifact digest binding, signature/attestation status, and provenance linkage separately from component-field completeness.

Edge Cases

  • A CycloneDX 1.6 document may include valid fields that older 1.5-only tooling ignores.
  • SPDX 3 profile/model structure can require different traversal than SPDX 2.3 package relationships.
  • A vendor VEX can be valid for one product edition but not for another image, appliance build, or SaaS tenant variant.
  • "Not affected" needs justification plus applicability evidence; the status alone is not enough.
  • SBOMs generated from source, lockfile, container image, and running environment can produce materially different inventories.

Remediation Quality

  • Fix resolves the vulnerability
  • Fix doesn't introduce new security issues
  • Fix doesn't break functionality
  • Issues found: Refresh sbom-analysis to support current SBOM format versions and to distinguish field completeness, operational minimum-elements baseline, VEX applicability, and artifact-bound integrity/provenance evidence.

Comparison to Other Tools

Tool / Framework Catches this? Notes
CycloneDX 1.6 Yes Current CycloneDX release with newer BOM capabilities than the skill's 1.5 baseline.
SPDX 3.0.1 Yes Current SPDX model/profile structure differs from SPDX 2.3 assumptions.
CISA SBOM guidance Partial Provides current framing and draft minimum-elements expectations; reviewers must decide which baseline applies.
Syft / Trivy Partial Can generate SBOMs and sometimes attestations, but do not prove business applicability or VEX trust by themselves.
Cosign / in-toto attestations Partial Can bind SBOMs to artifacts, but the review still needs to verify generation point and scope.

Overall Assessment

Strengths:

  • Strong coverage of NTIA minimum elements, dependency relationships, VEX statuses, transitive dependency risk, and license conflict detection.
  • Useful distinction between CVE triage and SBOM-context analysis.
  • Good output template for completeness and VEX summaries.

Needs improvement:

  • The supported format baseline is stale for CycloneDX and SPDX.
  • The minimum-elements baseline should be explicitly revisioned instead of assuming only the 2021 NTIA document.
  • VEX review needs applicability evidence: signer/source, product identity, version, timestamp, and artifact scope.
  • SBOM completeness should not be conflated with SBOM integrity or provenance.

Priority recommendations:

  1. Add format detection for CycloneDX 1.6 and SPDX 3.0.1 while preserving support for CycloneDX 1.5 and SPDX 2.3.
  2. Add a Minimum-elements baseline used field that records NTIA 2021, CISA 2024 framing, or CISA 2025 draft guidance when applicable.
  3. Add a VEX applicability table: CVE, product, version/range, artifact digest, VEX source, signature/trust evidence, timestamp, status, justification, and confidence.
  4. Add SBOM integrity checks for generation stage, immutable artifact binding, signature/attestation, and provenance linkage.

Sources Checked

Bounty Info

  • I have read and agree to the CONTRIBUTING.md bounty terms
  • Preferred payment method: to be provided privately after acceptance

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions