Publié le : 2026-03-04
L'équipe de recherche en sécurité cloud de KENSAI a analysé 12 000 clusters Kubernetes en production dans des entreprises européennes et a constaté que 58 % contiennent des mauvaises configurations RBAC (contrôle d'accès basé sur les rôles) suffisamment graves pour permettre un mouvement latéral et une élévation de privilèges jusqu'au niveau cluster-admin. Les cinq schémas les plus dangereux — permissions génériques (wildcard), abus du compte de service par défaut, ClusterRoleBindings excessifs, évasion de l'espace de noms via les droits de création de pods, et montage automatique de jetons dans des pods privilégiés — sont présents dans la majorité des déploiements. La plupart des organisations n'auditent pas leurs politiques RBAC après la configuration initiale.
⚡ Si un attaquant compromet n'importe quel pod dans 58 % des clusters analysés, il peut escalader jusqu'à un accès cluster-admin complet en quelques minutes, en s'appuyant uniquement sur des mauvaises configurations RBAC.
La mauvaise configuration la plus répandue : 23 % des clusters ont des ClusterRoles personnalisés avec des verbes ou des ressources génériques (*). Les équipes copient le rôle cluster-admin comme point de départ et oublient de le restreindre. Un seul pod dont le compte de service est lié à un tel rôle dispose d'un accès illimité à chaque ressource dans chaque espace de noms — secrets, configmaps, nœuds, et le serveur API lui-même.
# Dangereux : ClusterRole avec permissions génériques
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: devops-tools
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"] # ← Équivalent d'un cluster-admin complet
Chaque espace de noms Kubernetes dispose d'un compte de service default qui est automatiquement monté dans les pods sauf désactivation explicite. Dans 41 % des clusters, le compte de service par défaut d'au moins un espace de noms s'est vu attribuer des permissions élevées — souvent parce qu'un opérateur a exécuté rapidement un kubectl create rolebinding pendant le débogage et ne l'a jamais nettoyé. Les attaquants qui obtiennent une exécution de code à distance dans n'importe quel pod de cet espace de noms héritent immédiatement de ces permissions.
34 % des clusters ont plus de 10 ClusterRoleBindings personnalisés — des liaisons qui accordent des permissions sur tous les espaces de noms. Beaucoup lient des rôles étendus à des groupes comme system:authenticated ou system:serviceaccounts, accordant de fait un accès élevé à chaque utilisateur authentifié ou à chaque compte de service du cluster.
Les utilisateurs disposant de la permission create pods dans n'importe quel espace de noms peuvent monter le système de fichiers de l'hôte, exécuter des conteneurs privilégiés, ou créer des pods avec n'importe quel compte de service de cet espace de noms. Dans 29 % des clusters, les développeurs disposent de droits de création de pods sans application des Pod Security Standards — permettant une évasion de conteneur triviale vers le nœud sous-jacent.
Kubernetes monte par défaut les jetons de compte de service dans les pods. Combiné à des spécifications de pod privilégiées ou à un accès au réseau de l'hôte, les attaquants peuvent voler le jeton et s'authentifier auprès du serveur API depuis l'extérieur du cluster. Seuls 12 % des clusters analysés définissent automountServiceAccountToken: false sur les charges de travail qui n'ont pas besoin d'accès à l'API.
get secrets sur tous les espaces de noms — l'attaquant a extrait des identifiants de base de données, des clés API et des certificats TLS en 4 minutes.
Plus de la moitié des clusters Kubernetes en production analysés contiennent au moins une mauvaise configuration RBAC pouvant permettre une élévation de privilèges d'un pod compromis jusqu'à un accès de niveau cluster-admin.
Lors de tests d'intrusion contre des clusters mal configurés, le temps moyen entre la compromission initiale d'un pod et l'obtention d'un accès cluster-admin complet était de 3,2 minutes. Des outils automatisés comme peirates et kubeletctl rendent cela trivial.
Les clusters disposant de permissions de lecture génériques exposaient en moyenne 847 secrets Kubernetes — incluant des identifiants de base de données, des clés API, des certificats TLS et des jetons IAM de fournisseurs cloud, dans tous les espaces de noms.
La grande majorité des organisations configurent le RBAC une seule fois lors du provisionnement du cluster et ne le révisent plus jamais. Les liaisons de rôles s'accumulent au fil des mois à mesure que les équipes ajoutent des permissions pour le débogage, les pipelines CI/CD et la supervision — sans jamais les retirer.
Le module de sécurité Kubernetes de KENSAI inclut désormais une analyse RBAC automatisée qui cartographie chaque compte de service, rôle et liaison dans votre cluster afin d'identifier les chemins d'élévation de privilèges. Le scanner génère un graphe visuel des chaînes de permissions et met en évidence le chemin le plus court entre n'importe quelle charge de travail compromise et le niveau cluster-admin.
Chaque charge de travail devrait disposer de son propre compte de service dédié avec uniquement les permissions dont elle a réellement besoin. Évitez de lier des ClusterRoles lorsque des Roles limités à l'espace de noms suffisent. Utilisez automountServiceAccountToken: false pour les pods qui n'ont pas besoin d'accès à l'API Kubernetes — ce qui est le cas de la majorité des charges de travail applicatives.
Les Pod Security Standards (PSS) de Kubernetes au niveau restricted empêchent les pods de s'exécuter en tant que root, de monter des chemins de l'hôte, ou d'utiliser le mode privilégié. Appliquez-les au niveau de l'espace de noms via Pod Security Admission. Cela élimine le vecteur d'évasion de conteneur même si les permissions RBAC sont trop larges.
Mettez en place des audits RBAC trimestriels. Passez en revue tous les ClusterRoleBindings, identifiez les liaisons obsolètes provenant d'anciens membres de l'équipe ou de services mis hors service, et vérifiez qu'aucun compte de service ne dispose de permissions plus larges que nécessaire. KENSAI peut automatiser cela grâce à une détection continue des dérives.
kubectl get clusterroles -o json | jq '.items[] | select(.rules[]?.verbs[]? == "*")'automountServiceAccountToken: false sur toutes les charges de travail qui n'ont pas besoin d'accès à l'APIrestricted des PSS au niveau de l'espace de noms pour toutes les charges de travail de productionkubectl get clusterrolebindings -o wide — signalez tout ce qui est lié à des groupes étenduskensai scan --k8s-rbac contre votre cluster pour obtenir une évaluation complète des risques RBAC en moins de 60 secondes. Le rapport inclut un graphe d'élévation de privilèges, des étapes de remédiation spécifiques pour chaque constat, et une correspondance de conformité NIS2 pour les organisations soumises à la directive.
*) des ClusterRoles personnaliséssystem:authenticated ou system:serviceaccountsautomountServiceAccountToken: false sur tous les pods qui n'ont pas besoin d'accès à l'APIrestricted pour les espaces de noms de production🛡️ Votre site web est-il sécurisé ?
Découvrez les vulnérabilités avant les attaquants.
Analysez gratuitement votre site web →