Skip to content

Search

Search the docs, blog, and marketplace.

Vulnerability auditor

Last updated October 25, 2026View source (v0.30.0)

Evaluates the vulnerability records that matchers attached during --enrich against vulnerability policy.

PropertyValue
Auditor namevulnerability
Finding kindvulnerability
Runs with --auditYes
Needs enrichment dataYes
Policy flags--fail-on, --allow-vulnerability-id
Finding reasonsseverity threshold, reachable symbol, KEV listing

What the vulnerability auditor does

It walks every package in the resolved graph, reads the vulnerability records that matchers attached during enrichment, and turns each one into a finding when it matches policy. It fetches nothing itself, so without --enrich or an SBOM that carries advisories it finds nothing.

Every advisory on a package becomes a finding unless its ID is on the allowlist. Whether a finding fails the build is decided separately by --fail-on; see AUDITORS.md.

Options

FlagYAML keyEffect
--fail-on <severity|reachable|exploitable>policy.fail_onTurn matching vulnerability findings into a non-zero exit code. Repeated vulnerability constraints combine with AND.
--allow-vulnerability-id <id>policy.allow_vulnerability_idsSuppress one advisory (CVE or GHSA) you have already triaged. Repeatable.

Examples

# Fail CI on any high or critical vulnerability
bomly scan --enrich --audit --fail-on high

# Same gate, but accept one advisory you assessed as not exploitable
bomly scan --enrich --audit --fail-on high \
  --allow-vulnerability-id GHSA-xxxx-yyyy-zzzz

# Fail only when a high-severity advisory is also reachable
bomly scan --enrich --audit --analyze \
  --fail-on high --fail-on reachable

# Fail only when a high-severity advisory has known exploitation evidence
bomly scan --enrich --audit \
  --fail-on high --fail-on exploitable

Limitations

  • The auditor is only as good as the matcher data. A package whose lookup failed looks clean.
  • Allowlisting is by ID, not by package. --allow-vulnerability-id suppresses an advisory everywhere it appears, across every package.
  • Reachability is experimental. --fail-on reachable depends on --analyze, and an unknown reachability status does not mean safe. See Reachability.
  • Exploitability depends on enrichment evidence. --fail-on exploitable matches a positive known-exploitation signal. The absence of that signal does not prove an advisory is unexploitable.