Kubernetes OPA Gatekeeper bypass
Reading time: 1 minute
Оригінальний автор цієї сторінки 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
ConstraintTemplate та Constraint можуть бути використані в Open Policy Agent (OPA) Gatekeeper для застосування правил до ресурсів Kubernetes.
$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels
З графічним інтерфейсом
Графічний інтерфейс користувача також може бути доступний для доступу до правил OPA за допомогою Gatekeeper Policy Manager. Це "проста тільки для читання веб-інтерфейс для перегляду статусу політик OPA Gatekeeper у кластері Kubernetes."

Шукайте відкритий сервіс:
$ 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