Kubernetes - OPA Gatekeeper bypass

이 페이지의 원 저자는 Guillaume

잘못된 구성 남용

규칙 열거

개요를 통해 활성화된 규칙, 어떤 모드에서 활성화되었는지, 누가 우회할 수 있는지 파악하는 데 도움이 될 수 있습니다.

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

ConstraintTemplateConstraint은 Open Policy Agent (OPA) Gatekeeper에서 Kubernetes 리소스에 규칙을 강제하는 데 사용될 수 있습니다.

$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

GUI를 통해

Gatekeeper Policy Manager를 통해 OPA 규칙에 액세스할 수 있는 그래픽 사용자 인터페이스도 사용할 수 있습니다. 이는 "Kubernetes 클러스터에서 OPA Gatekeeper 정책 상태를 볼 수 있는 간단한 읽기 전용 웹 UI"입니다.

노출된 경로를 검색하십시오:

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

제외된 네임스페이스

위의 이미지에서 설명한 대로, 특정 규칙은 모든 네임스페이스나 사용자에게 일괄적으로 적용되지 않을 수 있습니다. 대신 화이트리스트 방식으로 작동합니다. 예를 들어 liveness-probe 제약은 다섯 지정된 네임스페이스에는 적용되지 않습니다.

우회

Gatekeeper 구성에 대해 종합적으로 파악하면 권한을 얻기 위해 악용할 수 있는 잠재적인 잘못된 구성을 식별할 수 있습니다. 규칙이 적용되지 않는 화이트리스트 또는 제외된 네임스페이스를 찾아 해당 위치에서 공격을 수행하세요.

Abusing Roles/ClusterRoles in Kubernetes

참고 자료

Last updated