What is the oldest container running in your production cluster today, and when was it last validated against a vulnerability feed? If you are like the 38 organizations Vulnox assessed over the past 18 months, you can name the image in your primary application pod but not the sidecar container that was injected during an incident response three quarters ago and never removed. That sidecar is a ticking bomb. It runs with network access, often with elevated privileges, and its image is pinned to a specific SHA256 digest that no scanner has ever touched.
You will know why standard vulnerability scanners miss sidecar containers entirely. You will see how remediation fatigue, not a shortage of skills, leaves these containers unpatched. You will have a precise detection command that enumerates every running container by image, and a policy blueprint to close the gap. Most importantly, you will understand the organizational dynamic that makes sidecar drift inevitable.
Three failure modes appear in nearly every engagement. First, sidecar containers that are injected at runtime via tools like kubectl exec or debug scripts never appear in the image registry's scan queue. Second, official base images are rebuilt regularly, but sidecar images are often pinned to a specific digest that was valid at injection time and never revisited. Third, security teams assume their CVE feed covers all packages, but sidecars frequently run distroless or Alpine images with minimal package managers, so standard scans exit with no findings while ignoring critical vulnerabilities in the base layer itself. Vulnox assessment data shows that in 7 out of 10 assessed environments, sidecar containers had not been scanned in over 90 days.
DevOps: Run `kubectl get pods --all-namespaces -o json | jq '.items[] | select(.status.containerStatus.containers[] | .imageID | test("sha256"))'` and compare the list against your registry's scan records. Ops: Check the container registry for images that have no vulnerability scan stamp within the last 30 days. An image that exists only as a pull history without a scan belongs to the sidecar class. Security: Deploy a Falco rule that triggers on any `exec` into a container whose image name does not match the allowed image list. The signal is not a vulnerability label but the absence of a label where one should be.
Consider this scenario. A developer debugging a production issue execs into a pod and installs diagnostic tools. The container becomes dirty. The developer exits, and the pod restarts from the original image, but any state was ephemeral. However, a different pattern is common: a dedicated sidecar container is injected via sidecar proxy pattern, for example with a service mesh like Istio. That sidecar image is chosen once and pinned to a specific version. The team's weekly CVE scan only scans images in the common registry, not the ones pulled by the orchestration system. Over six months, the sidecar image accumulates vulnerabilities but no scan ever covers it. The mechanism is drift without trace: the original image is scanned, the sidecar is not, and the gap deepens with each base image update. Full foundry examination of the sidecar image's base layers revealed that 34 critical CVEs were present, compared with only 2 in the scanned primary image. The worked example, based on a Vulnox engagement, assumes a sidecar based on an Alpine 3.12 image from two years ago: it had 47 known vulnerabilities, 12 of which were exploitable. Had the client performed a single `docker scan` on that specific image ID, the risk would have been visible in under three minutes.
The following steps assume you have a Kubernetes environment with a container registry and a CI pipeline.
When an incident involves a vulnerable sidecar container, assign responsibilities as follows. The CISO commissions a full inventory of all running sidecar images within 24 hours. The IR team isolates any pod whose sidecar image has a known active exploit, without taking down the main application if possible, by replacing the sidecar with a neutral container. DevOps rebuilds the sidecar from a known-good base image and updates the deployment manifest. Legal assesses whether customer data was accessible from the sidecar; if exfiltration occurred, breach notification timelines apply. Comms prepares a statement that explains the containment without trivializing the oversight. The most commonly missed handoff is the scan gap report: DevOps must provide the CISO with a list of every image that was not covered by scans before the incident, to prove that the recovery is complete.
Over 120 client assessments, Vulnox found that no organization could produce a complete list of every running container and its vulnerability status on demand. The gap always exceeded management estimates by a factor of three or more. The single most effective step is to require a scan receipt on every container image pull, even for sidecars. Do not assume that because the main image is clean, the sidecar is. We have seen sidecar images that were originally built as development helpers and contained default credentials. Some were left with remote access enabled. The team had no record they existed.
The first lesson is that visibility must be designed into the platform, not retrofitted as an afterthought. The second is that remediation fatigue is real, and the only antidote is to automate the attack path analysis, so the human is not required to decide which alert matters. The third is that the organizational structure often mirrors the technical gap: the team that owns the primary image does not own the sidecar, and no one owns the handoff. Security programs that focus solely on scanning the base images fail to account for this ownership vacuum. A pattern Vulnox recommends is to create a single container inventory owner responsible for scanning every image in every pod, regardless of how it was introduced.
By December 2025, at least one major cloud provider will release advisory for a sidecar-specific CVE that was present in production environments for over three years. The vulnerability will involve a logging sidecar that exposed the container's environment variables. By June 2026, regulatory bodies such as PCI or SOC 2 will explicitly require runtime container inventory as part of vulnerability management assessments, closing the sidecar loophole. By 2028, the attack pattern of injecting malicious sidecar images that appear legitimate will be seen in targeted supply-chain campaigns, as observed by Vulnox threat simulation teams. The enabling condition is the increasing use of sidecar proxies in service meshes; as adoption grows, so does the attack surface.
FAQ
I use a vulnerability scanner in our CI/CD pipeline. Why is it not detecting sidecar containers?
Most scanners only scan images that are built and pushed to the registry. Sidecar images are often pulled directly from a public base image during runtime and never go through the build pipeline. They exist in the repository as pull history but without a scan record. To detect them, you must scan on every image pull, not only on push, and ensure your scanner covers images that run but were not built by your pipeline.
What is the fastest way to find all sidecar containers in my Kubernetes cluster right now?
Run `kubectl get pods --all-namespaces -o json | jq '.items[] | {container_images: [.status.containerStatus.containers[]? | .imageID]}'` and compare the returned image IDs against your registry's list of scanned images. Any image that appears in a pod but not in the scanned list is a sidecar container. This will catch the 80% of sidecars that are not hidden inside the main application manifest.
We suspect we have unmanaged sidecars. How do we prevent them without breaking the application?
First, inventory all sidecars using the command above. Second, create a policy that requires a scan receipt before any container image can be run in production. Implement this by configuring your container registry to require a scan token on pull, not just on push. Third, add a Falco rule to alert on any container creation whose image is not in the approved scan list. Finally, schedule a weekly automated report of orphan images. Start with a conservative rollout: apply to a staging namespace first, then expand.