End-to-end SBOM generation and vulnerability intelligence pipeline
Project description
sbom-sentinel
SBOM generation and vulnerability intelligence pipeline.
Wraps Syft and Grype behind a five-command CLI, enriches results with the CISA Known Exploited Vulnerabilities (KEV) catalog, and produces a timestamped Markdown report.
Installation
Requires Syft and Grype on PATH.
pip install sbom-sentinel
Quick Start
Run the full pipeline (SBOM + scan + report) in one command:
sbom-sentinel run --target ./myapp --name myapp --fail-on high
sbom-sentinel run --target docker:nginx:latest --name nginx --fail-on high
sbom-sentinel run --target https://github.com/org/repo --name repo --fail-on high
Or run each stage individually:
sbom-sentinel sbom --target ./myapp --name myapp
sbom-sentinel scan --sbom sbom_output/myapp_*.spdx.json --name myapp --fail-on high
sbom-sentinel report --scan artifacts/json/myapp_*.json --name myapp
Generate an HTML report instead of Markdown:
sbom-sentinel run --target ./myapp --name myapp --report-format html
Compare two scans to see what changed:
sbom-sentinel diff --old artifacts/json/myapp_old.json --new artifacts/json/myapp_new.json --name myapp
Features
- SPDX-JSON SBOMs from local directories, container images, or Git URLs
- Vulnerability scanning via Grype with severity gating (
--fail-on) - CISA KEV enrichment with date-stamped local cache
- OpenVEX / CSAF suppression with KEV conflict detection
- Markdown or standalone HTML reports
- JSON or SARIF scan output for GitHub Code Scanning
- Verbose mode (
-v) for diagnostic output
Commands
| Command | Description |
|---|---|
sbom |
Generate an SPDX-JSON SBOM via Syft |
scan |
Scan an SBOM for vulnerabilities via Grype |
report |
Generate a Markdown or HTML report with KEV enrichment |
diff |
Compare two scans and report new / resolved CVEs |
run |
Run the full pipeline (sbom + scan + report, or scan + report from an existing SBOM) |
Pass --help to any command for the full option reference.
VEX suppression
Pass an OpenVEX or CSAF document to suppress findings marked not_affected. Any suppressed CVE that also appears in CISA KEV is flagged as a conflict requiring manual review.
sbom-sentinel run --sbom sbom.spdx.json --name myapp --vex statements.vex.json
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Runtime error -- tool not found, scan threshold met, timeout, or parse failure |
| 2 | Usage error -- missing required option or invalid argument |
Development
git clone https://github.com/Dashtid/sbom-sentinel.git
cd sbom-sentinel
uv sync
uv run pytest
uv run ruff check .
uv run mypy sbom_sentinel
See CONTRIBUTING.md for full guidelines.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sbom_sentinel-1.0.1.tar.gz.
File metadata
- Download URL: sbom_sentinel-1.0.1.tar.gz
- Upload date:
- Size: 69.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a937fa6f21ecff63204c9060c4f6fc02de1384d0d8dd099fc5e85ccd30a09e2e
|
|
| MD5 |
61d8b76edda3622942459dac1024b254
|
|
| BLAKE2b-256 |
ce716dca6c07c5b138329f6dcb007f12c65fe2d9f9bc183437acfa032c77e1d9
|
File details
Details for the file sbom_sentinel-1.0.1-py3-none-any.whl.
File metadata
- Download URL: sbom_sentinel-1.0.1-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89cfd6f25f3d40491980bb3808dbe4de46009d322c93432ae7ca74c97627ef43
|
|
| MD5 |
ef72b28d4617f798d227f2f7d574ded3
|
|
| BLAKE2b-256 |
dc1368d30671b2e815a967361e1a6a40faaf7e65cee07857edf6d1dd5b61594c
|