Volver a actualizaciones
Nuevo releaseAug 16, 2026

k8scout v0.1.2

Coloca un solo binario en un pod de Kubernetes comprometido y mapea instantáneamente todas las rutas de ataque realistas hacia cluster-admin, escape de nodo, robo de secretos y toma de control de IAM en la nube.

Compartir

k8scout logo

GitHub stars GitHub forks GitHub issues GitHub license

k8scout

Beta — Un motor de rutas de ataque de Kubernetes de binario único para evaluaciones de seguridad autorizadas.

Colócalo en un pod comprometido, ejecútalo y obtén un mapa de cada ruta de escalada realista, desde tu posición actual hasta cluster-admin, acceso a nodos, robo de secretos y roles de IAM en la nube.


La idea

Tienes RCE en un pod de Kubernetes. ¿Y ahora qué?

k8scout responde a esa pregunta. Descubre automáticamente qué puede hacer la cuenta de servicio del pod comprometido, mapea el grafo RBAC y traza rutas de ataque de varios pasos desde tu posición exacta hasta objetivos de alto valor.

Funciona en tres modos:

  • Modo ofensivo (predeterminado) — se ejecuta desde dentro de un pod comprometido. Descubre tu identidad, permisos y todas las rutas de escalada alcanzables desde tu posición actual.
  • Modo revisor (--reviewer-mode) — se ejecuta con una SA de solo lectura para auditar toda la superficie de ataque del clúster para todas las identidades.
  • Modo reconocimiento (--recon) — una mirada rápida y de baja huella solo a tu identidad, permisos efectivos y qué recursos puedes tocar. Sin grafo ni búsqueda de rutas. Añade --bruteforce-ns para descubrir namespaces que no puedes listar a nivel de clúster.

Demostración

k8scout demo


Qué encuentra

k8scout construye un grafo de permisos ponderado y ejecuta búsqueda de rutas basada en Dijkstra para descubrir cadenas de ataque realistas de varios pasos:

  • De pod a cluster-admin — mediante enlaces RBAC, mutación de workloads o creación de CRB
  • De escape de contenedor a nodo — mediante contenedores privilegiados, hostPID, hostNetwork, capacidades peligrosas o montajes hostPath
  • Movimiento lateral — exec en otros pods, robar sus tokens de SA, pivotar a través de sus permisos
  • Robo de secretos y credenciales — tokens de SA montados, secretos, configmaps con credenciales filtradas, tokens huérfanos
  • Escalada de IAM en la nube — IRSA (AWS), GKE Workload Identity, Azure Workload Identity, abuso de audiencia de tokens proyectados
  • Cadenas de suplantación — toma de control de SA a SA mediante permisos de suplantación
  • Mutación de workloads — parchear un deployment para cambiar su SA y luego heredar los permisos de esa SA
  • Inyección de webhooks — control de webhooks mutantes para inyectar en workloads futuros
  • Abuso de operadores GitOps — escalada de privilegios de ArgoCD, Flux, External Secrets y operadores de Vault
  • Detección de malas configuraciones — enlaces colgantes, verbos comodín, tokens montados automáticamente, secretos en texto plano en variables de entorno

Cada hallazgo incluye IDs de técnicas MITRE ATT&CK, una puntuación de riesgo y una ruta de ataque paso a paso con los nodos reales del grafo involucrados. 50 reglas de detección en total.


Inicio rápido

Desde un pod comprometido (caso de uso principal)

# 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!

El binario detecta automáticamente que se ejecuta dentro del clúster, identifica el pod y la SA, y comienza la búsqueda de rutas desde tu posición exacta.

Uso previsto: Pruebas de penetración, operaciones de red team, revisiones de seguridad internas y auditorías de endurecimiento de clústeres. Obtén siempre la autorización adecuada antes de ejecutarlo contra cualquier clúster.

Desde tu máquina local

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

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

Modo reconocimiento (verificación rápida de permisos y recursos)

# 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

El reconocimiento omite la construcción del grafo, la inferencia y la IA — es la forma más rápida de responder "¿qué tiene realmente este token?". Informa la identidad actual, sus permisos efectivos (SelfSubjectRulesReview) y una matriz de capacidades por recurso (SelfSubjectAccessReview). --bruteforce-ns confirma que un namespace existe leyendo objetos bien conocidos que todo namespace tiene (el objeto namespace, su ServiceAccount default, o el ConfigMap kube-root-ca.crt) — útil cuando la identidad no puede listar namespaces pero aún puede acceder a algunos específicos.

Modo revisor (auditoría completa del clúster)

# 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

Con narrativa de IA

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

Instalación

Binarios precompilados

Descárgalos desde la página de Releases. Todos los binarios están enlazados estáticamente y sin dependencias.

BinarioPlataforma
k8scout-linux-amd64Linux x86-64
k8scout-linux-arm64Linux ARM64
k8scout-darwin-amd64macOS Intel
k8scout-darwin-arm64macOS Apple Silicon

Compilar desde el código fuente

Requiere 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

Cómo funciona

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

Incluso con una SA mínima que no puede listar pods u objetos RBAC, la herramienta sintetiza el grafo de posición desde los datos de identidad por sí sola y descubre qué es alcanzable a través de los permisos SSRR/SSAR.


Categorías