Container Image Vulnerability Calculator
Score container image risk from CVE counts by severity and show how many fleet-wide criticals a single base image bump removes.
Inputs
Image Risk Score
75.4/ 100
Risk Level
High
Critical CVEs per Image
9CVEs
Fleet-Wide Critical CVE Instances
2,700instances
Share Inherited From the Base Image
62.2%
Criticals Removed by One Base Image Bump
1,680instances
Fleet Criticals With a Fix Available
1,728instances
Suggested Remediation Window
7days
Priority
Rebuild on a patched base image — one change clears most of the fleet's critical CVEs
Step by step
Values used
Images in the registry = 340 images; Images built on the shared base image = 280 images; Critical CVEs in the base image = 6 CVEs; High CVEs in the base image = 24 CVEs; Critical CVEs added by application layers = 3 CVEs; High CVEs added by application layers = 11 CVEs; Medium CVEs per image = 38 CVEs; Low CVEs per image = 72 CVEs; CVEs with a fix available = 64 %
Container Image Vulnerability
Image risk = 0.2 × (critical × 10 + high × 5 + medium × 2 + low × 0.5) per image, clamped to 0–100, where critical and high include CVEs inherited from the base image.
Base image inheritance
Fleet critical instances = base image criticals × images on that base + application criticals × all images. Rebuilding on a patched base removes the first term in one change.
Image Risk Score
= 75.4 / 100
Risk Level
= High
Critical CVEs per Image
= 9 CVEs
Fleet-Wide Critical CVE Instances
= 2,700 instances
Share Inherited From the Base Image
= 62.2
Criticals Removed by One Base Image Bump
= 1,680 instances
How it works
A container image inherits every vulnerability in its base layers, so one unpatched base image multiplies across every image built on it. Separating inherited from application-layer CVEs turns a fleet of thousands of findings into two numbers: the ones a base image bump fixes and the ones that need an actual code or dependency change. Scanner output looks like an unwinnable backlog until you notice that the same six base-image criticals account for two thirds of it, and one rebuild closes them everywhere at once.
Formulas
Container Image Vulnerability
Image risk = 0.2 × (critical × 10 + high × 5 + medium × 2 + low × 0.5) per image, clamped to 0–100, where critical and high include CVEs inherited from the base image.
- perImageCritical
- Base image criticals plus application-layer criticals
- weightedPerImage
- Severity-weighted CVE load for one image
- imageRiskScore
- 0–100 risk for a representative image
Base image inheritance
Fleet critical instances = base image criticals × images on that base + application criticals × all images. Rebuilding on a patched base removes the first term in one change.
- inheritedCritical
- Critical CVE instances that came from the base image
- criticalsFixedByBaseBump
- Instances a single base image update clears
- inheritedShare
- Inherited instances ÷ all fleet critical instances × 100
Frequently Asked Questions
How is Container Image Vulnerability calculated?
Image risk = 0.2 × (critical × 10 + high × 5 + medium × 2 + low × 0.5) per image, clamped to 0–100, where critical and high include CVEs inherited from the base image. A container image inherits every vulnerability in its base layers, so one unpatched base image multiplies across every image built on it. Separating inherited from application-layer CVEs turns a fleet of thousands of findings into two numbers: the ones a base image bump fixes and the ones that need an actual code or dependency change.
Why does Container Image Vulnerability matter?
Scanner output looks like an unwinnable backlog until you notice that the same six base-image criticals account for two thirds of it, and one rebuild closes them everywhere at once.
What values do I need to enter?
This calculator takes 9 inputs: Images in the registry, Images built on the shared base image, Critical CVEs in the base image, High CVEs in the base image, Critical CVEs added by application layers, High CVEs added by application layers, Medium CVEs per image, Low CVEs per image, CVEs with a fix available. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Should I chase every CVE in an image?
No. Prioritise by fixability, reachability and severity in that order. A critical CVE in a library your code never loads is not urgent; a high CVE in your HTTP parser is. Distroless or minimal base images reduce the count dramatically simply by removing packages you never used.
How often should base images be rebuilt?
Weekly, on a schedule, with no human in the loop. CVE age is the metric that matters, and a scheduled rebuild keeps it bounded automatically. Chasing individual advisories with manual rebuilds always loses to the rate at which advisories are published.
You might also need
- Container Escape Risk CalculatorCommonly used together
- Runtime Security CalculatorCommonly used together
- Supply Chain Security CalculatorCommonly used together
- Cloud IAM Risk CalculatorAlso in Cloud Security
- Cloud Security Health Score CalculatorAlso in Cloud Security
- Secrets Rotation CalculatorAlso in Cloud Security