Назад к обновлениям
New releaseAug 16, 2026

k8scout v0.1.2

Разместите один бинарный файл в скомпрометированном поде Kubernetes и мгновенно получите карту всех реалистичных путей атаки до кластерного администратора, ухода из узла (node escape), кражи секретов и захвата облачного IAM.

Поделиться

k8scout logo

GitHub stars GitHub forks GitHub issues GitHub license

k8scout

Бета — Одно-бинарный движок для поиска путей атак в Kubernetes, предназначенный для санкционированных оценок безопасности.

Закиньте его в скомпрометированный под, запустите и получите карту всех реалистичных путей эскалации — от вашей текущей точки входа до кластерного администратора, доступа к узлам, кражи секретов и облачных IAM-ролей.


Идея

У вас есть RCE в поде Kubernetes. Что дальше?

k8scout отвечает на этот вопрос. Он автоматически выясняет, что может делать сервисный аккаунт скомпрометированного пода, строит граф RBAC и находит многошаговые пути атак от вашей точки входа до ценных целей.

Он работает в трёх режимах:

  • Атакующий режим (по умолчанию) — запускается изнутри скомпрометированного пода. Определяет вашу личность, разрешения и все достижимые пути эскалации из текущего положения.
  • Режим рецензента (--reviewer-mode) — запускается с read-only SA для аудита всей поверхности атак кластера для всех учётных записей.
  • Режим разведки (--recon) — быстрый, малозаметный сбор информации о вашей личности, эффективных разрешениях и ресурсах, к которым у вас есть доступ. Без графа и поиска путей. Добавьте --bruteforce-ns, чтобы обнаружить пространства имён, которые вы не можете перечислить во всём кластере.

Демо

k8scout demo


Что он находит

k8scout строит взвешенный граф разрешений и использует поиск путей Дейкстры для обнаружения реалистичных многошаговых цепочек атак:

  • От пода до кластерного администратора — через привязки RBAC, мутацию рабочих нагрузок или создание CRB
  • Побег из контейнера на узел — через привилегированные контейнеры, hostPID, hostNetwork, опасные capabilities или монтирования hostPath
  • Латеральное перемещение — exec в другие поды, кража их SA-токенов, переход по их разрешениям
  • Кража секретов и учётных данных — смонтированные SA-токены, секреты, configmap'ы с утёкшими учётными данными, осиротевшие токены
  • Эскалация облачных IAM — IRSA (AWS), GKE Workload Identity, Azure Workload Identity, злоупотребление аудиториями projected token
  • Цепочки подмены — захват SA через права impersonation
  • Мутация рабочих нагрузок — изменение deployment для смены его SA, затем наследование разрешений этого SA
  • Внедрение вебхуков — контроль над мутирующим вебхуком для внедрения в будущие рабочие нагрузки
  • Злоупотребление GitOps-операторами — эскалация привилегий через ArgoCD, Flux, External Secrets и Vault operator
  • Обнаружение ошибок конфигурации — висящие привязки, wildcard verbs, автоматически смонтированные токены, секреты в открытом виде в переменных окружения

Каждая находка включает идентификаторы техник MITRE ATT&CK, оценку риска и пошаговый путь атаки с указанием реальных узлов графа. Всего 50 правил обнаружения.


Быстрый старт

Из скомпрометированного пода (основной сценарий)

# Копируем бинарник внутрь пода
kubectl cp k8scout-linux-amd64 <ns>/<pod>:/tmp/k8scout

# Запускаем
kubectl exec -it <ns>/<pod> -- chmod +x /tmp/k8scout
kubectl exec -it <ns>/<pod> -- /tmp/k8scout --out /tmp/result.json

# Забираем результаты
kubectl cp <ns>/<pod>:/tmp/result.json ./result.json

# Этот же сценарий работает в revshell!

Бинарник автоматически определяет, что запущен внутри кластера, идентифицирует под и SA, и начинает поиск путей от вашей точки входа.

Предназначение: Тестирование на проникновение, операции красных команд, внутренние аудиты безопасности и проверки ужесточения кластера. Всегда получайте соответствующее разрешение перед запуском против любого кластера.

С вашей локальной машины

# Использует ~/.kube/config или $KUBECONFIG
k8scout --all-namespaces --out result.json

# Анализ одного пространства имён
k8scout --namespace production --out result.json

Режим разведки (быстрая проверка разрешений и ресурсов)

# Кто я, что я могу делать, к каким ресурсам имею доступ?
k8scout --recon

# Обнаружение пространств имён, которые нельзя перечислить во всём кластере (встроенный словарь)
k8scout --recon --bruteforce-ns

# Собственный словарь пространств имён (одно имя на строку)
k8scout --recon --bruteforce-ns --ns-wordlist ./namespaces.txt

Разведка пропускает построение графа, логический вывод и AI — это самый быстрый способ ответить на вопрос «что на самом деле есть у этого токена?». Она сообщает текущую личность, её эффективные разрешения (SelfSubjectRulesReview) и поресурсную матрицу возможностей (SelfSubjectAccessReview). Флаг --bruteforce-ns подтверждает существование пространства имён, читая известные объекты, которые есть в каждом namespace (сам namespace, его default ServiceAccount или ConfigMap kube-root-ca.crt) — полезно, когда личность не может перечислять пространства имён, но всё же может иметь доступ к конкретным.

Режим рецензента (полный аудит кластера)

# Разворачиваем read-only RBAC и задачу
kubectl apply -f deploy/rbac.yaml
kubectl apply -f deploy/job.yaml

# Или запускаем напрямую с правами рецензента
k8scout --reviewer-mode --all-namespaces --out result.json

С AI-повествованием

export OPENAI_API_KEY="sk-..."
k8scout --all-namespaces --out result.json

Установка

Предварительно собранные бинарники

Скачайте со страницы Релизы. Все бинарники статически слинкованы и не имеют зависимостей.

Исполняемый файлПлатформа
k8scout-linux-amd64Linux x86-64
k8scout-linux-arm64Linux ARM64
k8scout-darwin-amd64macOS Intel
k8scout-darwin-arm64macOS Apple Silicon

Сборка из исходников

Требуется Go 1.22+.

git clone https://github.com/hac01/k8scout
cd k8scout
make build          # родной бинарник
make build-linux    # статический Linux amd64
make build-all      # все четыре целевые платформы

Как это работает

k8scout (запущен внутри скомпрометированного пода)
 |
 ├── 1. Определение точки входа
 │     Имя пода (HOSTNAME), SA (TokenReview), Узел (downward API)
 │
 ├── 2. Обнаружение разрешений
 │     SSRR по каждому namespace + ~30 параллельных SSAR-проверок
 │     (всегда разрешено, RBAC не требуется)
 │
 ├── 3. Перечисление объектов кластера (плавная деградация при отказе)
 │     Namespaces, RBAC, Workloads, Pods, Secrets, Nodes, Webhooks, CRDs
 │
 ├── 4. Построение графа атак
 │     Узлы: поды, SA, роли, привязки, секреты, рабочие нагрузки, узлы, облачные учётные записи
 │     Рёбра: runs_as, mounts, authenticates_as, can_exec, can_patch,
 │            can_impersonate, runs_on, assumes_cloud_role, granted_by, ...
 │
 ├── 5. Поиск путей атак (Дейкстра от точки входа до ценных целей)
 │     Взвешены по усилиям атакующего — сначала самые дешёвые (реалистичные) пути
 │     Цели: кластерный админ, узлы, SA-токены, облачные IAM, привилегированные workloads
 │
 ├── 6. Выполнение правил логического вывода (50 правил с MITRE ATT&CK)
 │
 ├── 7. Опционально: AI-повествование о рисках (GPT-4o)
 │
 └── 8. Вывод: текстовое резюме + JSON-отчёт

Даже с минимальным SA, который не может перечислять поды или объекты RBAC, инструмент синтезирует граф точки входа на основе только данных об учётной записи и обнаруживает, что доступно через разрешения SSRR/SSAR.


Категории