Kubernetes ValidatingWebhookConfiguration
Reading time: 2 minutes
Der ursprüngliche Autor dieser Seite ist Guillaume
Definition
ValidatingWebhookConfiguration ist eine Kubernetes-Ressource, die ein Validierungs-WebHook definiert, das eine serverseitige Komponente ist, die eingehende Kubernetes-API-Anfragen anhand einer Reihe vordefinierter Regeln und Einschränkungen validiert.
Zweck
Der Zweck einer ValidatingWebhookConfiguration besteht darin, einen Validierungs-WebHook zu definieren, der eine Reihe vordefinierter Regeln und Einschränkungen für eingehende Kubernetes-API-Anfragen durchsetzt. Der WebHook validiert die Anfragen anhand der in der Konfiguration definierten Regeln und Einschränkungen und gibt einen Fehler zurück, wenn die Anfrage nicht den Regeln entspricht.
Beispiel
Hier ist ein Beispiel für eine 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
Der Hauptunterschied zwischen einer ValidatingWebhookConfiguration und Richtlinien :

Kyverno.png
- ValidatingWebhookConfiguration (VWC) : Eine Kubernetes-Ressource, die ein Validierungswebhook definiert, das eine serverseitige Komponente ist, die eingehende Kubernetes-API-Anfragen anhand einer Reihe vordefinierter Regeln und Einschränkungen validiert.
- Kyverno ClusterPolicy: Eine Richtliniendefinition, die eine Reihe von Regeln und Einschränkungen für die Validierung und Durchsetzung von Kubernetes-Ressourcen wie Pods, Deployments und Services spezifiziert.
Enumeration
$ kubectl get ValidatingWebhookConfiguration
Missbrauch von Kyverno und Gatekeeper VWC
Wie wir sehen können, haben alle installierten Operatoren mindestens eine ValidatingWebHookConfiguration (VWC).
Kyverno und Gatekeeper sind beide Kubernetes-Policy-Engines, die einen Rahmen für die Definition und Durchsetzung von Richtlinien in einem Cluster bieten.
Ausnahmen beziehen sich auf spezifische Regeln oder Bedingungen, die es ermöglichen, eine Richtlinie unter bestimmten Umständen zu umgehen oder zu ändern, aber das ist nicht der einzige Weg!
Für kyverno wird, sobald eine validierende Richtlinie vorhanden ist, der Webhook kyverno-resource-validating-webhook-cfg
befüllt.
Für Gatekeeper gibt es die YAML-Datei gatekeeper-validating-webhook-configuration
.
Beide kommen mit Standardwerten, aber die Administratorenteams könnten diese 2 Dateien aktualisiert haben.
Anwendungsfall
$ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml
Jetzt identifizieren Sie die folgende Ausgabe:
namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- default
- TEST
- YOYO
- kube-system
- MYAPP
Hier bezieht sich das Label kubernetes.io/metadata.name
auf den Namespace-Namen. Namespaces mit Namen in der values
-Liste werden von der Richtlinie ausgeschlossen:
Überprüfen Sie die Existenz von Namespaces. Manchmal wurden aufgrund von Automatisierung oder Fehlkonfiguration einige Namespaces möglicherweise nicht erstellt. Wenn Sie die Berechtigung haben, einen Namespace zu erstellen, könnten Sie einen Namespace mit einem Namen in der values
-Liste erstellen, und die Richtlinien würden auf Ihren neuen Namespace nicht angewendet.
Das Ziel dieses Angriffs ist es, Fehlkonfigurationen innerhalb von VWC auszunutzen, um die Einschränkungen der Operatoren zu umgehen und dann Ihre Berechtigungen mit anderen Techniken zu erhöhen.
Abusing Roles/ClusterRoles in Kubernetes