GKE Certificate Signing Request Self-Approved
Detects when the same non-system GKE identity creates a CertificateSigningRequest (CSR) and then approves that same CSR within five minutes, consistent with self-approval abuse. Attackers who gain CSR create and…
Description
Detects when the same non-system GKE identity creates a CertificateSigningRequest (CSR) and then approves that same CSR within five minutes, consistent with self-approval abuse. Attackers who gain CSR create and approval RBAC can submit a certificate request and approve it themselves to obtain a long-lived client certificate without involving cluster operators, a pattern documented in Kubernetes persistence research and adversary emulation.
Detection logic
Its licence does not clear it for publishing here
Sunturai publishes a detection's own text where the licence it arrived under has been reviewed and permits it, and Elastic License 2.0 has not. The query as its source wrote it, its canonical form and the hash that pins this revision are in the workspace record.
Detection requirements
- Platform
- ContainersESXiIaaSIdentity ProviderLinuxmacOSNetwork DevicesOffice SuiteSaaSWindows
The rule states no platform. This is derived from the ATT&CK technique it maps to.
Known benign triggers
- Automation that both submits and approves CSRs in one workflow may trigger this rule. Baseline cert-manager or internal PKI pipelines and tune exclusions for known service accounts.
MITRE ATT&CK mappings
0 exclusive techniques.This is coverage no other published rule has; it is not this rule's total technique count.
References
| Reference | Cited by |
|---|---|
| kubernetes.io/docs/concepts/security/rbac-good-practices/ | 4 |
| kubernetes.io/docs/reference/access-authn-authz/certificate-signing-requests/ | 6 |
| raesene.github.io/blog/2022/12/21/Kubernetes-persistence-with-Tocan-and-Teisteanas/ | 4 |
| stratus-red-team.cloud/attack-techniques/kubernetes/k8s.persistence.create-client-certificate/ | 4 |
| www.aquasec.com/blog/kubernetes-rbac-privilige-escalation/ | 4 |
From the source
- At source
- Open at source
- Upstream identifier
- e155e658-3dcd-4d27-a4e5-1d8da6704b0e
- Tagged by the source as
- Data Source: GCPData Source: GCP Audit LogsData Source: Google Cloud PlatformDomain: CloudDomain: ContainersDomain: KubernetesNoise: UnknownPerformance: FastPlatform: GCPPlatform: KubernetesResources: Investigation GuideRule Type: ES|QLTactic: PersistenceTactic: Privilege EscalationUse Case: Threat Detection
Licence
- Published under
- Elastic License 2.0Read the licence
- Attribution
- Required
Authorship
- Written by
- Published
- Sep 20, 2026
- Version
- 3