Kubernetes ValidatingWebhookConfiguration

Ο αρχικός συγγραφέας αυτής της σελίδας είναι Guillaume

Ορισμός

Το ValidatingWebhookConfiguration είναι ένας πόρος του Kubernetes που ορίζει ένα validating webhook, το οποίο είναι ένα συστατικό πλευράς διακομιστή που επικυρώνει τις εισερχόμενες αιτήσεις API του Kubernetes σύμφωνα με ένα σύνολο προκαθορισμένων κανόνων και περιορισμών.

Σκοπός

Ο σκοπός ενός ValidatingWebhookConfiguration είναι να ορίσει ένα validating webhook που θα επιβάλλει ένα σύνολο προκαθορισμένων κανόνων και περιορισμών στις εισερχόμενες αιτήσεις API του Kubernetes. Το webhook θα επικυρώνει τις αιτήσεις σύμφωνα με τους κανόνες και τους περιορισμούς που ορίζονται στη διαμόρφωση και θα επιστρέφει ένα σφάλμα εάν η αίτηση δεν συμμορφώνεται με τους κανόνες.

Παράδειγμα

Ακολουθεί ένα παράδειγμα ενός 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

Η κύρια διαφορά μεταξύ ενός ValidatingWebhookConfiguration και πολιτικών :

  • ValidatingWebhookConfiguration (VWC) : Ένας πόρος Kubernetes που ορίζει ένα validating webhook, το οποίο είναι ένα συστατικό πλευράς διακομιστή που επικυρώνει τις εισερχόμενες αιτήσεις API Kubernetes έναντι ενός συνόλου προκαθορισμένων κανόνων και περιορισμών.

  • Kyverno ClusterPolicy: Μια ορισμός πολιτικής που καθορίζει ένα σύνολο κανόνων και περιορισμών για την επικύρωση και επιβολή πόρων Kubernetes, όπως pods, deployments και services

Enumeration

$ kubectl get ValidatingWebhookConfiguration

Κατάχρηση του Kyverno και του Gatekeeper VWC

Όπως μπορούμε να δούμε, όλοι οι εγκατεστημένοι χειριστές έχουν τουλάχιστον μία ValidatingWebHookConfiguration(VWC).

Kyverno και Gatekeeper είναι και οι δύο μηχανές πολιτικής του Kubernetes που παρέχουν ένα πλαίσιο για τον καθορισμό και την επιβολή πολιτικών σε ένα κλάστερ.

Οι εξαιρέσεις αναφέρονται σε συγκεκριμένους κανόνες ή συνθήκες που επιτρέπουν σε μια πολιτική να παρακαμφθεί ή να τροποποιηθεί υπό ορισμένες συνθήκες, αλλά αυτό δεν είναι ο μόνος τρόπος!

Για το kyverno, καθώς υπάρχει μια επικυρωτική πολιτική, ο webhook kyverno-resource-validating-webhook-cfg είναι γεμάτος.

Για τον Gatekeeper, υπάρχει το YAML αρχείο gatekeeper-validating-webhook-configuration.

Και τα δύο προέρχονται με προεπιλεγμένες τιμές, αλλά οι ομάδες Διαχειριστών μπορεί να έχουν ενημερώσει αυτά τα 2 αρχεία.

Χρήση Περίπτωσης

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

Τώρα, προσδιορίστε την παρακάτω έξοδο :

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

Εδώ, το label kubernetes.io/metadata.name αναφέρεται στο όνομα του namespace. Τα namespaces με ονόματα στη λίστα values θα εξαιρεθούν από την πολιτική:

Ελέγξτε την ύπαρξη των namespaces. Μερικές φορές, λόγω αυτοματοποίησης ή κακής ρύθμισης, κάποια namespaces μπορεί να μην έχουν δημιουργηθεί. Αν έχετε άδεια να δημιουργήσετε namespace, μπορείτε να δημιουργήσετε ένα namespace με ένα όνομα στη λίστα values και οι πολιτικές δεν θα ισχύσουν για το νέο σας namespace.

Ο στόχος αυτής της επίθεσης είναι να εκμεταλλευτεί τη κακή ρύθμιση μέσα στο VWC προκειμένου να παρακάμψει τους περιορισμούς των χειριστών και στη συνέχεια να ανυψώσει τα προνόμιά σας με άλλες τεχνικές.

Abusing Roles/ClusterRoles in Kubernetes

Αναφορές

Last updated