Модель угроз Kubernetes
Уязвимые места кластеров
«Модель угроз Kubernetes» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Почему Kubernetes становится целью
Kubernetes оркестрирует контейнеры на множестве узлов. Он централизует секреты, сеть и вычислительные ресурсы, поэтому компрометация кластера может означать компрометацию каждой запускаемой им рабочей нагрузки.
- Один сервер API управляет всем кластером.
- Узлы одновременно запускают рабочие нагрузки многих арендаторов.
- Неправильная настройка встречается гораздо чаще, чем уязвимости CVE самого Kubernetes.
Повторение архитектуры кластера
Чтобы построить модель угроз, необходимо знать компоненты.
- Плоскость управления: сервер API, etcd, планировщик, диспетчер контроллеров.
- Узлы: kubelet, среда выполнения контейнеров, kube-proxy, поды.
- etcd хранит все состояние кластера и секреты.
Сервер API — единственная точка входа, а etcd — самый ценный объект данных.
Карта поверхности атаки
Атаки нацелены на отдельные уровни.
- Внешний: доступный извне сервер API, панели управления, входные маршруты.
- Рабочая нагрузка: скомпрометированное приложение внутри пода.
- Идентичность: токены сервисных учетных записей и RBAC.
- Узел: API kubelet, выход контейнера на узел.
- Цепочка поставок: вредоносные образы и зависимости.
Открытая плоскость управления
Доступный из интернета сервер API или kubelet со слабой аутентификацией — прямой путь к захвату кластера.
- На сервере API включен анонимный доступ.
- Открыт API kubelet с правами чтения и записи (порт 10250).
- Открыта панель управления Kubernetes с привязкой администратора.
# Probe an exposed kubelet for running pods
curl -sk https://NODE_IP:10250/pods
# Test anonymous API access
kubectl --insecure-skip-tls-verify --server https://API:6443 get podsТочка опоры внутри пода
Наиболее распространенная отправная точка — RCE в приложении, работающем в поде. Находясь внутри пода, злоумышленники обнаруживают:
- Смонтированный токен сервисной учетной записи в
/var/run/secrets/.... - Доступные внутренние сервисы (без сетевой политики).
- Сервер API, который часто разрешается как
kubernetes.default.
# From inside a pod: read the mounted SA token
cat /var/run/secrets/kubernetes.io/serviceaccount/token
# Use it against the API
curl -sk -H "Authorization: Bearer $(cat .../token)" https://kubernetes.default/api/v1/namespaces/default/podsВыход из контейнера
Выход из контейнера на узел открывает доступ ко всем рабочим нагрузкам на этом узле.
- Привилегированные контейнеры могут получать доступ к устройствам узла и выходить из контейнера.
- Монтирования hostPID/hostNetwork/hostPath увеличивают масштаб последствий.
- Смонтированный сокет Docker позволяет запустить привилегированный контейнер.
- Опасные возможности (
SYS_ADMIN) позволяют выйти из контейнера.
# A privileged pod can mount the host filesystem and chroot to it
mount /dev/sda1 /mnt && chroot /mnt shetcd: хранилище секретов
etcd хранит все состояние кластера, включая секреты, которые по умолчанию лишь кодируются в base64. Прямой доступ к etcd (часто неаутентифицированный в неправильно настроенных кластерах) раскрывает каждый секрет.
# Read all secrets from an exposed etcd
etcdctl --endpoints=https://NODE:2379 get / --prefix --keys-onlyБоковое перемещение в кластерах
Оказавшись внутри, злоумышленники перемещаются, используя идентичность кластера и сеть.
- Сервисная учетная запись с избыточными разрешениями позволяет создавать привилегированные поды.
- Плоские сети подов (без NetworkPolicy) позволяют обращаться к любому сервису.
- Планирование пода на целевом узле позволяет скомпрометировать этот узел.
Облачные метаданные из подов
В управляемых кластерах (EKS/GKE/AKS) поды могут обращаться к облачному сервису метаданных узла и красть учетные данные IAM/роли узла, превращая компрометацию кластера в компрометацию облачной учетной записи.
Меры защиты включают IMDSv2, блокирование метаданных на сетевом уровне и использование идентичности рабочей нагрузки вместо ролей узлов.
Картирование с помощью инструментов
Инструменты автоматизируют оценку угроз кластера.
- kube-hunter проверяет наличие открытых компонентов.
- kube-bench проверяет соответствие эталону CIS.
- Peirates / kubeletctl проверяют пути атаки внутри кластера.
# Assess attack surface
kube-hunter --remote API_IP
# CIS benchmark check on a node
kube-bench run --targets nodeПриоритеты защиты
Модель угроз указывает на четкие приоритеты защиты: защитить сервер API, ограничить RBAC, изолировать поды, усилить защиту узлов и обезопасить цепочку поставок. Следующие уроки подробно рассматривают каждое направление.
При тестировании атакуйте только те кластеры, для которых у Вас есть разрешение, и не допускайте дестабилизации рабочих нагрузок в рабочей среде.
Быстрая проверка
Проверьте свои базовые знания о модели угроз Kubernetes.
Итоги
Вы изучили, где подвергаются атакам кластеры Kubernetes.
- Сервер API и etcd — центральные цели с наибольшей ценностью.
- Точки опоры внутри подов используют смонтированные токены SA и плоские сети.
- Привилегированные поды и поды с hostPath позволяют выйти из контейнера на узел.
- Управляемым кластерам угрожает переход в облако через метаданные.
Далее: RBAC и сервисные учетные записи.
Часто задаваемые вопросы
Урок «Модель угроз Kubernetes» бесплатный?
Да — полный текст урока «Модель угроз Kubernetes» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Модель угроз Kubernetes»?
Уязвимые места кластеров Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Модель угроз Kubernetes»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Модель угроз Kubernetes
- RBAC и служебные учётные записи
- Безопасность подов и сетевые политики
- Защита цепочки поставок и секретов