Skip to main content

Synopsis

Read-only views over the vulnerabilities found in the images your workloads run. Findings come from Trivy Operator reports and, when the opt-in supplychain matcher is enabled, from kguardian’s own Grype matcher, which matches SBOMs. kguardian never blocks or applies anything.
For one image’s findings, or a CI gate, use images vulns.
Unknown is not safe. Images no source has scanned are unknown and do not appear here, so an empty list is not “no vulnerabilities”. An IN USE of unknown means no runtime evidence either way: treat the finding as potentially reachable. Tiers rank it as in use.

In use and tiers

IN USE comes from the exec and shared-library capture: which files each container ran, matched to the packages in the image’s SBOM. TIER ranks findings, most urgent first: - means the tier is not computed yet (the first pass after an upgrade, or a broker without tiers); it never means low risk. The EPSS threshold and exposure default are Helm values (broker.supplychain.tiers); see the vulnerability API.

vulns list

Calls GET /vulnerabilities: every vulnerability affecting an inventory image, grouped by id, in tier order (P0, then not yet computed, then P1, P2, Background), most severe first within a tier. It reads a summary the broker rebuilds every few minutes; when it was computed is printed on stderr.
A CVE’s tier is its most urgent over every affected workload container in scope, and IN USE its strongest state. EXPOSED counts workloads with observed exposure. Counts are distinct images and workloads, so two sources reporting the same CVE never count twice. KEV unknown means no source said either way. JOIN is the weakest match behind the counts: workload_tag means some are by tag only, and the tag may have moved since the scan.

vulns exposure

Calls GET /vulnerabilities/{id}/exposure: the inventory images a vulnerability affects, the workloads running (or having run) them, and each workload’s observed ingress over the window.
EXPOSED is observed traffic, not reachability analysis: FIXED lists every fixed version the sources give, in source order. A vulnerability no inventory image with data lists exits non-zero with a message saying that is not proof the cluster is unaffected. -o json and -o yaml print the broker’s response unchanged. Global flags (--kubeconfig, --context, --broker-namespace, --broker-service, --broker-token-file, --debug) are listed in the CLI overview. A 401 or 403 prints a hint: these commands need a token with the read scope.

Examples