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

使用图形界面

也可以使用Gatekeeper Policy Manager访问 OPA 规则的图形用户界面。它是“用于在 Kubernetes 集群中查看 OPA Gatekeeper 策略状态的简单 只读 web 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