services / Google Cloud / Kubernetes Engine Pods

A Kubernetes Pod is a logical host that encapsulates one or more Containers. It is the smallest and most basic unit of deployment. Containers can communicate with each other via localhost. Pod lifecycle is typically managed by a higher level controller, such as a Deployment, StatefulSet, or DaemonSet.

The risks associated with Pods is similar to Deployments, StatefulSets, and DaemonSets. Pods consume CPU, memory, and network resources of the cluster, thus they are susceptible to exhaustion attacks. Containers inside Pods run a specific image, and may lead to arbitrary code execution in the cluster if an attacker is able to run their image. Pods also need access to other resources within the cluster, and outside the cluster, often using other services of the cloud provider. In order to do so, Pods have service account credentials, which, if leaked, allow one to move laterally by authenticating as the service account.


container.​pods.​create

It is possible to create standalone pods not managed by a Deployment or other controller in Kubernetes. This action bears the risk of pulling in an arbitrary image (if the cluster is open to the internet) to hijack resources, or to move laterally by assuming the privileges of the pod's or node's service account. It also drains the cluster's limited resource pool.

Risks

Scope: HIGH

This privilege may grant access to sensitive data from a single organizational function, or allow interruption of a service supporting a single organizational function.

Contributed by P0 Security

© 2023–present P0 Security and contributors to the IAM Privilege Catalog