Ломаем кластер Kubernetes через Helm v2 tiller

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


Helm — пакетный менеджер для Kubernetes, что-то вроде apt-get для Ubuntu. В этой заметке мы увидим предыдущую версию helm (v2) с сервисом tiller, установленным по умолчанию, через который получим доступ к кластеру.


Подготовим кластер, для этого запустим команду:


kubectl run --rm --restart=Never -it --image=madhuakula/k8s-goat-helm-tiller -- bash


Демонстрация


  • Если ничего дополнительно не настраивать, helm v2 запускает сервис tiller, который имеет RBAC c полными правами администратора кластера.
  • После установки в namespace kube-system появляется tiller-deploy, а также открывается порт 44134, привязанный к 0.0.0.0. Это можно проверить с помощью telnet.

$ telnet tiller-deploy.kube-system 44134


  • Теперь можно подключиться к сервису tiller. Будем использовать бинарник helm для проведения операций при общении с сервисом tiller:

$ helm --host tiller-deploy.kube-system:44134 version


  • Попробуем получить секреты кластера Kubernetes из namespace kube-system:

$ kubectl get secrets -n kube-system


  • Теперь мы можем создать свой собственный чарт, в котором создадим роль с правами администратора и назначим эту роль дефолтному сервис аккаунту. Используя токен от этого сервис аккаунта, мы получили полный доступ в наш кластер.

$ helm --host tiller-deploy.kube-system:44134 install /pwnchart


  • Сейчас, когда pwnchart развернут, сервисная учетная запись по умолчанию имеет полный административный доступ. Проверим еще раз получение секретов из kube-system

kubectl get secrets -n kube-system


Успешное выполнение этого сценария зависит от того, как был развернут tiller, иногда администраторы разворачивают его в отдельном namespace с другими привилегиями. Helm 3 не подвержен таким уязвимостям, т.к. в нем нет tiller.


Примечание переводчика: использование сетевых политик для фильтрации трафика в кластере помогает защитится от уязвимостей подобного типа.

Источник: https://habr.com/ru/company/southbridge/blog/507656/


Интересные статьи

Интересные статьи

Molecule — отличный инструмент для тестирования ролей Ansible, он выполняет надежный и гибкий процесс проверки для обеспечения хорошего уровня качества ролей. Почти вся документация Mol...
У некоторых бизнес-тренеров в области е-коммерса и консультантов по увеличению интернет-продаж на многие вопросы часто можно слышать универсальную отмазку — «надо тестировать» или другую (чтобы не...
TL;DR Атакующий подменяет source ip на адрес вашего сервера и триггерит автоматические абузы. В результате клиента банят на хостинге за вредоносную активность, которой не было. Комментарий...
Как наша команда Delivery, используя только собственные ресурсы, переделала нашу систему под CI/CD. Команды инженеров постоянно испытывают давление: нужно выдавать новые функции в виде достойн...
Прим. перев.: Dailymotion — один из крупнейших в мире сервисов хостинга видео и потому заметный пользователь Kubernetes. В этом материале системный архитектор David Donchez делится итогами со...