GKE Anonymous Pod Create/Update/Patch
Detects create, update, or patch of pods by an unauthenticated anonymous GKE identity. Anonymous pod mutation is a critical misconfiguration signal and a common path for unauthenticated attackers to deploy workloads or maintain access. Includes "system:anonymous" / "system:unauthenticated" and GKE audit rows with a missing principal (seen on unauthenticated Unauthorized/forbidden pod writes).
Elastic rule (View on GitHub)
1[metadata]
2creation_date = "2026/07/16"
3integration = ["gcp"]
4maturity = "production"
5updated_date = "2026/07/16"
6
7[rule]
8author = ["Elastic"]
9description = """
10Detects create, update, or patch of pods by an unauthenticated anonymous GKE identity. Anonymous pod mutation is a
11critical misconfiguration signal and a common path for unauthenticated attackers to deploy workloads or maintain access.
12Includes "system:anonymous" / "system:unauthenticated" and GKE audit rows with a missing principal (seen on
13unauthenticated Unauthorized/forbidden pod writes).
14"""
15false_positives = [
16 """
17 Anonymous pod writes should be rare. If observed from expected automation, anonymous authentication or RBAC for
18 system:anonymous is likely misconfigured and should be remediated rather than broadly excluded.
19 """,
20]
21from = "now-6m"
22index = ["logs-gcp.audit-*"]
23language = "kuery"
24license = "Elastic License v2"
25name = "GKE Anonymous Pod Create/Update/Patch"
26note = """## Triage and analysis
27
28### Investigating GKE Anonymous Pod Create/Update/Patch
29
30Anonymous identities creating or mutating pods indicates the API server accepts unauthenticated workload changes.
31Failed unauthenticated creates may appear with an empty `client.user.email` and `Unauthorized` / forbidden status.
32
33### Investigation steps
34
35- Review `client.user.email`, `event.action`, `event.outcome`, `orchestrator.resource.name`, `orchestrator.namespace`,
36 and `source.ip`.
37- Inspect the pod image, command, and volume mounts for credential theft or reverse shells.
38- Check whether anonymous authentication is enabled and remove RBAC grants to `system:anonymous`.
39
40### False positives
41
42- Essentially none in production; treat as high-priority misconfiguration until proven otherwise.
43
44"""
45references = [
46 "https://kubernetes.io/docs/reference/access-authn-authz/authentication/#anonymous-requests",
47 "https://cloud.google.com/kubernetes-engine/docs/how-to/audit-logging",
48]
49risk_score = 73
50rule_id = "92980750-3373-4f0c-aebd-c2a8563d8e8a"
51severity = "high"
52tags = [
53 "Domain: Cloud",
54 "Domain: Kubernetes",
55 "Data Source: GCP",
56 "Data Source: Google Cloud Platform",
57 "Use Case: Threat Detection",
58 "Tactic: Execution",
59 "Resources: Investigation Guide",
60]
61timestamp_override = "event.ingested"
62type = "query"
63setup = "The GCP Fleet integration with GKE audit logs enabled is required to be compatible with this rule."
64
65query = '''
66data_stream.dataset:gcp.audit and service.name:k8s.io and client.user.email:("system:anonymous" or "system:unauthenticated" or not *) and event.action:(io.k8s.core.v1.pods.create or io.k8s.core.v1.pods.patch or io.k8s.core.v1.pods.update)
67'''
68
69[[rule.threat]]
70framework = "MITRE ATT&CK"
71
72[[rule.threat.technique]]
73id = "T1610"
74name = "Deploy Container"
75reference = "https://attack.mitre.org/techniques/T1610/"
76
77[rule.threat.tactic]
78id = "TA0002"
79name = "Execution"
80reference = "https://attack.mitre.org/tactics/TA0002/"
81
82[rule.investigation_fields]
83field_names = [
84 "@timestamp",
85 "client.user.email",
86 "source.ip",
87 "user_agent.original",
88 "event.action",
89 "event.outcome",
90 "gcp.audit.resource_name",
91 "orchestrator.resource.name",
92 "orchestrator.namespace",
93]
Triage and analysis
Investigating GKE Anonymous Pod Create/Update/Patch
Anonymous identities creating or mutating pods indicates the API server accepts unauthenticated workload changes.
Failed unauthenticated creates may appear with an empty client.user.email and Unauthorized / forbidden status.
Investigation steps
- Review
client.user.email,event.action,event.outcome,orchestrator.resource.name,orchestrator.namespace, andsource.ip. - Inspect the pod image, command, and volume mounts for credential theft or reverse shells.
- Check whether anonymous authentication is enabled and remove RBAC grants to
system:anonymous.
False positives
- Essentially none in production; treat as high-priority misconfiguration until proven otherwise.
References
Related rules
- GKE Forbidden Creation Request
- GKE Forbidden Request from Unusual User Agent
- GKE Pod Exec Cloud Instance Metadata Access
- GKE Pod Exec Potential Reverse Shell
- GKE Pod Exec Sensitive File or Credential Path Access