Kubernetes сложен и подвержен ошибкам конфигурации, что приводит к инцидентам безопасности (67% компаний, по данным Red Hat).
KubeHound от DataDog помогает выявлять эти проблемы, моделируя поведение злоумышленника и показывая пути компрометации кластера, в отличие от обычных сканеров уязвимостей.
⁉️ Принцип работы KubeHound
KubeHound анализирует Kubernetes-кластер в три этапа:
1️⃣ Собирает данные о ролях, привязках, сервисных аккаунтах, настройках Pod, сетевых политиках и доступе к API.
2️⃣ Строит граф атак, определяя цепочки эксплуатации (например, через сервисный аккаунт к привилегированному Pod и доступу к ноде), показывая не только отдельные уязвимости, но и их комбинации.
3️⃣ Формирует отчет, выделяя критические риски с рекомендациями по исправлению.
⁉️ Уязвимости, которые находит KubeHound
1️⃣ Избыточные права сервисных аккаунтов
Часто в
dev`-неймспейсах остаются сервисные аккаунты CI/CD с правами `cluster-admin. Злоумышленник может использовать их для развертывания вредоносных Pod или кражи данных. 2️⃣ Привилегированные Pod
Контейнеры с
privileged: true или доступом к hostPID`/`hostNetwork позволяют атакующему выйти на ноду. 3️⃣ Опасные RBAC-правила
Пользователь с правами
get pods + create pods + exec может создать Pod с serviceAccount: default и получить доступ к другим контейнерам. 🔝Топ-3 сценария, которые KubeHound находит лучше всех:
1️⃣ «Забытые ключи от королевства» (сервисные аккаунты с admin-правами)
- В dev`-неймспейсе остался сервисный аккаунт CI/CD, который умеет создавать Pods в `kube-system
- Его добавили для деплоя, но не удалили.
KubeHound покажет: «Через этот аккаунт можно развернуть вредоносный Pod с `privileged: true`».
2️⃣ «Троянский конь» (Pod с доступом к ноде)
Пример уязвимости:
spec:
containers:
- name: innocent-app
securityContext:
privileged: true # ← Вот это большая ошибка
Что может сделать злоумышленник?
- Запустить Docker-in-Docker и сбежать на хост.
- Украсть токены других подов через /var/run/secrets.
3️⃣ «Легальный хакер» (эскалация через RBAC)
Пользователь имеет права:
🔵get pods
🔵create pods
🔵exec
KubeHound предупредит: «Он может создать Pod с serviceAccount: default и получить шелл в любом контейнере»
