Kubernetes ValidatingWebhookConfiguration

El autor original de esta página es Guillaume

Definición

ValidatingWebhookConfiguration es un recurso de Kubernetes que define un webhook de validación, que es un componente del lado del servidor que valida las solicitudes de API de Kubernetes entrantes contra un conjunto de reglas y restricciones predefinidas.

Propósito

El propósito de un ValidatingWebhookConfiguration es definir un webhook de validación que aplicará un conjunto de reglas y restricciones predefinidas a las solicitudes de API de Kubernetes entrantes. El webhook validará las solicitudes contra las reglas y restricciones definidas en la configuración y devolverá un error si la solicitud no se ajusta a las reglas.

Ejemplo

Aquí hay un ejemplo de un ValidatingWebhookConfiguration:

apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: example-validation-webhook
namespace: default
webhook:
name: example-validation-webhook
clientConfig:
url: https://example.com/webhook
serviceAccountName: example-service-account
rules:
- apiGroups:
- ""
apiVersions:
- "*"
operations:
- CREATE
- UPDATE
resources:
- pods

La principal diferencia entre un ValidatingWebhookConfiguration y las políticas :

  • ValidatingWebhookConfiguration (VWC) : Un recurso de Kubernetes que define un webhook de validación, que es un componente del lado del servidor que valida las solicitudes de API de Kubernetes entrantes contra un conjunto de reglas y restricciones predefinidas.

  • Kyverno ClusterPolicy: Una definición de política que especifica un conjunto de reglas y restricciones para validar y hacer cumplir los recursos de Kubernetes, como pods, despliegues y servicios.

Enumeración

$ kubectl get ValidatingWebhookConfiguration

Abusing Kyverno and Gatekeeper VWC

Como podemos ver, todos los operadores instalados tienen al menos una ValidatingWebHookConfiguration (VWC).

Kyverno y Gatekeeper son ambos motores de políticas de Kubernetes que proporcionan un marco para definir y hacer cumplir políticas en un clúster.

Las excepciones se refieren a reglas o condiciones específicas que permiten que una política sea eludida o modificada bajo ciertas circunstancias, ¡pero esta no es la única forma!

Para kyverno, como hay una política de validación, el webhook kyverno-resource-validating-webhook-cfg se llena.

Para Gatekeeper, hay un archivo YAML gatekeeper-validating-webhook-configuration.

Ambos vienen con valores predeterminados, pero los equipos de administración pueden haber actualizado esos 2 archivos.

Use Case

$ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml

Ahora, identifica la siguiente salida:

namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- default
- TEST
- YOYO
- kube-system
- MYAPP

Aquí, la etiqueta kubernetes.io/metadata.name se refiere al nombre del espacio de nombres. Los espacios de nombres con nombres en la lista de values serán excluidos de la política:

Verifique la existencia de espacios de nombres. A veces, debido a la automatización o una mala configuración, algunos espacios de nombres pueden no haberse creado. Si tiene permiso para crear un espacio de nombres, podría crear un espacio de nombres con un nombre en la lista de values y las políticas no se aplicarán a su nuevo espacio de nombres.

El objetivo de este ataque es explotar mala configuración dentro de VWC para eludir las restricciones de los operadores y luego elevar sus privilegios con otras técnicas.

Referencias

Last updated