services / Google Cloud / Kubernetes Engine Nodes

Nodes are physical or virtual machines that serve as a worker in the cluster. Nodes provide the underlying pool of CPU, memory, storage, and network connectivity resources for running containers and other tasks assigned by the control plane.

Kubernetes Engine can be configured in multiple ways, and the configuration has a significant impact on Node security. In general, nodes should not be publicly accessible, block ssh access if possible (already enforced in AutoPilot mode), isolation between containers running on the same node, isolation between the host operating system on the node and the workload running inside a container, performing timely upgrades of the node OS, Kubernetes, and the container runtime.


container.​nodes.​proxy

This permission allows calling the `api/v1/nodes/{node}/proxy/{path?}` endpoint with any HTTP method, which executes the request directly against the kubelet API on the kubelet running on the node, without further authorization checks. It is theoretically possible to call other endpoints of the kubelet API, such as `/exec` `/portForward`, that allow reading the node service account token to act as the service account, or executing code on the node.

Risks

Scope: CRITICAL

This privilege may grant access to sensitive data from a significant fraction of organizational functions, allow interruption of critical organizational services, or its exploit could lead to significant privilege escalation.

Links

  • https:​/​/​kubernetes.​io/​docs/​concepts/​architecture/​nodes/​
  • https:​/​/​cloud.​google.​com/​kubernetes-​engine/​docs/​concepts/​security-​overview
  • https:​/​/​www.​deepnetwork.​com/​blog/​2020/​01/​13/​kubelet-​api.​html
  • https:​/​/​blog.​aquasec.​com/​privilege-​escalation-​kubernetes-​rbac
  • Contributed by P0 Security

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