
Déposez un seul binaire dans un pod Kubernetes compromis et cartographiez instantanément chaque chemin d'attaque réaliste vers cluster-admin, node escape, secret theft et cloud IAM takeover.
Bêta — Un moteur de chemins d'attaque Kubernetes en binaire unique pour les évaluations de sécurité autorisées.
Déposez-le dans un pod compromis, exécutez-le, et obtenez une cartographie de chaque chemin d'escalade réaliste, depuis votre point d'ancrage actuel jusqu'à cluster-admin, l'accès aux nœuds, le vol de secrets et les rôles IAM cloud.
Vous avez une RCE dans un pod Kubernetes. Et maintenant ?
k8scout répond à cette question. Il découvre automatiquement ce que le service account du pod compromis peut faire, cartographie le graphe RBAC, et trace les chemins d'attaque multi-étapes depuis votre point d'ancrage exact jusqu'aux cibles à haute valeur.
Il fonctionne selon trois modes :
--reviewer-mode) — exécuté avec un SA en lecture seule pour auditer la surface d'attaque complète du cluster pour toutes les identités.--recon) — un examen rapide et discret de votre identité, de vos permissions effectives, et des ressources auxquelles vous pouvez accéder. Pas de graphe ni de recherche de chemins. Ajoutez --bruteforce-ns pour découvrir les namespaces que vous ne pouvez pas lister à l'échelle du cluster.
k8scout construit un graphe de permissions pondéré et exécute une recherche de chemins basée sur Dijkstra pour découvrir des chaînes d'attaque multi-étapes réalistes :
Chaque constat inclut les identifiants de techniques MITRE ATT&CK, un score de risque, et un chemin d'attaque étape par étape avec les nœuds de graphe réels impliqués. 50 règles de détection au total.
# Copier le binaire dans le pod
kubectl cp k8scout-linux-amd64 <ns>/<pod>:/tmp/k8scout
# L'exécuter
kubectl exec -it <ns>/<pod> -- chmod +x /tmp/k8scout
kubectl exec -it <ns>/<pod> -- /tmp/k8scout --out /tmp/result.json
# Récupérer les résultats
kubectl cp <ns>/<pod>:/tmp/result.json ./result.json
# Ce flux fonctionne exactement comme ça dans votre revshell !
Le binaire détecte automatiquement qu'il s'exécute dans le cluster, identifie le pod et le SA, et démarre la recherche de chemins depuis votre point d'ancrage exact.
Usage prévu : Missions de test d'intrusion, opérations red team, revues de sécurité internes, et audits de durcissement de cluster. Obtenez toujours une autorisation appropriée avant d'exécuter contre un cluster.
# Utilise ~/.kube/config ou $KUBECONFIG
k8scout --all-namespaces --out result.json
# Cibler un seul namespace
k8scout --namespace production --out result.json
# Qui suis-je, que puis-je faire, et à quelles ressources puis-je accéder ?
k8scout --recon
# Découvrir les namespaces que vous ne pouvez pas lister à l'échelle du cluster (wordlist intégrée)
k8scout --recon --bruteforce-ns
# Bruteforce avec votre propre wordlist de namespaces (un nom par ligne)
k8scout --recon --bruteforce-ns --ns-wordlist ./namespaces.txt
Le recon saute la construction du graphe, l'inférence et l'IA — c'est le moyen le plus rapide de répondre à
« que possède réellement ce jeton ? ». Il rapporte l'identité actuelle, ses
permissions effectives (SelfSubjectRulesReview), et une matrice de capacités
par ressource (SelfSubjectAccessReview). --bruteforce-ns confirme qu'un namespace existe
en lisant des objets bien connus que chaque namespace possède (l'objet namespace, son
ServiceAccount default, ou le ConfigMap kube-root-ca.crt) — utile quand
l'identité ne peut pas lister les namespaces mais peut toujours accéder à certains d'entre eux.
# Déployer le RBAC en lecture seule et le job
kubectl apply -f deploy/rbac.yaml
kubectl apply -f deploy/job.yaml
# Ou exécuter directement avec les permissions reviewer
k8scout --reviewer-mode --all-namespaces --out result.json
export OPENAI_API_KEY="sk-..."
k8scout --all-namespaces --out result.json
Téléchargez depuis la page Releases. Tous les binaires sont liés statiquement sans dépendances.
| Binaire | Plateforme |
|---|---|
k8scout-linux-amd64 | Linux x86-64 |
k8scout-linux-arm64 | Linux ARM64 |
k8scout-darwin-amd64 | macOS Intel |
k8scout-darwin-arm64 | macOS Apple Silicon |
Nécessite Go 1.22+.
git clone https://github.com/hac01/k8scout
cd k8scout
make build # binaire natif
make build-linux # binaire Linux amd64 statique
make build-all # les quatre cibles de release