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

logotipo de k8scout

GitHub stars GitHub forks GitHub issues GitHub license

k8scout

Beta — Un motor de rutas de ataque de Kubernetes en un solo binario para evaluaciones de seguridad autorizadas.

Colóquelo en un pod comprometido, ejecútelo y obtenga un mapa de cada ruta de escalada realista: desde su punto de apoyo actual hasta administrador del clúster, acceso a nodos, robo de secretos y roles IAM en la nube.


La idea

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

k8scout responde a esa pregunta. Descubre automáticamente lo que la cuenta de servicio del pod comprometido puede hacer, traza el gráfico RBAC y localiza rutas de ataque de múltiples pasos desde su punto de apoyo exacto hasta objetivos de alto valor.

Funciona en tres modos:

  • Modo ofensivo (por defecto) — 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 de revisión (--reviewer-mode) — se ejecuta con un SA de solo lectura para auditar la superficie de ataque completa del clúster para todas las identidades.
  • Modo de reconocimiento (--recon) — una revisión rápida y de bajo impacto solo de tu identidad, permisos efectivos y qué recursos puedes tocar. Sin gráfico ni búsqueda de rutas. Añade --bruteforce-ns para descubrir espacios de nombres que no puedas listar a nivel de clúster.

Demostración

demostración de k8scout


Lo que encuentra

k8scout construye un gráfico de permisos ponderado y ejecuta búsqueda de rutas basada en Dijkstra para descubrir cadenas de ataque realistas de múltiples pasos:

  • De pod a administrador del clúster — a través de vinculaciones RBAC, mutación de cargas de trabajo o creación de CRB
  • Escape de contenedor a nodo — mediante contenedores privilegiados, hostPID, hostNetwork, capacidades peligrosas o montajes hostPath
  • Movimiento lateral — ejecutar en otros pods, robar sus tokens SA, pivotar a través de sus permisos
  • Robo de secretos y credenciales — tokens SA montados, secretos, configmaps con credenciales filtradas, tokens huérfanos
  • Escalada 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 SA a SA mediante permisos de suplantación
  • Mutación de cargas de trabajo — parchear un despliegue para cambiar su SA, luego heredar los permisos de esa SA
  • Inyección de webhooks — control de webhook mutante para inyectar en cargas de trabajo futuras
  • Abuso de operadores GitOps — escalada de privilegios de operadores ArgoCD, Flux, External Secrets y Vault
  • Detección de configuraciones incorrectas — vinculaciones 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 del gráfico reales 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 el SA, y comienza la búsqueda de rutas desde tu punto de apoyo exacto.

Uso previsto: Compromisos de pruebas de penetración, operaciones de equipo rojo, revisiones de seguridad internas y auditorías de endurecimiento de clústeres. Siempre obtén 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 de 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

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

Modo de revisión (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 Lanzamientos. Todos los binarios están enlazados estáticamente y no tienen 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

Categorías