Skip to content

ci(security): add osv-scanner job for OSV database coverage#518

Merged
Detair merged 1 commit into
mainfrom
feat/osv-scanner-ci
Apr 11, 2026
Merged

ci(security): add osv-scanner job for OSV database coverage#518
Detair merged 1 commit into
mainfrom
feat/osv-scanner-ci

Conversation

@Detair

@Detair Detair commented Apr 11, 2026

Copy link
Copy Markdown
Owner

Summary

Adds an osv-scanner job to .github/workflows/security.yml. Uses the OSV vulnerability database, independent from RustSec (covered by cargo-audit/deny) and GHSA (covered by CodeQL). Provides a third independent advisory source.

Failure semantics

  • Scanner exit code is the gate at HIGH+ severity. No continue-on-error.
  • MEDIUM/LOW findings still appear in the SARIF upload (and Security tab) but don't fail the job.
  • SARIF upload runs on if: always() so failed scans still publish to GitHub Security tab for tracking.

Action versioning

Pinned to google/osv-scanner-action@v2.3.5. Upstream has no v2 floating tag — only patch tags exist, and upstream warns that action behavior may change in minor patch updates. See https://github.com/google/osv-scanner-action/releases for newer patch tags.

Expected first-run outcomes

a) Zero HIGH+ vulnerabilities (job passes): ideal outcome. Topic 1 (#517) just cleared 11 of 17 devtime advisories; the remaining 3 unique CVEs are vite dev-server issues which may or may not be reachable via osv-scanner's lockfile parsing.

b) osv-scanner finds HIGH+ vulnerabilities (job fails): informative. The OSV database may flag advisories that RustSec/GHSA don't. These would be real issues to investigate in a follow-up PR — don't fix here.

c) osv-scanner can't read bun.lock (Rust-only coverage): osv-scanner's lockfile parser has historically lagged on bun. If the scan is Rust-only, that's still additive value (OSV is the third independent source for Rust advisories).

Test plan

  • YAML validates with python3 yaml.safe_load
  • jobs list shows: rust-audit, dependencies, bun-audit, secrets-scan, codeql, osv-scan
  • osv-scan job runs on this PR (first CI run)
  • Job either passes or reports real HIGH+ vulnerabilities
  • SARIF results visible in GitHub Security tab under osv-scanner category

Refs

  • Spec: docs/superpowers/specs/2026-04-11-security-audit-followups-design.md (Topic 2)
  • Plan: docs/superpowers/plans/2026-04-11-osv-scanner-ci.md

🤖 Generated with Claude Code

Adds Google's osv-scanner as a new job in security.yml. Uses the OSV
database, which is independent of RustSec (covered by cargo-audit and
cargo-deny) and GHSA (covered by CodeQL). Provides a third independent
advisory source.

Failure semantics: scanner exit code is the gate at HIGH+ severity.
SARIF output uploads to GitHub Code Scanning even on scan failure
(if: always()) so the Security tab tracks history.

Pinned to v2.3.5 because upstream has no v2 floating tag — only patch
tags exist, and upstream warns that action behavior may change in
minor patch updates.

Refs spec docs/superpowers/specs/2026-04-11-security-audit-followups-design.md (Topic 2)
@Detair Detair merged commit cb7fec9 into main Apr 11, 2026
17 checks passed
@Detair Detair deleted the feat/osv-scanner-ci branch April 11, 2026 22:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant