# Kubernetes ValidatingWebhookConfiguration **Originalni autor ove stranice je** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196) ## Definicija ValidatingWebhookConfiguration je Kubernetes resurs koji definiše validirajući webhook, koji je komponenta na serverskoj strani koja validira dolazne Kubernetes API zahteve prema skupu unapred definisanih pravila i ograničenja. ## Svrha Svrha ValidatingWebhookConfiguration je da definiše validirajući webhook koji će sprovoditi skup unapred definisanih pravila i ograničenja na dolazne Kubernetes API zahteve. Webhook će validirati zahteve prema pravilima i ograničenjima definisanim u konfiguraciji, i vratiće grešku ako zahtev ne odgovara pravilima. **Primer** Evo primera ValidatingWebhookConfiguration: ```yaml 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 ``` Glavna razlika između ValidatingWebhookConfiguration i politika :

Kyverno.png

- **ValidatingWebhookConfiguration (VWC)** : Kubernetes resurs koji definiše validirajući webhook, što je komponenta na serverskoj strani koja validira dolazne Kubernetes API zahteve prema skupu unapred definisanih pravila i ograničenja. - **Kyverno ClusterPolicy**: Definicija politike koja specificira skup pravila i ograničenja za validaciju i sprovođenje Kubernetes resursa, kao što su podovi, implementacije i servisi ## Enumeration ``` $ kubectl get ValidatingWebhookConfiguration ``` ### Zloupotreba Kyverno i Gatekeeper VWC Kao što možemo videti, svi instalirani operatori imaju barem jednu ValidatingWebHookConfiguration (VWC). **Kyverno** i **Gatekeeper** su oba Kubernetes policy engine-a koji pružaju okvir za definisanje i sprovođenje politika širom klastera. Izuzeci se odnose na specifična pravila ili uslove koji omogućavaju da se politika zaobiđe ili izmeni pod određenim okolnostima, ali to nije jedini način! Za **kyverno**, kada postoji validirajuća politika, webhook `kyverno-resource-validating-webhook-cfg` se popunjava. Za Gatekeeper, postoji `gatekeeper-validating-webhook-configuration` YAML datoteka. Oba dolaze sa podrazumevanim vrednostima, ali timovi administratora mogu ažurirati te 2 datoteke. ### Upotreba slučaja ```bash $ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml ``` Sada identifikujte sledeći izlaz: ```yaml namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: NotIn values: - default - TEST - YOYO - kube-system - MYAPP ``` Here, `kubernetes.io/metadata.name` label refers to the namespace name. Namespaces with names in the `values` list will be excluded from the policy : Proverite postojanje prostora imena. Ponekad, zbog automatizacije ili pogrešne konfiguracije, neki prostori imena možda nisu kreirani. Ako imate dozvolu da kreirate prostor imena, možete kreirati prostor imena sa imenom iz `values` liste i politike se neće primenjivati na vaš novi prostor imena. Cilj ovog napada je da iskoristi **pogrešnu konfiguraciju** unutar VWC kako bi zaobišao ograničenja operatera i zatim povećao svoje privilegije drugim tehnikama {{#ref}} abusing-roles-clusterroles-in-kubernetes/ {{#endref}} ## References - [https://github.com/open-policy-agent/gatekeeper](https://github.com/open-policy-agent/gatekeeper) - [https://kyverno.io/](https://kyverno.io/) - [https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/)