MutatingWebhookConfigurations
| Operation | Description | Sample | Rule |
|---|---|---|---|
| get-mutatingwebhookconfigurations | Y | N | |
| list-mutatingwebhookconfigurations | Y | N | |
| watch-mutatingwebhookconfigurations | Y | N | |
| create-mutatingwebhookconfigurations | MutatingWebhookConfiguration created (admission controller modification; persistence or defense evasion). | Y | Y |
| update-mutatingwebhookconfigurations | Modifies an existing MutatingWebhookConfiguration, e.g. its clientConfig.url or failurePolicy. Sigma and Elastic both track update as an admission-controller change. | Y | Y |
| patch-mutatingwebhookconfigurations | Same admission-controller change as update, via patch. Sigma and Elastic both track this verb on mutating and validating webhook configurations together. | Y | Y |
| delete-mutatingwebhookconfigurations | Removes a MutatingWebhookConfiguration, disabling its request rewriting. Sigma and Elastic's admission-controller rules both track deletion this way. | Y | Y |
| deletecollection-mutatingwebhookconfigurations | Y | N | |
| any-mutatingwebhookconfigurations | Synthetic aggregation for rules that filter the mutatingwebhookconfigurations resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone. | N | N |
get mutatingwebhookconfigurations
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Metadata",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/dw-harn-mutatingwebhookconfigurations",
"verb": "get",
"user": {
"username": "kubernetes-admin",
"groups": [
"kubeadm:cluster-admins",
"system:authenticated"
],
"extra": {
"authentication.kubernetes.io/credential-id": [
"X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
]
}
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
"objectRef": {
"resource": "mutatingwebhookconfigurations",
"name": "dw-harn-mutatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T04:48:38.265974Z",
"stageTimestamp": "2026-07-02T04:48:38.267360Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
}
}
References #
list mutatingwebhookconfigurations
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Metadata",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations?limit=500&timeout=3s",
"verb": "list",
"user": {
"username": "kubernetes-admin",
"groups": [
"kubeadm:cluster-admins",
"system:authenticated"
],
"extra": {
"authentication.kubernetes.io/credential-id": [
"X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
]
}
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
"objectRef": {
"resource": "mutatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T04:48:38.387014Z",
"stageTimestamp": "2026-07-02T04:48:38.388598Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
}
}
References #
watch mutatingwebhookconfigurations
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "Metadata",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations?resourceVersion=1734&timeout=3s&watch=true",
"verb": "watch",
"user": {
"username": "kubernetes-admin",
"groups": [
"kubeadm:cluster-admins",
"system:authenticated"
],
"extra": {
"authentication.kubernetes.io/credential-id": [
"X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
]
}
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
"objectRef": {
"resource": "mutatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T04:48:38.389829Z",
"stageTimestamp": "2026-07-02T04:48:41.390121Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
}
}
References #
create mutatingwebhookconfigurations
#Description
MutatingWebhookConfiguration created (admission controller modification; persistence or defense evasion).
Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations?fieldManager=kubectl-create&fieldValidation=Strict",
"verb": "create",
"user": {
"username": "kubernetes-admin",
"groups": [
"kubeadm:cluster-admins",
"system:authenticated"
],
"extra": {
"authentication.kubernetes.io/credential-id": [
"X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
]
}
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
"objectRef": {
"resource": "mutatingwebhookconfigurations",
"name": "dw-harn-mutatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 201
},
"requestObject": {
"kind": "MutatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-mutatingwebhookconfigurations"
},
"webhooks": [
{
"name": "dw-harn.example.com",
"clientConfig": {
"url": "https://127.0.0.1:1/hook"
},
"rules": [
{
"operations": [
"CREATE"
],
"apiGroups": [
""
],
"apiVersions": [
"v1"
],
"resources": [
"pods"
],
"scope": "*"
}
],
"failurePolicy": "Fail",
"matchPolicy": "Equivalent",
"namespaceSelector": {},
"objectSelector": {},
"sideEffects": "None",
"timeoutSeconds": 10,
"admissionReviewVersions": [
"v1"
],
"reinvocationPolicy": "Never"
}
]
},
"responseObject": {
"kind": "MutatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-mutatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "1734",
"generation": 1,
"creationTimestamp": "2026-07-02T04:48:38Z"
},
"webhooks": [
{
"name": "dw-harn.example.com",
"clientConfig": {
"url": "https://127.0.0.1:1/hook"
},
"rules": [
{
"operations": [
"CREATE"
],
"apiGroups": [
""
],
"apiVersions": [
"v1"
],
"resources": [
"pods"
],
"scope": "*"
}
],
"failurePolicy": "Fail",
"matchPolicy": "Equivalent",
"namespaceSelector": {},
"objectSelector": {},
"sideEffects": "None",
"timeoutSeconds": 10,
"admissionReviewVersions": [
"v1"
],
"reinvocationPolicy": "Never"
}
]
},
"requestReceivedTimestamp": "2026-07-02T04:48:38.203171Z",
"stageTimestamp": "2026-07-02T04:48:38.208032Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
}
}
Common Indicators #
Field/value combinations most frequently checked by detection rules targeting this event, derived from cross-vendor predicate analysis.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
verb | eq | create | 3 rules | panther, sigma |
verb (sigma rule field) | eq | delete | 1 rule | sigma |
verb (sigma rule field) | eq | patch | 1 rule | sigma |
verb (sigma rule field) | eq | replace | 1 rule | sigma |
verb (sigma rule field) | eq | update | 1 rule | sigma |
username (panther rule field) | contains | serviceaccount | 1 rule | panther |
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries → Review webhook name, actor, and clientConfig destination in The GCP Fleet integration with GKE audit logs enabled is required to be compatible with this rule. Admission webhooks can mutate or validate resources before they are persisted. A malicious webhook can inject sidecars, alter securityContext, block defensive workloads, or exfiltrate pod specs. This rule alerts on allowed changes to MutatingWebhookConfiguration and ValidatingWebhookConfiguration objects by identities outside common system patterns.Sigma #
T1078, T1552, T1552.007↳ also matches update-mutatingwebhookconfigurations: update mutatingwebhookconfigurations, patch-mutatingwebhookconfigurations: patch mutatingwebhookconfigurations, delete-mutatingwebhookconfigurations: delete mutatingwebhookconfigurations Elastic #
T1546, T1562↳ also matches update-mutatingwebhookconfigurations: update mutatingwebhookconfigurations, patch-mutatingwebhookconfigurations: patch mutatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating GKE Admission Webhook Created or Modified#
gcp.audit.request.Investigation steps#
user.email, event.action, and webhook resource name.False positives#
Setup#
T1546, T1562↳ also matches update-mutatingwebhookconfigurations: update mutatingwebhookconfigurations, patch-mutatingwebhookconfigurations: patch mutatingwebhookconfigurations, delete-mutatingwebhookconfigurations: delete mutatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating Kubernetes Admission Webhook Created or Modified#
Possible investigation steps#
False positive analysis#
Response and remediation#
Panther #
T1530, T1546, T1552
References #
update mutatingwebhookconfigurations
#Description
Modifies an existing MutatingWebhookConfiguration, e.g. its clientConfig.url or failurePolicy. Sigma and Elastic both track update as an admission-controller change.
Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/dw-harn-mutatingwebhookconfigurations?fieldManager=kubectl-replace&fieldValidation=Strict",
"verb": "update",
"user": {
"username": "kubernetes-admin",
"groups": [
"kubeadm:cluster-admins",
"system:authenticated"
],
"extra": {
"authentication.kubernetes.io/credential-id": [
"X509SHA256=4cf95d11cbd90036bab41cdc6b88cc8f91550e9135ed4bb61495b02f647812ff"
]
}
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
"objectRef": {
"resource": "mutatingwebhookconfigurations",
"name": "dw-harn-mutatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1",
"resourceVersion": "933"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestObject": {
"kind": "MutatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-mutatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "933",
"generation": 1,
"creationTimestamp": "2026-07-02T21:32:17Z",
"labels": {
"dw-harn-patched": "1"
}
},
"webhooks": [
{
"name": "dw-harn.example.com",
"clientConfig": {
"url": "https://127.0.0.1:1/hook"
},
"rules": [
{
"operations": [
"CREATE"
],
"apiGroups": [
""
],
"apiVersions": [
"v1"
],
"resources": [
"pods"
],
"scope": "*"
}
],
"failurePolicy": "Fail",
"matchPolicy": "Equivalent",
"namespaceSelector": {},
"objectSelector": {},
"sideEffects": "None",
"timeoutSeconds": 10,
"admissionReviewVersions": [
"v1"
],
"reinvocationPolicy": "Never"
}
]
},
"responseObject": {
"kind": "MutatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-mutatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "933",
"generation": 1,
"creationTimestamp": "2026-07-02T21:32:17Z",
"labels": {
"dw-harn-patched": "1"
}
},
"webhooks": [
{
"name": "dw-harn.example.com",
"clientConfig": {
"url": "https://127.0.0.1:1/hook"
},
"rules": [
{
"operations": [
"CREATE"
],
"apiGroups": [
""
],
"apiVersions": [
"v1"
],
"resources": [
"pods"
],
"scope": "*"
}
],
"failurePolicy": "Fail",
"matchPolicy": "Equivalent",
"namespaceSelector": {},
"objectSelector": {},
"sideEffects": "None",
"timeoutSeconds": 10,
"admissionReviewVersions": [
"v1"
],
"reinvocationPolicy": "Never"
}
]
},
"requestReceivedTimestamp": "2026-07-02T21:32:21.104964Z",
"stageTimestamp": "2026-07-02T21:32:21.107594Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
}
}
Common Indicators #
Field/value combinations most frequently checked by detection rules targeting this event, derived from cross-vendor predicate analysis.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
verb (sigma rule field) | eq | delete | 1 rule | sigma |
verb (sigma rule field) | eq | patch | 1 rule | sigma |
verb (sigma rule field) | eq | replace | 1 rule | sigma |
verb (sigma rule field) | eq | update | 1 rule | sigma |
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries → Review webhook name, actor, and clientConfig destination in The GCP Fleet integration with GKE audit logs enabled is required to be compatible with this rule. Admission webhooks can mutate or validate resources before they are persisted. A malicious webhook can inject sidecars, alter securityContext, block defensive workloads, or exfiltrate pod specs. This rule alerts on allowed changes to MutatingWebhookConfiguration and ValidatingWebhookConfiguration objects by identities outside common system patterns.Sigma #
T1078, T1552, T1552.007↳ also matches create-mutatingwebhookconfigurations: create mutatingwebhookconfigurations, patch-mutatingwebhookconfigurations: patch mutatingwebhookconfigurations, delete-mutatingwebhookconfigurations: delete mutatingwebhookconfigurations Elastic #
T1546, T1562↳ also matches create-mutatingwebhookconfigurations: create mutatingwebhookconfigurations, patch-mutatingwebhookconfigurations: patch mutatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating GKE Admission Webhook Created or Modified#
gcp.audit.request.Investigation steps#
user.email, event.action, and webhook resource name.False positives#
Setup#
T1546, T1562↳ also matches create-mutatingwebhookconfigurations: create mutatingwebhookconfigurations, patch-mutatingwebhookconfigurations: patch mutatingwebhookconfigurations, delete-mutatingwebhookconfigurations: delete mutatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating Kubernetes Admission Webhook Created or Modified#
Possible investigation steps#
False positive analysis#
Response and remediation#
References #
patch mutatingwebhookconfigurations
#Description
Same admission-controller change as update, via patch. Sigma and Elastic both track this verb on mutating and validating webhook configurations together.
Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/dw-harn-mutatingwebhookconfigurations?fieldManager=kubectl-patch",
"verb": "patch",
"user": {
"username": "kubernetes-admin",
"groups": [
"kubeadm:cluster-admins",
"system:authenticated"
],
"extra": {
"authentication.kubernetes.io/credential-id": [
"X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
]
}
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
"objectRef": {
"resource": "mutatingwebhookconfigurations",
"name": "dw-harn-mutatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestObject": {
"metadata": {
"labels": {
"dw-harn-patched": "1"
}
}
},
"responseObject": {
"kind": "MutatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-mutatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "1740",
"generation": 1,
"creationTimestamp": "2026-07-02T04:48:38Z",
"labels": {
"dw-harn-patched": "1"
}
},
"webhooks": [
{
"name": "dw-harn.example.com",
"clientConfig": {
"url": "https://127.0.0.1:1/hook"
},
"rules": [
{
"operations": [
"CREATE"
],
"apiGroups": [
""
],
"apiVersions": [
"v1"
],
"resources": [
"pods"
],
"scope": "*"
}
],
"failurePolicy": "Fail",
"matchPolicy": "Equivalent",
"namespaceSelector": {},
"objectSelector": {},
"sideEffects": "None",
"timeoutSeconds": 10,
"admissionReviewVersions": [
"v1"
],
"reinvocationPolicy": "Never"
}
]
},
"requestReceivedTimestamp": "2026-07-02T04:48:41.455737Z",
"stageTimestamp": "2026-07-02T04:48:41.460260Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
}
}
Common Indicators #
Field/value combinations most frequently checked by detection rules targeting this event, derived from cross-vendor predicate analysis.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
verb (sigma rule field) | eq | patch | 1 rule | sigma |
verb (sigma rule field) | eq | replace | 1 rule | sigma |
verb (sigma rule field) | eq | update | 1 rule | sigma |
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries → Review webhook name, actor, and clientConfig destination in The GCP Fleet integration with GKE audit logs enabled is required to be compatible with this rule. Admission webhooks can mutate or validate resources before they are persisted. A malicious webhook can inject sidecars, alter securityContext, block defensive workloads, or exfiltrate pod specs. This rule alerts on allowed changes to MutatingWebhookConfiguration and ValidatingWebhookConfiguration objects by identities outside common system patterns.Sigma #
T1078, T1552, T1552.007↳ also matches create-mutatingwebhookconfigurations: create mutatingwebhookconfigurations, update-mutatingwebhookconfigurations: update mutatingwebhookconfigurations, delete-mutatingwebhookconfigurations: delete mutatingwebhookconfigurations Elastic #
T1546, T1562↳ also matches create-mutatingwebhookconfigurations: create mutatingwebhookconfigurations, update-mutatingwebhookconfigurations: update mutatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating GKE Admission Webhook Created or Modified#
gcp.audit.request.Investigation steps#
user.email, event.action, and webhook resource name.False positives#
Setup#
T1546, T1562↳ also matches create-mutatingwebhookconfigurations: create mutatingwebhookconfigurations, update-mutatingwebhookconfigurations: update mutatingwebhookconfigurations, delete-mutatingwebhookconfigurations: delete mutatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating Kubernetes Admission Webhook Created or Modified#
Possible investigation steps#
False positive analysis#
Response and remediation#
References #
delete mutatingwebhookconfigurations
#Description
Removes a MutatingWebhookConfiguration, disabling its request rewriting. Sigma and Elastic's admission-controller rules both track deletion this way.
Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations/dw-harn-mutatingwebhookconfigurations",
"verb": "delete",
"user": {
"username": "kubernetes-admin",
"groups": [
"kubeadm:cluster-admins",
"system:authenticated"
],
"extra": {
"authentication.kubernetes.io/credential-id": [
"X509SHA256=9bb0383c49b319fbf6b5ed61ab944378956d4292c784d32244ce2fa4dd846a3c"
]
}
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
"objectRef": {
"resource": "mutatingwebhookconfigurations",
"name": "dw-harn-mutatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"status": "Success",
"details": {
"name": "dw-harn-mutatingwebhookconfigurations",
"group": "admissionregistration.k8s.io",
"kind": "mutatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000"
},
"code": 200
},
"requestObject": {
"kind": "DeleteOptions",
"apiVersion": "meta.k8s.io/__internal",
"propagationPolicy": "Background"
},
"responseObject": {
"kind": "Status",
"apiVersion": "v1",
"metadata": {},
"status": "Success",
"details": {
"name": "dw-harn-mutatingwebhookconfigurations",
"group": "admissionregistration.k8s.io",
"kind": "mutatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000"
}
},
"requestReceivedTimestamp": "2026-07-02T04:48:41.522879Z",
"stageTimestamp": "2026-07-02T04:48:41.526447Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
}
}
Common Indicators #
Field/value combinations most frequently checked by detection rules targeting this event, derived from cross-vendor predicate analysis.
| Field | Kind | Value | Rules | Vendors |
|---|---|---|---|---|
verb (sigma rule field) | eq | patch | 1 rule | sigma |
verb (sigma rule field) | eq | replace | 1 rule | sigma |
verb (sigma rule field) | eq | update | 1 rule | sigma |
Detection Rules #
Full rule details for this event, including ATT&CK technique mappings and native queries → Admission webhooks can mutate or validate resources before they are persisted. A malicious webhook can inject sidecars, alter securityContext, block defensive workloads, or exfiltrate pod specs. This rule alerts on allowed changes to MutatingWebhookConfiguration and ValidatingWebhookConfiguration objects by identities outside common system patterns.Sigma #
T1078, T1552, T1552.007↳ also matches create-mutatingwebhookconfigurations: create mutatingwebhookconfigurations, update-mutatingwebhookconfigurations: update mutatingwebhookconfigurations, patch-mutatingwebhookconfigurations: patch mutatingwebhookconfigurations Elastic #
T1546, T1562↳ also matches create-mutatingwebhookconfigurations: create mutatingwebhookconfigurations, update-mutatingwebhookconfigurations: update mutatingwebhookconfigurations, patch-mutatingwebhookconfigurations: patch mutatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating Kubernetes Admission Webhook Created or Modified#
Possible investigation steps#
False positive analysis#
Response and remediation#
References #
deletecollection mutatingwebhookconfigurations
#Example Audit Event #
{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"level": "RequestResponse",
"auditID": "00000000-0000-0000-0000-000000000000",
"stage": "ResponseComplete",
"requestURI": "/apis/admissionregistration.k8s.io/v1/mutatingwebhookconfigurations?labelSelector=dw-harn-patched",
"verb": "deletecollection",
"user": {
"username": "kubernetes-admin",
"groups": [
"kubeadm:cluster-admins",
"system:authenticated"
],
"extra": {
"authentication.kubernetes.io/credential-id": [
"X509SHA256=3ffde68ef687218e01296d94b0aa59c81cc98de2bd73ab70e21510c8cd4b9cec"
]
}
},
"sourceIPs": [
"203.0.113.10"
],
"userAgent": "kubectl/v1.36.2 (linux/amd64) kubernetes/24e2b02",
"objectRef": {
"resource": "mutatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"responseObject": {
"kind": "MutatingWebhookConfigurationList",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"resourceVersion": "1147"
},
"items": [
{
"metadata": {
"name": "dw-harn-mutatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "1147",
"generation": 1,
"creationTimestamp": "2026-07-02T23:14:32Z",
"labels": {
"dw-harn-patched": "1"
}
},
"webhooks": [
{
"name": "dw-harn.example.com",
"clientConfig": {
"url": "https://127.0.0.1:1/hook"
},
"rules": [
{
"operations": [
"CREATE"
],
"apiGroups": [
""
],
"apiVersions": [
"v1"
],
"resources": [
"pods"
],
"scope": "*"
}
],
"failurePolicy": "Fail",
"matchPolicy": "Equivalent",
"namespaceSelector": {},
"objectSelector": {},
"sideEffects": "None",
"timeoutSeconds": 10,
"admissionReviewVersions": [
"v1"
],
"reinvocationPolicy": "Never"
}
]
}
]
},
"requestReceivedTimestamp": "2026-07-02T23:14:35.589946Z",
"stageTimestamp": "2026-07-02T23:14:35.595031Z",
"annotations": {
"authorization.k8s.io/decision": "allow",
"authorization.k8s.io/reason": "RBAC: allowed by ClusterRoleBinding \"kubeadm:cluster-admins\" of ClusterRole \"cluster-admin\" to Group \"kubeadm:cluster-admins\""
}
}
References #
any verb on mutatingwebhookconfigurations (synthetic aggregation)
#Description
Synthetic aggregation for rules that filter the mutatingwebhookconfigurations resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone.