Skip to main content

SBOM Monitoring Guide

Policy status

Status: Approved · approved 2026-06-17

sirosfoundation Supply Chain Security​

Version: 1.0
Date: 2026-04-02
Status: Active


1. Overview​

This document describes how SIROS Foundation monitors Software Bill of Materials (SBOMs) for both:

  • Outgoing SBOMs: SBOMs we produce for software we release
  • Incoming SBOMs: SBOMs from dependencies and vendors we consume
┌─────────────────────────────────────────────────────────────────────────────┐
│ SBOM Monitoring │
├────────────────────────────────┬────────────────────────────────────────────┤
│ OUTGOING (We Produce) │ INCOMING (We Consume) │
├────────────────────────────────┼────────────────────────────────────────────┤
│ Our repos → SBOM → Consumers │ Dependencies → SBOM → Our evaluation │
│ - go-wallet-backend │ - Container base images │
│ - wallet-frontend │ - Go/npm packages │
│ - wwwallet-core │ - Commercial dependencies │
└────────────────────────────────┴────────────────────────────────────────────┘

2. SBOM Generation Workflow​

2.1 How It Works​

All sirosfoundation repositories use a shared reusable workflow:

# In your repository's .github/workflows/sbom.yml
jobs:
sbom:
uses: sirosfoundation/.github/.github/workflows/sbom.yml@main
with:
artifact-name: myproject
scan-vulnerabilities: true

2.2 Workflow Features​

FeatureDefaultDescription
artifact-namerepo namePrefix for SBOM files
scan-image(none)Container image to scan
scan-vulnerabilitiestrueRun Grype vulnerability scan
fail-on-severity(none)Fail if vulns at this level
upload-to-releasetrueAttach to GitHub releases
require-sbomfalseFail build if SBOM fails

2.3 Output Files​

FileDescription
{name}-sbom.cdx.jsonCycloneDX JSON SBOM
{name}-container-sbom.cdx.jsonContainer SBOM (if image scanned)

3. Outgoing SBOM Monitoring​

3.1 Continuous Vulnerability Scanning​

Every SBOM workflow run includes Grype vulnerability scanning:

CI/CD ──▶ Syft (SBOM) ──▶ Grype (Scan) ──▶ GitHub Security Tab
│
▼
SARIF Results

Vulnerability sources:

  • National Vulnerability Database (NVD)
  • GitHub Security Advisories
  • OSV (Open Source Vulnerabilities)

Results location: Repository → Security → Code scanning alerts

3.2 Artifact Publication​

TriggerArtifact LocationRetention
Push/PRWorkflow artifacts90 days
ReleaseRelease assetsPermanent

3.3 Quality Metrics​

MetricTargetMeasurement
SBOM coverage100% of releasesAll 13 repos have SBOM workflow
Component coverage100%All deps have PURL in SBOM
Vulnerability response<7 daysTime from CVE disclosure to patch

4. Incoming SBOM Monitoring​

4.1 Dependency Scanning​

Dependencies are scanned when we generate our SBOM:

go.mod / package.json
│
▼
Syft scans ──▶ SBOM includes all transitive deps
│
▼
Grype checks each component against vuln DBs

4.2 Third-Party Dependency Sources​

Dependency TypeSBOM SourceMonitoring Method
Go modulesGenerated by SyftPart of our SBOM
npm packagesGenerated by SyftPart of our SBOM
Container imagesRegistry attestationsCosign verify
Commercial SWVendor-providedManual ingest

4.3 Supply Chain Attack Detection​

Grype and GitHub Dependabot detect:

  • Known vulnerabilities (CVEs)
  • Malicious packages (via advisory databases)
  • Typosquatting attempts (npm/PyPI advisories)

5. Alerting & Response​

5.1 Alert Channels​

Alert SourceDestinationSLA
Grype critical vulnGitHub Security tabReview within 24h
Dependabot alertGitHub Security tabReview within 7 days
New dependency addedPR diffReview in PR

5.2 Vulnerability Response Process​

1. Alert received (Grype/Dependabot)
│
▼
2. Triage: Is it exploitable in our context?
│
├── No → Document exception
│
└── Yes → Prioritize fix
│
▼
3. Update dependency / apply patch
│
▼
4. Release with new SBOM
│
▼
5. Verify fix in security scan

5.3 Severity Response SLAs​

SeverityResponse TimeResolution Time
Critical24 hours72 hours
High7 days14 days
Medium30 days60 days
LowBest effortNext release

6. Future Enhancements​

6.1 Dependency-Track Integration (Planned)​

Centralized SBOM management platform:

┌─────────────────────────────────────────────────────┐
│ Dependency-Track │
│ ┌───────────┐ ┌───────────┐ ┌───────────────┐ │
│ │ Portfolio │ │ Continuous│ │ Policy │ │
│ │ Dashboard │ │ Monitoring│ │ Enforcement │ │
│ └───────────┘ └───────────┘ └───────────────┘ │
│ │
│ Features: │
│ - All projects in one view │
│ - Continuous vuln correlation │
│ - License compliance │
│ - Shared component analysis │
└─────────────────────────────────────────────────────┘

6.2 Release Gating (Opt-in)​

When require-sbom: true and fail-on-severity: high:

Release blocked if:
- SBOM generation fails
- High/Critical vulnerabilities found

7. Operational Procedures​

7.1 Adding SBOM to a New Repository​

  1. Create .github/workflows/sbom.yml:
name: SBOM

on:
push:
branches: [main]
tags: ['v*']
pull_request:
branches: [main]
release:
types: [published]

jobs:
sbom:
uses: sirosfoundation/.github/.github/workflows/sbom.yml@main
with:
artifact-name: my-project
scan-vulnerabilities: true
permissions:
contents: write
id-token: write
security-events: write
  1. Enable GitHub Advanced Security for the repo (for SARIF upload)
  2. Verify workflow runs on next push

7.2 Responding to Security Alerts​

  1. Go to repository → Security → Code scanning
  2. Review each alert's details
  3. For each alert:
    • If false positive: Dismiss with reason
    • If valid: Create issue, prioritize fix
  4. Track resolution in SBOM metrics

7.3 Verifying a Release SBOM​

# Download release SBOM
gh release download v1.0.0 -p "*-sbom.cdx.json*"

# Scan for current vulnerabilities
grype sbom:*-sbom.cdx.json

8. References​