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

k8scout v0.1.2

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

Поделиться

k8scout logo

GitHub stars GitHub forks GitHub issues GitHub license

k8scout

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

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


Идея

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

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

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

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

Демо

k8scout demo


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

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

  • От пода до cluster-admin — через привязки RBAC, мутацию рабочих нагрузок или создание CRB
  • Побег из контейнера на узел — через привилегированные контейнеры, hostPID, hostNetwork, опасные capabilities или монтирования hostPath
  • Боковое перемещение — exec в другие поды, кража их SA-токенов, пивотинг через их разрешения
  • Кража секретов и учётных данных — смонтированные SA-токены, секреты, configmaps с утёкшими учётными данными, осиротевшие токены
  • Эскалация cloud IAM — IRSA (AWS), GKE Workload Identity, Azure Workload Identity, злоупотребление audience проекционных токенов
  • Цепочки имперсонации — захват SA через SA с помощью разрешений на имперсонацию
  • Мутация рабочих нагрузок — патч deployment для смены его SA с последующим наследованием разрешений этого SA
  • Инъекция через webhook — контроль над mutating webhook для внедрения в будущие рабочие нагрузки
  • Злоупотребление GitOps-операторами — эскалация привилегий ArgoCD, Flux, External Secrets и Vault operator
  • Обнаружение ошибок конфигурации — висячие привязки, wildcard-глаголы, автоматически монтируемые токены, секреты в открытом виде в переменных окружения

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


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

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

# Copy the binary into the pod
kubectl cp k8scout-linux-amd64 <ns>/<pod>:/tmp/k8scout

# Run it
kubectl exec -it <ns>/<pod> -- chmod +x /tmp/k8scout
kubectl exec -it <ns>/<pod> -- /tmp/k8scout --out /tmp/result.json

# Pull the results
kubectl cp <ns>/<pod>:/tmp/result.json ./result.json

# This flow works exactly like this in you're revshell!

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

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

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

# Uses ~/.kube/config or $KUBECONFIG
k8scout --all-namespaces --out result.json

# Target a single namespace
k8scout --namespace production --out result.json

Recon mode (быстрая проверка разрешений и ресурсов)

# Who am I, what can I do, and what resources can I access?
k8scout --recon

# Discover namespaces you can't list cluster-wide (built-in wordlist)
k8scout --recon --bruteforce-ns

# Bruteforce with your own namespace wordlist (one name per line)
k8scout --recon --bruteforce-ns --ns-wordlist ./namespaces.txt

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

Reviewer mode (полный аудит кластера)

# Deploy the read-only RBAC and job
kubectl apply -f deploy/rbac.yaml
kubectl apply -f deploy/job.yaml

# Or run directly with reviewer permissions
k8scout --reviewer-mode --all-namespaces --out result.json

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

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

Установка

Готовые бинарники

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

BinaryPlatform
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          # native binary
make build-linux    # static Linux amd64 binary
make build-all      # all four release targets

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

k8scout (running inside compromised pod)
 |
 ├── 1. Detect foothold
 │     Pod name (HOSTNAME), SA (TokenReview), Node (downward API)
 │
 ├── 2. Discover permissions
 │     SSRR per namespace + ~30 concurrent SSAR spot-checks
 │     (always permitted, no RBAC needed)
 │
 ├── 3. Enumerate cluster objects (graceful degradation if denied)
 │     Namespaces, RBAC, Workloads, Pods, Secrets, Nodes, Webhooks, CRDs
 │
 ├── 4. Build attack graph
 │     Nodes: pods, SAs, roles, bindings, secrets, workloads, nodes, cloud identities
 │     Edges: runs_as, mounts, authenticates_as, can_exec, can_patch,
 │            can_impersonate, runs_on, assumes_cloud_role, granted_by, ...
 │
 ├── 5. Find attack paths (Dijkstra from foothold to high-value targets)
 │     Weighted by attacker effort — cheapest (most realistic) paths first
 │     Targets: cluster-admin, nodes, SA tokens, cloud IAM, privileged workloads
 │
 ├── 6. Run inference rules (50 rules with MITRE ATT&CK mapping)
 │
 ├── 7. Optional: AI risk narrative (GPT-4o)
 │
 └── 8. Output: text summary + JSON report

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


Визуализация графа атаки

Загрузите JSON-отчёт в web/graph.html в любом браузере (перетаскиванием, сервер не нужен).

Категории