Voltar às atualizações
New releaseAug 16, 2026

k8scout v0.1.2

Solte um único binário em um pod Kubernetes comprometido e mapeie instantaneamente todos os caminhos de ataque realistas para cluster-admin, escape de nó, roubo de segredos e tomada de controle de IAM na nuvem.

Compartilhar

logotipo k8scout

GitHub stars GitHub forks GitHub issues GitHub license

k8scout

Beta — Um mecanismo de caminhos de ataque Kubernetes em um único binário para avaliações de segurança autorizadas.

Coloque-o dentro de um pod comprometido, execute-o e obtenha um mapa de cada caminho de escalação realista — do seu ponto de apoio atual até cluster-admin, acesso a nós, roubo de segredos e funções IAM em nuvem.


A ideia

Você tem RCE em um pod Kubernetes. E agora?

O k8scout responde a essa pergunta. Ele descobre automaticamente o que a conta de serviço do pod comprometido pode fazer, mapeia o grafo RBAC e traça caminhos de ataque de múltiplas etapas a partir do seu ponto de apoio exato até alvos de alto valor.

Ele funciona em três modos:

  • Modo ofensivo (padrão) — execute de dentro de um pod comprometido. Descobre sua identidade, permissões e todos os caminhos de escalação alcançáveis a partir da sua posição atual.
  • Modo revisor (--reviewer-mode) — execute com uma SA somente leitura para auditar toda a superfície de ataque do cluster para todas as identidades.
  • Modo reconhecimento (--recon) — uma verificação rápida e de baixo impacto apenas da sua identidade, permissões efetivas e quais recursos você pode tocar. Sem grafo ou busca de caminhos. Adicione --bruteforce-ns para descobrir namespaces que você não pode listar em todo o cluster.

Demonstração

demonstração k8scout


O que ele encontra

O k8scout constrói um grafo de permissões ponderado e executa busca de caminhos baseada em Dijkstra para descobrir cadeias de ataque realistas de múltiplas etapas:

  • Pod para cluster-admin — através de bindings RBAC, mutação de workloads ou criação de CRB
  • Escape de container para nó — via containers privilegiados, hostPID, hostNetwork, capabilities perigosas ou mounts hostPath
  • Movimento lateral — exec em outros pods, roubo de tokens SA, pivotar através de suas permissões
  • Roubo de segredos e credenciais — tokens SA montados, secrets, configmaps com credenciais vazadas, tokens órfãos
  • Escalação de IAM em nuvem — IRSA (AWS), GKE Workload Identity, Azure Workload Identity, abuso de audiências de token projetado
  • Cadeias de personificação — tomada de SA para SA através de permissões de impersonate
  • Mutação de workloads — aplicar patch em um deployment para alterar sua SA, depois herdar as permissões dessa SA
  • Injeção de webhook — controle de webhook mutante para injetar em workloads futuras
  • Abuso de operadores GitOps — escalação de privilégio de operadores ArgoCD, Flux, External Secrets e Vault
  • Detecção de má configuração — bindings pendentes, verbos curinga, tokens montados automaticamente, segredos em texto claro em variáveis de ambiente

Cada descoberta inclui IDs de técnica MITRE ATT&CK, uma pontuação de risco e um caminho de ataque passo a passo com os nós do grafo envolvidos. 50 regras de detecção no total.


Início rápido

A partir de um pod comprometido (caso de uso principal)

# Copie o binário para dentro do pod
kubectl cp k8scout-linux-amd64 <ns>/<pod>:/tmp/k8scout

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

# Obtenha os resultados
kubectl cp <ns>/<pod>:/tmp/result.json ./result.json

# Esse fluxo funciona exatamente assim se você estiver usando uma revshell!

O binário detecta automaticamente que está sendo executado dentro do cluster, identifica o pod e a SA e começa a busca de caminhos a partir do seu ponto de apoio exato.

Uso pretendido: Engajamentos de teste de penetração, operações de equipe vermelha, revisões internas de segurança e auditorias de hardening de cluster. Sempre obtenha autorização adequada antes de executar contra qualquer cluster.

A partir da sua máquina local

# Usa ~/.kube/config ou $KUBECONFIG
k8scout --all-namespaces --out result.json

# Alveje um único namespace
k8scout --namespace production --out result.json

Modo reconhecimento (verificação rápida de permissão e recursos)

# Quem sou eu, o que posso fazer e quais recursos posso acessar?
k8scout --recon

# Descubra namespaces que você não pode listar em todo o cluster (wordlist embutida)
k8scout --recon --bruteforce-ns

# Bruteforce com sua própria wordlist de namespaces (um nome por linha)
k8scout --recon --bruteforce-ns --ns-wordlist ./namespaces.txt

O recon ignorar construção de grafo, inferência e IA — é a maneira mais rápida de responder "o que esse token realmente tem?". Ele reporta a identidade atual, suas permissões efetivas (SelfSubjectRulesReview) e uma matriz de capacidade por recurso (SelfSubjectAccessReview). --bruteforce-ns confirma que um namespace existe ao ler objetos conhecidos que todo namespace possui (o objeto namespace, seu default ServiceAccount ou o ConfigMap kube-root-ca.crt) — útil quando a identidade não pode listar namespaces mas ainda pode acessar namespaces específicos.

Modo revisor (auditoria completa do cluster)

# Implemente o RBAC somente leitura e o job
kubectl apply -f deploy/rbac.yaml
kubectl apply -f deploy/job.yaml

# Ou execute diretamente com permissões de revisor
k8scout --reviewer-mode --all-namespaces --out result.json

Com narrativa de IA

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

Instalação

Binários pré-compilados

Baixe da página de Releases. Todos os binários são estaticamente vinculados, sem dependências.

BinárioPlataforma
k8scout-linux-amd64Linux x86-64
k8scout-linux-arm64Linux ARM64
k8scout-darwin-amd64macOS Intel
k8scout-darwin-arm64macOS Apple Silicon

Compilar a partir do código fonte

Requer Go 1.22+.

git clone https://github.com/hac01/k8scout
cd k8scout
make build          # binário nativo
make build-linux    # binário Linux estático amd64
make build-all      # todos os quatro alvos de release

Como funciona

k8scout (executando dentro de um pod comprometido)
 |
 ├── 1. Detectar ponto de apoio
 │     Nome do pod (HOSTNAME), SA (TokenReview), Node (downward API)
 │
 ├── 2. Descobrir permissões
 │     SSRR por namespace + ~30 verificações pontuais SSAR concorrentes
 │     (sempre permitido, nenhum RBAC necessário)
 │
 ├── 3. Enumerar objetos do cluster (degradação graciosa se negado)
 │     Namespaces, RBAC, Workloads, Pods, Secrets, Nodes, Webhooks, CRDs
 │
 ├── 4. Construir grafo de ataque
 │     Nós: pods, SAs, roles, bindings, secrets, workloads, nodes, identidades na nuvem
 │     Arestas: runs_as, mounts, authenticates_as, can_exec, can_patch,
 │            can_impersonate, runs_on, assumes_cloud_role, granted_by, ...
 │
 ├── 5. Encontrar caminhos de ataque (Dijkstra do ponto de apoio até alvos de alto valor)
 │     Ponderado pelo esforço do atacante — primeiro os mais baratos (mais realistas)
 │     Alvos: cluster-admin, nodes, tokens SA, IAM na nuvem, workloads privilegiados
 │
 ├── 6. Executar regras de inferência (50 regras com mapeamento MITRE ATT&CK)
 │
 ├── 7. Opcional: Narrativa de risco por IA (GPT-4o)
 │
 └── 8. Saída: resumo em texto + relatório JSON

Categorias