Kubernetes Config Connector Misconfiguration Can Grant Namespace Users GCP Organization Ownership

Summary
A user able to create IAMPolicyMember resources in a KCC-managed namespace may exploit KCC’s broadly privileged service account to grant themselves Google Cloud organization-level access, without cloud credentials.
Key points
- KCC uses its own Google Cloud service account to process resource requests, so Google Cloud IAM sees KCC—not the Kubernetes user who initiated them.
- A user with permission to create IAMPolicyMember resources in a watched namespace may use KCC’s authority to grant themselves roles/owner at the organization level.
- The article calls this ConfigConfusion, a confused deputy problem discovered by security researcher Justin O’Leary.
- Google says KCC is working as designed; the risk depends on administrators granting KCC broad cloud permissions while allowing users to submit powerful IAM resources.
- Mitigations include using namespaced mode and separately scoped service accounts, narrowing KCC’s IAM roles, restricting IAM resource creation, and monitoring organization-level changes.
Article Details
- Attack Vectors
- A user with permission to create IAMPolicyMember resources in a KCC-managed Kubernetes namespace submits a resource that grants their service account a Google Cloud role the KCC service account can assign.
- KCC processes the resource using its own service account. If that account has organization-level permissions, the user can escalate to organization ownership without Google Cloud credentials of their own.
- Defensive Notes
- Use KCC namespaced mode with a separately scoped Google service account for each namespace.
- Review KCC's IAM roles at the project, folder, and organization levels; remove broad roles such as roles/owner and roles/resourcemanager.organizationAdmin unless strictly required.
- Restrict permission to create IAMPolicyMember, IAMPolicy, and IAMPartialPolicy resources to approved platform or infrastructure teams.
- Monitor folder- and organization-level IAM changes made by KCC, particularly changes outside the approved GitOps workflow.
MITRE ATT&CK
People
Vendors
Products
Amazon S3IAM, Amazon S3, and Amazon EC2 each have their own controller, with an IAM role scoped to that service.AWS Controllers for KubernetesAWS Controllers for Kubernetes (ACK) separates controllers by service.AWS EC2IAM, Amazon S3, and Amazon EC2 each have their own controller, with an IAM role scoped to that service.Azure Service Operator v2Azure Service Operator v2 allows each Kubernetes namespace to use a separate managed identity.Google CloudIn Google Cloud, that often means a service account key: a JSON file that proves who they are and what they're allowed to do.Google Kubernetes Config ConnectorGoogle's version of this system is Google Kubernetes Config Connector (KCC), which typically runs inside a Google Kubernetes Engine (GKE) cluster.Google Kubernetes EngineGoogle's version of this system is Google Kubernetes Config Connector (KCC), which typically runs inside a Google Kubernetes Engine (GKE) cluster.KubernetesHow One Kubernetes YAML Can Hand Over a GCP Organization