Why containers need their own review
Containers make deployment fast and repeatable, and they repeat mistakes just as reliably. A secret baked into an image, a shell and network tools left in a production build, or a container running with too much privilege, ships to every environment that runs it.
An image scan only tells half the story. How a container behaves once it's running in its pod, with its mounts, its service account and its neighbours, is what decides whether one compromised application stays contained.
What we look at
Image contents
Base images, installed packages, known vulnerabilities, secrets left in image layers, and tooling such as shells, network utilities and SUID binaries an attacker could use.
Build hardening
Dockerfiles and build processes checked for root users, bloated base images and whether distroless or Chainguard images could be used instead.
Registry security
Who can push and pull images, whether images are signed, and whether registries are exposed.
The running container in its pod
We test from inside the running container: its security context, mounted volumes and service account token, and what it can see and reach from where it sits.
Exposed services
Ports, debug endpoints and management interfaces listening inside the container, and who can reach them.
Container escape
Privileged mode, capabilities, host mounts and runtime sockets tested for a route out to the node or into other containers.
How we test it
- 01
Review the images
We analyse your images and build files for vulnerabilities, secrets, unnecessary tooling and hardening gaps.
- 02
Get inside the pod
Starting from a shell in a running container, we see the workload as an attacker would after compromising the application.
- 03
Test the boundaries
We test whether that foothold can escalate, escape to the node, or reach other pods, services and secrets.
Common weaknesses
Every finding comes with evidence, a risk rating and practical remediation guidance, and a free retest once it's fixed.
Tools left for attackers
Shells, network utilities and SUID binaries. Attackers love living off the land: don't hand them the tools.
Full OS images instead of distroless
Every package the app doesn't need is more attack surface and more to patch.
Outdated base images
Images built on old base layers carrying known, exploitable vulnerabilities.
Exposed services
Debug ports, admin consoles, metrics endpoints or SSH left listening in the container and reachable from other pods or the network.
Secrets baked into images
Credentials and keys left in image layers, readable by anyone who can pull the image.
Privileged containers and mounted runtime sockets
Root, privileged mode or a mounted Docker socket: each one turns a compromised container into a compromised node.
Build, package, run
Pipelines, images and clusters are one chain, and attackers move along it. Test one link, or the whole path from commit to running workload.
- Build
CI/CD pipeline review
Where code becomes an image. We check who can change what gets built, signed and pushed, and what the pipeline can reach in production.
Learn more - Package
Container security review
What's inside each image and how it behaves running in its pod: the tooling, privileges and exposed services an attacker would inherit.
You're on this page - Run
Kubernetes security testing
The cluster that schedules and connects your pods: identities, network policy, secrets and the control plane around every workload.
Learn more
Do you test the running container or just the image?
Both. We review the image at rest, then test the running container from inside its pod, because privileges, mounts, tokens and network reach only show up at runtime.
How is this different from Kubernetes testing?
A container review goes deep on individual workloads: the image, and the running container in its pod. Kubernetes testing looks at the cluster around them: RBAC, network policy, secrets and the control plane.
Should we test this alongside Kubernetes and our CI/CD pipeline?
Ideally, yes. Pipelines, images and clusters are one chain, and attackers move along it: a compromised pipeline ships a backdoored image, and a weak image hands an attacker a foothold in the cluster. Testing all three together follows the whole path from commit to running workload.
Isn't an image scanner enough?
A scanner finds known vulnerable packages. It won't tell you what an attacker can do with the tooling left in the image, whether a running container can escape its pod, or how the pieces combine into an attack path.
Find out how far a compromised container could get
Tell us what you need tested and we'll give you a fixed-price quote and a clear scope, with a free retest included.