Vulnerability auditor
Last updated October 25, 2026View source (v0.30.0)
Evaluates the vulnerability records that matchers attached during --enrich against vulnerability policy.
| Property | Value |
|---|---|
| Auditor name | vulnerability |
| Finding kind | vulnerability |
Runs with --audit | Yes |
| Needs enrichment data | Yes |
| Policy flags | --fail-on, --allow-vulnerability-id |
| Finding reasons | severity 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
| Flag | YAML key | Effect |
|---|---|---|
--fail-on <severity|reachable|exploitable> | policy.fail_on | Turn matching vulnerability findings into a non-zero exit code. Repeated vulnerability constraints combine with AND. |
--allow-vulnerability-id <id> | policy.allow_vulnerability_ids | Suppress 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-idsuppresses an advisory everywhere it appears, across every package. - Reachability is experimental.
--fail-on reachabledepends on--analyze, and anunknownreachability status does not mean safe. See Reachability. - Exploitability depends on enrichment evidence.
--fail-on exploitablematches a positive known-exploitation signal. The absence of that signal does not prove an advisory is unexploitable.