ValidatingWebhookConfigurations
| Operation | Description | Sample | Rule |
|---|---|---|---|
| get-validatingwebhookconfigurations | Y | N | |
| list-validatingwebhookconfigurations | Y | N | |
| watch-validatingwebhookconfigurations | Y | N | |
| create-validatingwebhookconfigurations | ValidatingWebhookConfiguration created or modified (admission controller change; defense evasion). | Y | Y |
| update-validatingwebhookconfigurations | Modifies an existing ValidatingWebhookConfiguration, e.g. weakening failurePolicy to Ignore. Sigma and Elastic both track update as an admission-controller change. | Y | Y |
| patch-validatingwebhookconfigurations | 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-validatingwebhookconfigurations | Removes a ValidatingWebhookConfiguration, dropping whatever admission checks it enforced. Sigma/Elastic track this the same as create/update/patch. | Y | Y |
| deletecollection-validatingwebhookconfigurations | Y | N | |
| any-validatingwebhookconfigurations | Synthetic aggregation for rules that filter the validatingwebhookconfigurations resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone. | N | N |
get validatingwebhookconfigurations
#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/validatingwebhookconfigurations/dw-harn-validatingwebhookconfigurations",
"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": "validatingwebhookconfigurations",
"name": "dw-harn-validatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T04:48:34.841977Z",
"stageTimestamp": "2026-07-02T04:48:34.843212Z",
"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 validatingwebhookconfigurations
#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/validatingwebhookconfigurations?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": "validatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T04:48:34.968046Z",
"stageTimestamp": "2026-07-02T04:48:34.969452Z",
"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 validatingwebhookconfigurations
#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/validatingwebhookconfigurations?resourceVersion=1726&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": "validatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestReceivedTimestamp": "2026-07-02T04:48:34.970517Z",
"stageTimestamp": "2026-07-02T04:48:37.971032Z",
"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 validatingwebhookconfigurations
#Description
ValidatingWebhookConfiguration created or modified (admission controller change; 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/validatingwebhookconfigurations?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": "validatingwebhookconfigurations",
"name": "dw-harn-validatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 201
},
"requestObject": {
"kind": "ValidatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-validatingwebhookconfigurations"
},
"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"
]
}
]
},
"responseObject": {
"kind": "ValidatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-validatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "1726",
"generation": 1,
"creationTimestamp": "2026-07-02T04:48:34Z"
},
"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"
]
}
]
},
"requestReceivedTimestamp": "2026-07-02T04:48:34.776589Z",
"stageTimestamp": "2026-07-02T04:48:34.779980Z",
"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 |
|---|---|---|---|---|
username (panther rule field) | contains | serviceaccount | 1 rule | panther |
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 update-validatingwebhookconfigurations: update validatingwebhookconfigurations, patch-validatingwebhookconfigurations: patch validatingwebhookconfigurations, delete-validatingwebhookconfigurations: delete validatingwebhookconfigurations Elastic #
T1546, T1562↳ also matches update-validatingwebhookconfigurations: update validatingwebhookconfigurations, patch-validatingwebhookconfigurations: patch validatingwebhookconfigurations 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-validatingwebhookconfigurations: update validatingwebhookconfigurations, patch-validatingwebhookconfigurations: patch validatingwebhookconfigurations, delete-validatingwebhookconfigurations: delete validatingwebhookconfigurations 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 validatingwebhookconfigurations
#Description
Modifies an existing ValidatingWebhookConfiguration, e.g. weakening failurePolicy to Ignore. 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/validatingwebhookconfigurations/dw-harn-validatingwebhookconfigurations?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": "validatingwebhookconfigurations",
"name": "dw-harn-validatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1",
"resourceVersion": "925"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestObject": {
"kind": "ValidatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-validatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "925",
"generation": 1,
"creationTimestamp": "2026-07-02T21:32:13Z",
"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"
]
}
]
},
"responseObject": {
"kind": "ValidatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-validatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "925",
"generation": 1,
"creationTimestamp": "2026-07-02T21:32:13Z",
"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"
]
}
]
},
"requestReceivedTimestamp": "2026-07-02T21:32:17.424440Z",
"stageTimestamp": "2026-07-02T21:32:17.426888Z",
"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-validatingwebhookconfigurations: create validatingwebhookconfigurations, patch-validatingwebhookconfigurations: patch validatingwebhookconfigurations, delete-validatingwebhookconfigurations: delete validatingwebhookconfigurations Elastic #
T1546, T1562↳ also matches create-validatingwebhookconfigurations: create validatingwebhookconfigurations, patch-validatingwebhookconfigurations: patch validatingwebhookconfigurations 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-validatingwebhookconfigurations: create validatingwebhookconfigurations, patch-validatingwebhookconfigurations: patch validatingwebhookconfigurations, delete-validatingwebhookconfigurations: delete validatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating Kubernetes Admission Webhook Created or Modified#
Possible investigation steps#
False positive analysis#
Response and remediation#
References #
patch validatingwebhookconfigurations
#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/validatingwebhookconfigurations/dw-harn-validatingwebhookconfigurations?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": "validatingwebhookconfigurations",
"name": "dw-harn-validatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"requestObject": {
"metadata": {
"labels": {
"dw-harn-patched": "1"
}
}
},
"responseObject": {
"kind": "ValidatingWebhookConfiguration",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"name": "dw-harn-validatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "1732",
"generation": 1,
"creationTimestamp": "2026-07-02T04:48:34Z",
"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"
]
}
]
},
"requestReceivedTimestamp": "2026-07-02T04:48:38.046735Z",
"stageTimestamp": "2026-07-02T04:48:38.052129Z",
"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 |
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-validatingwebhookconfigurations: create validatingwebhookconfigurations, update-validatingwebhookconfigurations: update validatingwebhookconfigurations, delete-validatingwebhookconfigurations: delete validatingwebhookconfigurations Elastic #
T1546, T1562↳ also matches create-validatingwebhookconfigurations: create validatingwebhookconfigurations, update-validatingwebhookconfigurations: update validatingwebhookconfigurations 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-validatingwebhookconfigurations: create validatingwebhookconfigurations, update-validatingwebhookconfigurations: update validatingwebhookconfigurations, delete-validatingwebhookconfigurations: delete validatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating Kubernetes Admission Webhook Created or Modified#
Possible investigation steps#
False positive analysis#
Response and remediation#
References #
delete validatingwebhookconfigurations
#Description
Removes a ValidatingWebhookConfiguration, dropping whatever admission checks it enforced. Sigma/Elastic track this the same as create/update/patch.
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/validatingwebhookconfigurations/dw-harn-validatingwebhookconfigurations",
"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": "validatingwebhookconfigurations",
"name": "dw-harn-validatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"status": "Success",
"details": {
"name": "dw-harn-validatingwebhookconfigurations",
"group": "admissionregistration.k8s.io",
"kind": "validatingwebhookconfigurations",
"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-validatingwebhookconfigurations",
"group": "admissionregistration.k8s.io",
"kind": "validatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000"
}
},
"requestReceivedTimestamp": "2026-07-02T04:48:38.119730Z",
"stageTimestamp": "2026-07-02T04:48:38.122824Z",
"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 |
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-validatingwebhookconfigurations: create validatingwebhookconfigurations, update-validatingwebhookconfigurations: update validatingwebhookconfigurations, patch-validatingwebhookconfigurations: patch validatingwebhookconfigurations Elastic #
T1546, T1562↳ also matches create-validatingwebhookconfigurations: create validatingwebhookconfigurations, update-validatingwebhookconfigurations: update validatingwebhookconfigurations, patch-validatingwebhookconfigurations: patch validatingwebhookconfigurations Investigation guide
Triage and analysis#
Investigating Kubernetes Admission Webhook Created or Modified#
Possible investigation steps#
False positive analysis#
Response and remediation#
References #
deletecollection validatingwebhookconfigurations
#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/validatingwebhookconfigurations?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": "validatingwebhookconfigurations",
"apiGroup": "admissionregistration.k8s.io",
"apiVersion": "v1"
},
"responseStatus": {
"metadata": {},
"code": 200
},
"responseObject": {
"kind": "ValidatingWebhookConfigurationList",
"apiVersion": "admissionregistration.k8s.io/v1",
"metadata": {
"resourceVersion": "1137"
},
"items": [
{
"metadata": {
"name": "dw-harn-validatingwebhookconfigurations",
"uid": "00000000-0000-0000-0000-000000000000",
"resourceVersion": "1136",
"generation": 1,
"creationTimestamp": "2026-07-02T23:14:28Z",
"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"
]
}
]
}
]
},
"requestReceivedTimestamp": "2026-07-02T23:14:31.924868Z",
"stageTimestamp": "2026-07-02T23:14:31.929364Z",
"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 validatingwebhookconfigurations (synthetic aggregation)
#Description
Synthetic aggregation for rules that filter the validatingwebhookconfigurations resource with no specific verb. Not a distinct audit record; hosts rule listings that key on objectRef.resource alone.