
k8scout v0.1.2
Inserisci un singolo binario in un pod Kubernetes compromesso e mappa istantaneamente ogni percorso di attacco realistico verso cluster-admin, node escape, secret theft e cloud IAM takeover.
k8scout
Beta — Un motore di attack path per Kubernetes in singolo binario, pensato per valutazioni di sicurezza autorizzate.
Caricalo in un pod compromesso, eseguilo e ottieni una mappa di ogni percorso di escalation realistico, dal tuo punto di appoggio attuale fino a cluster-admin, accesso ai nodi, furto di secret e ruoli IAM cloud.
L'idea
Hai RCE in un pod Kubernetes. E adesso?
k8scout risponde a questa domanda. Scopre automaticamente cosa può fare il service account del pod compromesso, mappa il grafo RBAC e traccia percorsi di attacco multi-step dal tuo esatto punto di appoggio verso obiettivi di alto valore.
Funziona in tre modalità:
- Modalità offensiva (predefinita) — eseguita dall'interno di un pod compromesso. Scopre la tua identità, i permessi e tutti i percorsi di escalation raggiungibili dalla tua posizione attuale.
- Modalità reviewer (
--reviewer-mode) — eseguita con un SA in sola lettura per verificare l'intera superficie di attacco del cluster per tutte le identità. - Modalità recon (
--recon) — un'analisi rapida e a basso impatto solo della tua identità, dei permessi effettivi e delle risorse che puoi toccare. Nessun grafo o pathfinding. Aggiungi--bruteforce-nsper scoprire namespace che non puoi elencare a livello di cluster.
Demo
Cosa trova
k8scout costruisce un grafo dei permessi pesato ed esegue pathfinding basato su Dijkstra per scoprire catene di attacco multi-step realistiche:
- Da pod a cluster-admin — tramite binding RBAC, mutazione di workload o creazione di CRB
- Da container escape a nodo — tramite container privilegiati, hostPID, hostNetwork, capability pericolose o mount hostPath
- Movimento laterale — exec in altri pod, furto dei loro token SA, pivot attraverso i loro permessi
- Furto di secret e credenziali — token SA montati, secret, configmap con credenziali trapelate, token orfani
- Escalation IAM cloud — IRSA (AWS), GKE Workload Identity, Azure Workload Identity, abuso dell'audience dei token proiettati
- Catene di impersonificazione — takeover da SA a SA tramite permessi di impersonificazione
- Mutazione di workload — patch di un deployment per cambiarne il SA, poi eredità dei permessi di quel SA
- Iniezione di webhook — controllo di un mutating webhook per iniettare nei workload futuri
- Abuso di operatori GitOps — escalation di privilegi di ArgoCD, Flux, External Secrets e Vault operator
- Rilevamento di misconfigurazioni — binding pendenti, verbi wildcard, token automontati, secret in chiaro nelle variabili d'ambiente
Ogni risultato include gli ID delle tecniche MITRE ATT&CK, un punteggio di rischio e un percorso di attacco passo-passo con gli effettivi nodi del grafo coinvolti. 50 regole di rilevamento in totale.
Avvio rapido
Da un pod compromesso (caso d'uso principale)
# 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!
Il binario rileva automaticamente di essere in esecuzione in-cluster, identifica il pod e il SA e inizia il pathfinding dal tuo esatto punto di appoggio.
Uso previsto: attività di penetration testing, operazioni red team, revisioni di sicurezza interne e audit di hardening del cluster. Ottieni sempre un'autorizzazione adeguata prima di eseguirlo contro qualsiasi cluster.
Dalla tua macchina locale
# Uses ~/.kube/config or $KUBECONFIG
k8scout --all-namespaces --out result.json
# Target a single namespace
k8scout --namespace production --out result.json
Modalità recon (controllo rapido di permessi e risorse)
# 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 salta la costruzione del grafo, l'inferenza e l'AI — è il modo più veloce per rispondere a
"cosa ha effettivamente questo token?". Riporta l'identità corrente, i suoi
permessi effettivi (SelfSubjectRulesReview) e una matrice di capacità per risorsa
(SelfSubjectAccessReview). --bruteforce-ns conferma che un namespace esiste
leggendo oggetti ben noti che ogni namespace possiede (l'oggetto namespace, il suo
ServiceAccount default, o la ConfigMap kube-root-ca.crt) — utile quando
l'identità non può elencare i namespace ma potrebbe comunque accedere a specifici di essi.
Modalità reviewer (audit completo del cluster)
# 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 narrazione AI
export OPENAI_API_KEY="sk-..."
k8scout --all-namespaces --out result.json
Installazione
Binari precompilati
Scaricali dalla pagina Releases. Tutti i binari sono linkati staticamente e senza dipendenze.
| Binary | Platform |
|---|---|
k8scout-linux-amd64 | Linux x86-64 |
k8scout-linux-arm64 | Linux ARM64 |
k8scout-darwin-amd64 | macOS Intel |
k8scout-darwin-arm64 | macOS Apple Silicon |
Compilazione dal sorgente
Richiede 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
Come funziona
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
Anche con un SA minimale che non può elencare pod o oggetti RBAC, lo strumento sintetizza il grafo del punto di appoggio dalla sola identità e scopre cosa è raggiungibile tramite i permessi SSRR/SSAR.