Kubernetes - OPA Gatekeeper bypass

El autor original de esta página es Guillaume

Abusando de la mala configuración

Enumerar reglas

Tener una visión general puede ayudar a saber qué reglas están activas, en qué modo y quién puede evadirlas.

Con la CLI

$ 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 y Constraint se pueden utilizar en Open Policy Agent (OPA) Gatekeeper para hacer cumplir reglas en recursos de Kubernetes.

$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

Con la GUI

También puede estar disponible una Interfaz Gráfica de Usuario para acceder a las reglas de OPA con Gatekeeper Policy Manager. Es "una sencilla interfaz web de solo lectura para ver el estado de las políticas de OPA Gatekeeper en un clúster de Kubernetes."

Buscar la ruta expuesta:

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

Espacios de nombres excluidos

Como se ilustra en la imagen anterior, ciertas reglas pueden no aplicarse universalmente en todos los espacios de nombres o usuarios. En su lugar, operan en base a una lista blanca. Por ejemplo, la restricción liveness-probe está excluida de aplicarse a los cinco espacios de nombres especificados.

Bypass

Con una visión general exhaustiva de la configuración de Gatekeeper, es posible identificar posibles configuraciones incorrectas que podrían ser explotadas para obtener privilegios. Busque espacios de nombres en lista blanca o excluidos donde la regla no se aplique, y luego lleve a cabo su ataque allí.

Abusing Roles/ClusterRoles in Kubernetes

Referencias

Last updated