Kubernetes - OPA Gatekeeper bypass

Oryginalnym autorem tej strony jest Guillaume

Nadużywanie błędów konfiguracji

Wyliczanie reguł

Przegląd może pomóc w ustaleniu, które reguły są aktywne, w jakim trybie i kto może je ominąć.

Za pomocą interfejsu wiersza poleceń

$ 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 oraz Constraint mogą być używane w Open Policy Agent (OPA) Gatekeeper do narzucania reguł na zasoby Kubernetes.

$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

Za pomocą interfejsu graficznego

Interfejs graficzny może również być dostępny do dostępu do zasad OPA za pomocą Gatekeeper Policy Manager. Jest to "prosty interfejs internetowy tylko do odczytu do przeglądania stanu zasad OPA Gatekeeper w klastrze Kubernetes."

Wyszukaj odsłoniętą trasę:

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

Wyłączone przestrzenie nazw

Jak przedstawiono na powyższym obrazie, pewne reguły mogą nie być stosowane uniwersalnie we wszystkich przestrzeniach nazw lub dla wszystkich użytkowników. Zamiast tego działają na zasadzie białej listy. Na przykład ograniczenie liveness-probe jest wyłączone z zastosowania do pięciu określonych przestrzeni nazw.

Ominięcie

Dzięki wszechstronnemu przeglądowi konfiguracji Gatekeepera możliwe jest zidentyfikowanie potencjalnych błędów konfiguracyjnych, które mogą zostać wykorzystane do uzyskania uprawnień. Szukaj przestrzeni nazw z białą listą lub wyłączonych, gdzie reguła nie jest stosowana, a następnie przeprowadź atak w tym miejscu.

Abusing Roles/ClusterRoles in Kubernetes

Odnośniki

Last updated