Kubernetes Kyverno bypass

Reading time: 1 minute

Originalni autor ove stranice je Guillaume

Zloupotreba pogrešne konfiguracije politika

Nabrajanje pravila

Imati pregled može pomoći da se zna koja su pravila aktivna, u kojem režimu i ko može da ih zaobiđe

bash
$ kubectl get clusterpolicies
$ kubectl get policies

Enumerate Excluded

Za svaku ClusterPolicy i Policy, možete navesti listu isključenih entiteta, uključujući:

  • Grupe: excludedGroups
  • Korisnike: excludedUsers
  • Servisne naloge (SA): excludedServiceAccounts
  • Uloge: excludedRoles
  • Klaster uloge: excludedClusterRoles

Ovi isključeni entiteti će biti oslobođeni zahteva politike, i Kyverno neće sprovoditi politiku za njih.

Example

Let's dig into one clusterpolicy example :

$ kubectl get clusterpolicies MYPOLICY -o yaml

Potražite isključene entitete:

yaml
exclude:
any:
- clusterRoles:
- cluster-admin
- subjects:
- kind: User
name: system:serviceaccount:DUMMYNAMESPACE:admin
- kind: User
name: system:serviceaccount:TEST:thisisatest
- kind: User
name: system:serviceaccount:AHAH:*

Unutar klastera, brojne dodatne komponente, operatori i aplikacije mogu zahtevati isključenje iz klasterske politike. Međutim, ovo se može iskoristiti ciljanjem privilegovanih entiteta. U nekim slučajevima, može se činiti da prostor imena ne postoji ili da nemate dozvolu da se pretvarate da ste korisnik, što može biti znak pogrešne konfiguracije.

Abusing ValidatingWebhookConfiguration

Drugi način za zaobilaženje politika je fokusiranje na resurs ValidatingWebhookConfiguration:

Kubernetes ValidatingWebhookConfiguration

More info

Za više informacija proverite https://madhuakula.com/kubernetes-goat/docs/scenarios/scenario-22/securing-kubernetes-clusters-using-kyverno-policy-engine/welcome/