Kubernetes OPA Gatekeeper bypass

Reading time: 1 minute

Originalni autor ove stranice je Guillaume

Zloupotreba pogrešne konfiguracije

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.

Sa CLI

bash
$ kubectl api-resources | grep gatekeeper
k8smandatoryannotations                                                             constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryAnnotations
k8smandatorylabels                                                                  constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryLabel
constrainttemplates                                                                 templates.gatekeeper.sh/v1                         false        ConstraintTemplate

ConstraintTemplate i Constraint mogu se koristiti u Open Policy Agent (OPA) Gatekeeper-u za sprovođenje pravila na Kubernetes resursima.

bash
$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

Sa GUI

Grafički korisnički interfejs može biti dostupan za pristup OPA pravilima putem Gatekeeper Policy Manager. To je "jednostavan samo-za-čitanje web UI za pregled statusa OPA Gatekeeper politika u Kubernetes klasteru."

Pretražite izloženu uslugu:

bash
$ kubectl get services -A | grep gatekeeper
$ kubectl get services -A | grep 'gatekeeper-policy-manager-system'

Isključeni prostori imena

Kao što je prikazano na gornjoj slici, određena pravila se možda neće primenjivati univerzalno na sve prostore imena ili korisnike. Umesto toga, funkcionišu na osnovu bele liste. Na primer, liveness-probe ograničenje je isključeno iz primene na pet navedenih prostora imena.

Bypass

Sa sveobuhvatnim pregledom Gatekeeper konfiguracije, moguće je identifikovati potencijalne pogrešne konfiguracije koje bi mogle biti iskorišćene za sticanje privilegija. Potražite prostore imena koji su na beloj listi ili isključeni gde pravilo ne važi, a zatim izvršite svoj napad tamo.

Abusing Roles/ClusterRoles in Kubernetes

Iskorišćavanje ValidatingWebhookConfiguration

Još jedan način za zaobilaženje ograničenja je fokusiranje na ValidatingWebhookConfiguration resurs :

Kubernetes ValidatingWebhookConfiguration

Reference