CertGrid CertGrid
Hands-on Lab·Kubernetes and Cloud Native Security Associate

Compromised Container Blast Radius

Assume the application is already owned - a dependency, an upload handler, an unauthenticated admin path - and ask what the attacker now has. On a default cluster the answer is root, a bounded capability set, and a credential nobody chose to give them.

Kubernetes Threat Model Guide 28 of 42 Intermediate

Written against the versions above. `CapEff` is read from `/proc/1/status` and reflects containerd's default capability set, which does not include `CAP_SYS_ADMIN`. Containers run as root unless the image or the Pod spec says otherwise.

The cka5001 cluster: one control plane and 3 schedulable workers, on Cilium.
Server NameIP AddressOSRolesCPURAMHDD
CKA5001192.168.0.41Ubuntu 26.04 LTSControl Plane Node (tainted NoSchedule)2 Core4 GB50 GB
CKA5001-NODE01192.168.0.42Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB
CKA5001-NODE02192.168.0.43Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB
CKA5001-NODE03192.168.0.44Ubuntu 26.04 LTSWorker Node2 Core4 GB50 GB

Before you start

  1. The starting position: root, and a credential you did not ask for

  2. Root in the container is not root on the node

  3. What the token is allowed to do

  4. Using it, and reaching the neighbour

  5. The mitigation you can see

Official sources