Kubernetes OPA Gatekeeper bypass

Reading time: 1 minute

Оригінальний автор цієї сторінки Guillaume

Зловживання неправильними налаштуваннями

Перерахунок правил

Мати огляд може допомогти зрозуміти, які правила активні, в якому режимі і хто може їх обійти.

За допомогою 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 та Constraint можуть бути використані в Open Policy Agent (OPA) Gatekeeper для застосування правил до ресурсів Kubernetes.

bash
$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

З графічним інтерфейсом

Графічний інтерфейс користувача також може бути доступний для доступу до правил OPA за допомогою Gatekeeper Policy Manager. Це "проста тільки для читання веб-інтерфейс для перегляду статусу політик OPA Gatekeeper у кластері Kubernetes."

Шукайте відкритий сервіс:

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

Виняті простори імен

Як показано на зображенні вище, певні правила можуть не застосовуватися універсально до всіх просторів імен або користувачів. Натомість вони працюють на основі білого списку. Наприклад, обмеження liveness-probe виключено з застосування до п'яти вказаних просторів імен.

Обхід

Завдяки всебічному огляду конфігурації Gatekeeper, можна виявити потенційні неправильні налаштування, які можуть бути використані для отримання привілеїв. Шукайте простори імен, що знаходяться в білому списку або виключені, де правило не застосовується, а потім здійснюйте свою атаку там.

Abusing Roles/ClusterRoles in Kubernetes

Зловживання ValidatingWebhookConfiguration

Ще один спосіб обійти обмеження - зосередитися на ресурсі ValidatingWebhookConfiguration :

Kubernetes ValidatingWebhookConfiguration

Посилання