| name | grype |
| description | Auth/lab ref: fast vulnerability scanner for container images, filesystems, SBOMs, and directories. |
| license | Apache-2.0 |
| compatibility | Linux / macOS / Windows. |
| metadata | {"author":"AeonDave","version":"1.0"} |
grype
Fast vulnerability scanner with composite risk scoring — CVEs in images, code, SBOMs.
Quick Start
grype nginx:latest
grype dir /path/to/project
grype sbom:sbom.json
grype nginx:latest --only-fixed -f high
Scan Targets
grype <image>
grype dir:<path>
grype sbom:<file>
grype docker-archive:<file>
grype registry:<image>
Core Flags
| Flag | Purpose |
|---|
-o, --output <fmt> | Output format: table / json / sarif / cyclonedx / template |
--file <path> | Write output to file |
-f, --fail-on <sev> | Exit 2 if severity ≥ level: critical/high/medium/low/negligible |
--only-fixed | Show only vulns with available fix |
--only-notfixed | Show only unfixed vulns |
--ignore-states <states> | Ignore fix states: wont-fix,unknown,fixed,not-affected |
-s, --scope <scope> | Layer scope: squashed (default) / all-layers |
--sort-by <key> | Sort: severity / epss / risk / kev / package |
--add-cpes-if-none | Generate CPEs for packages missing them |
--by-cve | Group by CVE instead of vulnerability ID |
--platform <os/arch> | Platform for multi-arch images (linux/amd64) |
--distro <dist:ver> | Override distro detection |
--vex <file> | Apply VEX document for result filtering |
--show-suppressed | Display suppressed findings |
-q, --quiet | Suppress logs |
-v / -vv | Verbose / debug |
-c, --config <file> | Config file path |
Database Management
grype db status
grype db check
grype db update
grype db list
grype db search CVE-2021-44228
grype db search --package curl
Risk Scoring
grype provides composite risk score (0.0–10.0) combining:
- CVSS — base severity
- EPSS — 30-day exploitation probability (percentile)
- KEV — CISA Known Exploited Vulnerabilities catalog status
grype nginx:latest --sort-by risk
grype nginx:latest --sort-by epss
grype nginx:latest --sort-by kev
Common Workflows
grype myapp:latest --only-fixed -f high
echo $?
grype nginx:latest -o json --file vuln_report.json
grype myapp:latest -o sarif --file grype.sarif
grype myapp:latest -c .grype.yaml
grype myapp:latest --scope all-layers
syft nginx:latest -o json | grype sbom:- --output json
grype explain --id CVE-2021-44228
grype myapp:latest --sort-by kev -o table
Output Parsing
grype nginx:latest -o json --file scan.json
cat scan.json | jq '.matches[] | {cve: .vulnerability.id, pkg: .artifact.name, severity: .vulnerability.severity, fix: .vulnerability.fix.versions[0]}'
cat scan.json | jq '[.matches[].vulnerability.severity] | group_by(.) | map({sev: .[0], count: length})'
cat scan.json | jq '.matches[] | select(.vulnerability.severity=="Critical" and (.vulnerability.fix.versions | length > 0)) | {cve: .vulnerability.id, pkg: .artifact.name, fix: .vulnerability.fix.versions[0]}'
Resources
| File | When to load |
|---|
references/config-ignore.md | .grype.yaml ignore rules, registry auth, syft integration, VEX |