Safeguard
Security Guides•

How do you count vulnerabilities in containers that live for hours?

Count findings per image and per service, not per running container. How to avoid double counting and measure exposure time for short lived workloads.

Safeguard Security Team
3 min read

Count vulnerabilities per image and per service, not per running container. Short lived containers start and stop constantly, so counting instances inflates totals and makes the number swing with traffic. Measure the image that defines them, and how long each vulnerable image version ran in production.

Why counting instances fails

If one image with 12 findings runs as 50 replicas at noon and 5 replicas at midnight, an instance based count reports 600, then 60. Nothing changed in risk. The count moved with autoscaling. Reports built this way look dramatic and tell leaders nothing.

The stable unit is the image digest, which identifies exact content. One digest has one set of findings, regardless of replicas.

What to count instead

UnitWhy
Image digestStable and unique
ServiceThe owner level for fixes
Unique CVE per serviceRemoves duplicates across images and layers
Exposure timeHow long each vulnerable digest ran

Report unique CVEs per service for the open list, and use exposure time to show duration.

Measure exposure time

  1. Record deployment events with the digest and timestamps for start and stop.
  2. Join each digest with its findings at the time of deployment and with later findings from new disclosures.
  3. For each finding, compute how long a vulnerable digest was running in production.
  4. Report the total and the longest for known exploited items.

This produces an honest answer to "how long were we exposed?" without depending on instance counts.

Handle new disclosures

An image built last week can be affected by a CVE published today. Because containers are replaced often, the fix for this case is usually a rebuild and redeploy, not a patch in place. Track the time between disclosure and the first deployment of a fixed digest. That is the remediation time for container workloads.

Common traps

  • Scanning only at build time. Findings appear after the build. Rescan running images against fresh data.
  • Counting stopped containers. Remove digests that no longer run from the open list.
  • Shared base layers. One base layer issue shows up in many services. Group by layer to find the single change that closes many findings.
  • Unlabeled image tags. Tags move. Use digests for the join.

Present it to leaders

One number per service for unique open CVEs, one for oldest exposure time, and a short note naming shared causes such as a base image. Ask for the one upgrade that clears the most.

Where Safeguard fits

Safeguard can help with the inputs behind this. It runs SBOM and dependency scanning, reachability analysis to separate reachable findings from the rest, and policies and gates that you set. You can try a free scan at gold.safeguard.sh/scan.

Try it yourself

Click through it at your own pace, or open it full screen.

Notice how monitoring keeps checking after a build, which short lived workloads need.

Quick check

Do we still scan images at build time?

Yes, to catch issues before release. Add rescans of running digests since new CVEs appear after the build.

How do we find shared causes?

Group findings by base image and layer. A single base update often clears findings across many services.

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.