Modern software applications depend on hundreds of open-source libraries, frameworks, and third-party components. While these dependencies accelerate development, they also introduce security and compliance risks. A vulnerable package or compromised dependency can affect every application that includes it.

A Software Bill of Materials (SBOM) provides a structured inventory of all software components used in an application. By verifying SBOMs during Continuous Integration and Continuous Deployment (CI/CD), development teams can identify vulnerable dependencies, enforce security policies, and improve software supply chain transparency before applications reach production.

In this article, you'll learn how SBOM verification works, integrate it into .NET CI/CD pipelines, and implement production-ready practices for securing your software supply chain.

What Is an SBOM?

A Software Bill of Materials (SBOM) is a machine-readable inventory of the software components that make up an application.

An SBOM typically includes:

Rather than manually tracking dependencies, an SBOM provides an automated and standardized inventory.

Why SBOMs Matter

Modern applications often contain:

Application
      |
-------------------------
| ASP.NET Core         |
| NuGet Packages       |
| JSON Libraries       |
| Logging Frameworks   |
| Authentication SDKs  |
-------------------------

Each dependency introduces potential security, licensing, and maintenance considerations.

SBOM verification helps organizations answer questions such as:

SBOM in the Software Supply Chain

A simplified software supply chain looks like this:

Source Code
      |
Restore Packages
      |
Build
      |
Generate SBOM
      |
Verify SBOM
      |
Security Scan
      |
Deploy

Verification should occur before deployment rather than after release.

Common SBOM Formats

Several industry-standard formats exist.

FormatDescription
SPDXOpen standard for software component inventories
CycloneDXSBOM format focused on software supply chain security
SWIDSoftware identification tags
Proprietary FormatsVendor-specific implementations

Many modern security tools support both SPDX and CycloneDX.

Why Verify SBOMs in CI/CD?

Generating an SBOM alone is not enough.

Verification helps ensure:

Automating these checks reduces the likelihood of introducing risky components into production.

Generating an SBOM

Many build tools and package ecosystems support SBOM generation.

A simplified workflow:

Build
   |
Package Restore
   |
Dependency Analysis
   |
Generate SBOM

The exact generation tool depends on your build platform and preferred SBOM format.

Example Build Pipeline

A CI/CD workflow might include:

Developer Commit
        |
Build
        |
Unit Tests
        |
Generate SBOM
        |
Verify SBOM
        |
Security Scan
        |
Package
        |
Deploy

Each stage contributes to overall software quality and security.

Reading an SBOM

A simplified SBOM entry might resemble:

{
  "name": "Newtonsoft.Json",
  "version": "13.0.3",
  "license": "MIT"
}

Real-world SBOMs typically contain additional metadata such as package identifiers, suppliers, hashes, and dependency relationships.

Automating Verification

Create a verification service.

public class SbomVerifier
{
    public bool Verify(
        IEnumerable<PackageInfo> packages)
    {
        return packages.All(
            p => !string.IsNullOrWhiteSpace(
                p.Version));
    }
}

Production implementations typically validate additional attributes such as approved licenses, version constraints, and policy compliance.

Checking Dependency Policies

Organizations often maintain approved package policies.

Example:

Approved

Microsoft.Extensions.*

Serilog.*

Npgsql.*

Blocked

Unknown Packages

Deprecated Libraries

Policy validation ensures only approved dependencies are included in released software.

Detecting Vulnerable Components

Verification should identify dependencies that require attention.

Typical workflow:

SBOM
   |
Security Database
   |
Known Vulnerabilities
   |
Build Result

If critical vulnerabilities are detected, organizations may choose to fail the build or require manual approval before deployment.

License Compliance

Dependency licenses are an important part of software governance.

Validation may include:

License verification helps reduce legal and compliance risks.

Integrating with GitHub Actions

A simplified workflow:

name: Build

steps:
- uses: actions/checkout@v4

- name: Build
  run: dotnet build

- name: Generate SBOM
  run: dotnet tool run sbom

- name: Verify SBOM
  run: dotnet run --project SbomVerifier

The exact commands depend on the SBOM generation and verification tools selected for your pipeline.

Logging Verification Results

Record verification outcomes for auditing.

Example:

logger.LogInformation(
    "SBOM verification completed successfully.");

Useful information includes:

Avoid logging confidential repository or infrastructure details.

Handling Verification Failures

Not every issue has the same severity.

A typical workflow:

Verification
      |
-----------------------
| Pass | Warning | Fail |
-----------------------

Examples:

Severity levels should align with organizational security policies.

Monitoring Supply Chain Security

Useful metrics include:

Monitoring these trends helps teams improve supply chain security over time.

Security Considerations

When implementing SBOM verification:

SBOM verification should be one layer within a broader software supply chain security strategy.

Production Best Practices

PracticeBenefit
Generate SBOMs automaticallyConsistent inventories
Verify every buildEarly issue detection
Enforce dependency policiesImproved governance
Review vulnerable packages promptlyReduced security risk
Monitor license complianceBetter legal compliance
Archive SBOMs with releasesImproved traceability
Automate verificationConsistent enforcement

Common Mistakes

MistakeBetter Approach
Generating SBOMs without verificationValidate every build
Ignoring transitive dependenciesAnalyze the complete dependency graph
Manual verificationAutomate policy checks
Missing license reviewsValidate licenses during CI
No audit historyStore SBOMs with release artifacts
Updating packages without validationRe-run verification after every dependency change

Troubleshooting

SBOM generation fails

Verify:

Verification reports missing packages

Check:

Unexpected build failures

Review:

Vulnerabilities continue appearing

Investigate:

SBOM Generation vs SBOM Verification

FeatureSBOM GenerationSBOM Verification
Creates component inventoryYesNo
Detects policy violationsNoYes
Validates dependency rulesNoYes
Checks license complianceLimitedYes
Supports deployment decisionsLimitedYes
Improves software governanceModerateHigh

Generating an SBOM is the first step. Verification transforms that inventory into an actionable security control.

Frequently Asked Questions

Is generating an SBOM enough?

No. An SBOM lists software components, but verification checks whether those components comply with security and organizational policies.

Should SBOM verification run on every build?

Yes. Integrating verification into CI/CD helps detect dependency issues before software reaches production.

Can SBOM verification replace vulnerability scanning?

No. SBOM verification and vulnerability scanning complement each other. An SBOM provides component visibility, while vulnerability scanning identifies known security issues associated with those components.

Should SBOMs be stored after deployment?

Yes. Retaining SBOMs alongside release artifacts improves traceability and helps organizations quickly identify affected applications when new vulnerabilities are disclosed.

Does SBOM verification only apply to open-source software?

No. Organizations can include both proprietary and third-party components in their SBOMs to improve overall software inventory management and governance.

Conclusion

As software supply chain security becomes increasingly important, SBOMs provide the transparency needed to understand what applications are built from and how dependencies evolve over time. However, generating an SBOM is only the beginning. Automated verification within CI/CD pipelines enables organizations to enforce dependency policies, identify vulnerable components, validate license compliance, and improve release confidence.

By integrating SBOM verification into the software delivery process, development teams can strengthen application security, enhance compliance, and establish a more resilient and auditable software supply chain without significantly increasing development complexity.