Integrate OSV Scanner with Vulnetix. Scan dependencies against the OSV database with native SARIF and CycloneDX output.
Install & scan
$ go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest $ osv-scanner scan -r --format sarif --output osv.sarif .
Run OSV Scanner in CI
Scan on every push and upload the report as a workflow artifact:
- name: Install OSV Scanner
run: go install github.com/google/osv-scanner/v2/cmd/osv-scanner@latest
- name: Run OSV Scanner
run: osv-scanner scan -r --format sarif --output osv.sarif .
- name: Upload report
uses: actions/upload-artifact@v6
with:
name: osv-scanner
path: osv.sarif
if-no-files-found: warnThen one publish job hands every artifact in the run to Vulnetix, recorded under OSV Scanner's own name and version. Written once per workflow, however many scanners you run:
publish:
name: Publish to Vulnetix
runs-on: ubuntu-latest
needs: [scan] # every scanner job, or its report is never published
if: always() # or one failing scanner suppresses all the others
permissions:
contents: read
actions: read # required to list the run's artifacts
env:
VULNETIX_ORG_ID: ${{ secrets.VULNETIX_ORG_ID }}
VULNETIX_API_KEY: ${{ secrets.VULNETIX_API_KEY }}
steps:
- uses: actions/checkout@v5
- name: Install Vulnetix CLI
run: |
curl -fsSL https://cli.vulnetix.com/install.sh | sh -s -- --install-dir "$HOME/.local/bin"
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: Publish scanner reports
env:
GITHUB_TOKEN: ${{ github.token }}
run: vulnetix gha upload --org-id "$VULNETIX_ORG_ID" --jsonAfter the run, vulnetix gha status reports what was actually recorded.
How Vulnetix compares: better together
Vulnetix does not replace OSV Scanner. Keep running it. Vulnetix sits on top of OSV Scanner (and every other scanner you already own) turning disconnected tool outputs into one prioritised, fixable queue.
OSV Scanner is strongest at its core category and also carries features in Container & Image Scanning, License Compliance, SBOM Generation, just as Vulnetix spans categories.
| Capability | Vulnetix | OSV Scanner |
|---|---|---|
| Security coverage | ||
| SAST (static code analysis) | ✓ Built-in rules + Semgrep augmentation | ✗ |
| SCA / dependencies | ✓ 40+ ecosystems, transitive graph | ✓ Core: matches lockfiles, SBOMs, and git commits against the OSV.dev database |
| DAST (dynamic testing) | ~ Ingests DAST results; no native dynamic engine | ✗ |
| Container & image | ✓ Image CVEs, base image, Dockerfile | ✓ V2 layer-aware container image scanning for Debian/Ubuntu/Alpine, reporting introducing layer and base images |
| IaC / misconfiguration | ✓ Terraform, k8s, CloudFormation | ✗ |
| Secret scanning | ✓ 1,000+ rules, source + binary + git history | ✗ |
| Cloud / CSPM | ✓ Cloud-posture findings, compliance tab | ✗ |
| Mobile (MAST) | ~ Ingests mobile scanner output; no native mobile engine | ✗ |
| License compliance | ✓ SPDX, copyleft/AGPL/SSPL policy | ~ License compliance scanning of dependencies using deps.dev data, with allowlist filtering |
| SBOM generation | ✓ CycloneDX 1.7 + SPDX 2.3, cosign-signable | ~ Consumes CycloneDX/SPDX SBOMs and outputs SPDX 2.3 package lists (no vuln data in SPDX output) |
| Malware / supply-chain | ✓ De-duplicated corpus + install-time firewall (25+ registries) | ✗ |
| Network / infra vuln | ~ Ingests network scanner output; no native network scanner | ✗ |
| Fuzzing | ✗ Ingests fuzzing crashes; no native fuzzer | ✗ |
| Pentest / bug bounty | ✗ Ingests pentest/bug-bounty findings; not a testing service | ✗ |
| The Vulnetix orchestration layer | ||
| Cross-scanner dedup & one queue (ASPM) | ✓ Correlates every scanner into one prioritised queue with ownership routing | ✗ |
| Exploit-intel prioritisation | ✓ EPSS, CISA KEV, Coalition ESS, CWSS, Vulnetix LEV | ✗ |
| Reachability analysis | ✓ Tree-sitter + CVEAffected; direct/transitive/semantic | ✗ |
| Versioned VEX + audit trail | ✓ Immutable OpenVEX/CycloneDX, cosign-signable | ✗ |
| Safe Harbour autofix | ✓ Resolves + applies the nearest safe version | ~ Experimental guided remediation recommends upgrade paths |
| End-of-life policy | ✓ Flags/blocks past-EOL runtimes & packages | ✗ |
| SSVC / risk-based policy | ✓ SSVC v2 + CISA/FedRAMP/Essential-8 presets | ✗ |
✓ full · ~ partial · ✗ not covered
What OSV Scanner does well
- Free, open-source Google scanner backed by the federated OSV.dev database aggregating GitHub Advisory, PyPI, npm, crates.io, Go, and NVD with precise machine-readable version ranges
- Layer-aware container image scanning that reports the layer and command that introduced each package plus detected base images and OS/distro
- Consumes CycloneDX and SPDX SBOMs as scan input and can emit SPDX 2.3 package lists; broad manifest and lockfile support via OSV-SCALIBR
- Experimental guided remediation suggests dependency upgrades and offline scanning for air-gapped CI, with SARIF output
Where Vulnetix adds to it: OSV-Scanner is a fast open-source SCA/container scanner keyed to OSV.dev. Vulnetix ingests and dedupes its SARIF output with other scanners into one prioritised queue and adds the prioritisation and governance layers OSV-Scanner does not have: exploit-intel (EPSS, KEV, ESS, CWSS, LEV), reachability, immutable versioned VEX with audit, mature autofix/Safe Harbour, EOL and SSVC policy, and an install-time package firewall across 25+ registries. Vulnetix orchestrates above OSV-Scanner rather than replacing it.
No migration, no rip-and-replace. OSV Scanner keeps doing what it does best; Vulnetix adds the orchestration, exploit-intelligence prioritisation and remediation layer built for the way AppSec works today.
Centralise OSV Scanner results in Vulnetix
Upload OSV Scanner SARIF, CycloneDX output to the Vulnetix platform to deduplicate findings, prioritise them with EPSS, CISA KEV and Coalition ESS exploit intelligence, and track remediation across every scanner in a single queue.