Retour au blog
12 juin 2026

Tests de sécurité Kubernetes : Tests d'intrusion sur les clusters K8s, les pods et les charges de travail

Viktor Bulanek
Founder & CTO, Penetrify
MSc IT Security · 20+ years in security · 4x Ex-CTO

Kubernetes ne résout pas vos problèmes de sécurité des applications—il ajoute une couche d'orchestration par-dessus. Chaque cluster introduit un plan de contrôle, un runtime de nœud, un modèle d'identité, un réseau défini par logiciel et un magasin de secrets, chacun avec ses propres modes de défaillance. Un seul RoleBinding trop permissif ou un pod privileged: true peut transformer une vulnérabilité web de faible gravité en une prise de contrôle complète du cluster, et de là en une compromission du compte cloud sous-jacent.

Ce guide explique comment tester concrètement un environnement Kubernetes : la surface d'attaque, les mauvaises configurations qui apparaissent dans presque chaque audit, les vecteurs d'évasion de conteneur qui transforment un pod compromis en accès root sur le nœud, et comment les trois disciplines—l'analyse d'images, les tests d'exécution (runtime testing) et le Penetration Testing de cluster—s'articulent.


La surface d'attaque de Kubernetes

Avant de tester, cartographiez ce qu'un attaquant voit. Un cluster Kubernetes expose quatre composants de grande valeur, et chacun est une cible distincte avec des modes de défaillance distincts.

Le serveur API

Le kube-apiserver est la porte d'entrée de tout. Chaque commande kubectl, chaque contrôleur, chaque charge de travail qui communique avec le cluster passe par lui. Tester le serveur API signifie vérifier que l'accès anonyme est désactivé, que l'authentification est appliquée (pas seulement l'autorisation RBAC derrière une porte ouverte), que les drapeaux --anonymous-auth=false et d'audit-logging sont définis, et que le point d'accès n'est pas inutilement exposé à l'internet public. Un nombre surprenant de clusters gérés et auto-hébergés laissent encore le serveur API accessible de n'importe où avec seulement une protection basée sur des jetons.

Le kubelet

Chaque nœud exécute un kubelet, qui expose une API (port par défaut 10250) pour gérer les pods sur ce nœud. Si le kubelet autorise un accès non authentifié ou en lecture seule (le port hérité 10255), un attaquant qui atteint un nœud—ou un pod qui peut y acheminer du trafic—peut énumérer les pods en cours d'exécution, lire leur environnement et, dans les clusters mal configurés, exécuter des commandes à l'intérieur des conteneurs. Le kubelet est le point de pivot classique que kube-hunter recherche.

etcd

etcd est la base de données du cluster. Il stocke chaque objet, y compris les Secrets, en texte clair à moins que le chiffrement au repos ne soit explicitement activé. L'accès direct à etcd équivaut à un accès cluster-admin : vous pouvez lire toutes les informations d'identification et réécrire l'état du cluster. Les tests vérifient qu'etcd n'est accessible que depuis le plan de contrôle, qu'il nécessite un TLS mutuel et que --encryption-provider-config est configuré afin que les Secrets ne soient pas en texte clair.

RBAC et identité

Le contrôle d'accès basé sur les rôles (RBAC) est le tissu conjonctif. Il décide quels sujets peuvent accéder à quelles ressources. Parce que le RBAC est additif et facile à sur-accorder, il est la source la plus courante de chemins d'escalade de privilèges dans les clusters réels—ce qui est abordé en détail ci-dessous.

Mauvaises configurations courantes de cluster

L'expression mauvaise configuration de sécurité de cluster Kubernetes couvre un ensemble prévisible de schémas. Ce sont les découvertes qui apparaissent dans presque chaque première évaluation, classées approximativement par la fréquence à laquelle elles mènent à une compromission réelle.

Pods privilégiés et sur-capables

Un pod avec securityContext.privileged: true a un accès effectivement illimité à l'hôte. Même sans privilège complet, des capacités dangereuses comme CAP_SYS_ADMIN, allowPrivilegeEscalation: true, ou l'exécution en tant qu'UID 0 donnent à un attaquant bien plus que ce dont la charge de travail a besoin. La solution est un contexte de sécurité restrictif appliqué partout :

securityContext: runAsNonRoot: true runAsUser: 1000 allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities: drop: ["ALL"]

Montages hostPath et espaces de noms partagés

Un volume hostPath monte un répertoire du nœud dans le pod. Montez /, /var/run/docker.sock ou /etc/kubernetes et le conteneur peut lire ou écrire le système de fichiers de l'hôte—une évasion immédiate. Il en va de même pour hostPID, hostNetwork et hostIPC, qui rompent la limite d'isolation entre le pod et le nœud. Les tests signalent toute charge de travail demandant ces éléments, à moins qu'il n'y ait une raison documentée et auditée (un CNI ou un DaemonSet de surveillance, par exemple).

Jetons de compte de service par défaut

Par défaut, chaque pod reçoit le jeton de compte de service default de l'espace de noms, monté à l'emplacement /var/run/secrets/kubernetes.io/serviceaccount/token. Si ce compte de service dispose de permissions RBAC significatives—ou si la charge de travail n'a pas besoin d'accès à l'API du tout—le jeton constitue un matériel d'identification gratuit pour quiconque compromet le pod. Définissez automountServiceAccountToken: false sur les charges de travail qui n'appellent pas l'API, et délimitez celles qui le font.

NetworkPolicies manquantes

Par défaut, le réseau Kubernetes est plat : tout pod peut atteindre n'importe quel autre pod dans n'importe quel espace de noms. Sans NetworkPolicies, un seul pod frontal compromis peut communiquer directement avec votre base de données, vos services d'administration internes et le point de terminaison des métadonnées du cloud. Une politique de refus par défaut par espace de noms, avec des règles d'autorisation explicites, constitue la base :

apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-all spec: podSelector: {} policyTypes: ["Ingress", "Egress"]

Secrets non chiffrés et métadonnées exposées

Les Secrets Kubernetes sont encodés en base64, non chiffrés. Sans chiffrement etcd au repos, ils sont lisibles par quiconque ayant accès à etcd ou aux sauvegardes. De plus, les pods qui peuvent atteindre le service de métadonnées de l'instance cloud (169.254.169.254) peuvent souvent voler les identifiants de rôle IAM du nœud—le pont entre la compromission du cluster et la compromission du compte cloud.

RBAC : Qui peut faire quoi

Le RBAC Kubernetes contrôle l'accès aux ressources du cluster via les Roles, ClusterRoles, RoleBindings et ClusterRoleBindings. Un bon test va au-delà de la question « quelque chose est-il lié à cluster-admin » et recherche les chemins d'escalade—des chaînes de permissions d'apparence raisonnable qui, combinées, mènent à un contrôle total.

Les verbes à surveiller sont escalate, bind et impersonate. Un sujet qui peut create des pods peut souvent monter un compte de service privilégié et lire son jeton. Un sujet qui peut bind des rôles peut s'octroyer le rôle cluster-admin. Un sujet avec impersonate peut agir en tant que n'importe quel utilisateur. D'autres chemins classiques incluent la capacité de lire les Secrets à l'échelle du cluster, de créer ou modifier des ValidatingWebhookConfigurations (interceptant chaque requête API), ou d'exécuter des commandes dans des pods fonctionnant avec des privilèges plus élevés.

Les tests RBAC pratiques répondent à la question : un compte de service par défaut possède-t-il des permissions dont il n'a pas besoin ? Un sujet limité à un espace de noms peut-il atteindre des ressources à l'échelle du cluster ? Existe-t-il des règles génériques (resources: ["*"], verbs: ["*"]) ? Des outils comme rbac-tool et kubectl-who-can aident à les énumérer, mais l'interprétation de la réelle exploitabilité d'une chaîne est l'endroit où les tests adversariaux prouvent leur valeur.

Tests d'évasion de conteneur

La classe de vulnérabilité la plus critique dans Kubernetes est la vulnérabilité d'évasion de conteneur—permettant de s'échapper d'un conteneur pour accéder au nœud hôte, puis d'utiliser ce point d'ancrage pour un mouvement latéral. C'est le cœur du problème de sécurité Docker lié aux vulnérabilités d'évasion de conteneur, et cela s'applique que votre runtime soit containerd, CRI-O ou Docker.

Les vecteurs d'évasion se répartissent en deux catégories. La première est liée à la configuration : le conteneur a reçu suffisamment d'accès pour s'échapper. Un fichier /var/run/docker.sock inscriptible permet à un conteneur de créer un nouveau conteneur privilégié sur l'hôte. Un pod privilégié peut monter le système de fichiers racine de l'hôte et écrire une clé SSH ou une tâche cron. hostPID expose les processus de l'hôte à l'injection. Ce sont les évasions courantes, à forte probabilité, et elles correspondent directement aux erreurs de configuration mentionnées ci-dessus.

La deuxième catégorie est basée sur l'exploitation : les CVEs du noyau et du runtime. Des exemples historiques comme CVE-2019-5736 (écrasement de /proc/self/exe de runc) et diverses failles de cgroups et du noyau permettent à un attaquant de s'échapper même d'un conteneur raisonnablement configuré. Les tests ici consistent à connaître les versions de runtime et de noyau que vous utilisez, à les vérifier par rapport aux CVEs d'évasion connues, et à confirmer que les contrôles de défense en profondeur (seccomp, AppArmor/SELinux, gVisor ou Kata pour les charges de travail à haut risque) sont réellement appliqués plutôt que définis sur Unconfined.

Une chaîne d'attaque réaliste : une faille SSRF dans une charge de travail web atteint le point d'accès des métadonnées du cloud → vole le rôle IAM du nœud → le rôle peut extraire des images d'un registre de conteneurs et le compte de service du pod peut lister les Secrets → un Secret contient un kubeconfig d'administrateur de cluster → l'attaquant planifie un pod privilégié sur chaque nœud. Chaque étape est banale. Enchaînées, c'est la fin de partie. C'est précisément le genre de cheminement en plusieurs étapes que les scanners automatisés à problème unique manquent.

Analyse de sécurité des conteneurs vs Tests de runtime vs Pentesting de cluster

Les équipes demandent souvent quel outil "assure la sécurité de Kubernetes". La réponse honnête est qu'il existe trois disciplines différentes, qu'elles répondent à des questions différentes, et qu'un programme mature les exécute toutes les trois. Comprendre l'analyse de sécurité des conteneurs vs les tests de runtime—et où se situe le pentesting de cluster—est la clé pour ne pas gaspiller de budget sur une couverture redondante tout en laissant de réelles lacunes.

DimensionAnalyse d'imagesTests d'exécutionPenetration Testing de cluster
Question à laquelle il répondCette image contient-elle des paquets connus pour être vulnérables ?La charge de travail en cours d'exécution se comporte-t-elle de manière sûre actuellement ?Un attaquant peut-il réellement compromettre le cluster ?
Quand il s'exécuteBuild / registre / porte CIEn continu, dans le cluster en directPonctuel, adversarial
Ce qu'il inspecteCouches d'image, paquets OS, bibliothèques, DockerfileAppels système, comportement des processus, flux réseau, dériveRBAC, chemins d'évasion, mouvement latéral, exploits de charge de travail
DétecteCVEs, dépendances obsolètes, secrets dans les couchesAnomalies, crypto-mineurs, egress inattenduChemins d'attaque chaînés et exploitables de bout en bout
ManqueConfiguration d'exécution, RBAC, failles logiquesMauvaises configurations latentes non encore déclenchéesProblèmes en dehors de la fenêtre de test
Exemples d'outilsTrivy, Grype, ClairFalco, Tetragon, Sysdigkube-hunter, Penetration Test manuel, Penetrify
Adaptation à l'automatisationEntièrement automatisable en CIAgent toujours actifPlanifié + continu basé sur l'IA

L'analyse d'images est peu coûteuse, rapide et a sa place dans chaque pipeline—mais une image parfaitement analysée s'exécute toujours en tant que root avec un montage hostPath si vous le permettez. Les tests d'exécution détectent ce qui se passe mais vous en disent peu sur ce qui pourrait se produire. Le Penetration Testing de cluster est le seul des trois qui prouve l'exploitabilité en enchaînant les découvertes comme le ferait un attaquant. Aucun ne remplace les autres.

Outillage : kube-bench, kube-hunter et Trivy

Un flux de travail robuste d'analyse de sécurité des conteneurs pour Kubernetes combine généralement trois outils open-source essentiels, chacun avec un rôle clair. Ils sont complémentaires, pas concurrents.

kube-bench

kube-bench exécute le CIS Kubernetes Benchmark sur vos nœuds et votre plan de contrôle. C'est un auditeur de configuration : il vérifie les drapeaux du serveur API, les paramètres kubelet, les permissions de fichiers sur les composants du cluster et la configuration etcd par rapport à une norme de durcissement bien connue. Exécutez-le sur chaque nœud et en CI contre vos manifestes de cluster. Il vous indique si votre cluster est construit selon les spécifications ; il ne vous dit pas si les spécifications sont attaquées.

kube-hunter

kube-hunter est un outil de reconnaissance active. Dirigé vers un cluster (ou exécuté comme un pod à l'intérieur), il sonde les kubelets exposés, les points d'extrémité API accessibles, le service de métadonnées et les points faibles connus, puis rapporte ce qu'un attaquant pourrait découvrir. Il est plus proche d'un scanner réseau pour Kubernetes qu'un Penetration Test complet—excellent pour la cartographie de surface, limité pour prouver l'exploitation de bout en bout.

Trivy

Trivy est le scanner couteau suisse : CVEs d'images conteneur, analyse des mauvaises configurations de manifestes IaC et Kubernetes, secrets exposés et génération de SBOM. C'est le choix naturel pour la colonne "Analyse d'images" ci-dessus et il s'intègre proprement dans les pipelines de build. Associez-le à kube-bench pour la couverture de la configuration et à kube-hunter pour la reconnaissance en direct, et vous obtenez une base open-source solide.

Ce que ce trio ne fait pas, c'est raisonner sur la logique de votre application, enchaîner une vulnérabilité de la couche web pour prendre le contrôle d'un cluster, ou adapter son approche comme le ferait un attaquant humain. C'est cette lacune que la section suivante aborde. Pour intégrer ces scanners dans votre pipeline de livraison, consultez notre guide sur le CI/CD Penetration Testing et l'automatisation de la sécurité des pipelines.

La couche web et API des charges de travail

Voici la partie que la plupart des programmes de sécurité Kubernetes sous-estiment : les charges de travail elles-mêmes. Votre cluster héberge des applications web et des API, et c'est de là que provient généralement le point d'entrée initial. Un attaquant commence rarement par un kubeconfig volé—il commence par une SSRF, un contournement d'authentification, ou une vulnérabilité d'injection dans un service que vous avez déployé, et ensuite pivote vers le cluster en utilisant les mauvaises configurations mentionnées ci-dessus.

C'est exactement là que le Penetration Testing autonome basé sur l'IA s'intègre. Les scanners de configuration et les benchmarks CIS ne peuvent pas trouver un contournement d'authentification de logique métier dans votre service de paiement ; ils n'ont jamais été conçus pour cela. Les tests basés sur l'IA exercent les points d'extrémité web et API en cours d'exécution au sein de vos charges de travail comme le ferait un attaquant—sondant l'authentification, l'autorisation, l'injection et la SSRF—puis suivent la chaîne : d'une vulnérabilité de charge de travail, au jeton de compte de service monté, aux permissions du cluster que ce jeton déverrouille, jusqu'au rôle IAM cloud derrière le nœud.

Cette couverture continue de la couche applicative, enchaînant les exploits, complète—plutôt que de remplacer—votre pipeline kube-bench et Trivy. Pour la dimension spécifique aux API, notre analyse approfondie sur l'automatisation des tests de sécurité des API couvre l'OWASP API Top 10 et la manière de rendre ces tests reproductibles sur l'ensemble des déploiements.

Si vous êtes encore en train de définir les charges de travail et les clusters à prioriser, l'article complémentaire sur les tests de sécurité des conteneurs pour les images Docker et la protection runtime couvre plus en détail les aspects liés aux images et au runtime, et notre guide sur la correction des mauvaises configurations courantes des clusters Kubernetes fournit des étapes de remédiation concrètes pour les problèmes mentionnés ci-dessus.

Tester Kubernetes avec Penetrify

Les tests de sécurité Kubernetes de Penetrify couvrent le RBAC, la sécurité des pods, les politiques réseau, la gestion des secrets, les vecteurs d'évasion de conteneurs et les configurations Kubernetes gérées (EKS, AKS, GKE). Les tests évaluent à la fois la couche Kubernetes et la couche d'intégration du fournisseur de cloud—car un compromis Kubernetes conduit souvent à un compromis du compte cloud via les comptes de service liés et les rôles IAM.

La différence de coût est la raison pour laquelle les équipes l'automatisent. Un Penetration Test Kubernetes manuel traditionnel effectué par un cabinet de conseil coûte généralement entre 5 000 $ et 50 000 $ par mission et vous fournit un instantané ponctuel qui est obsolète dès que vous déployez votre prochaine version. Penetrify fonctionne en continu à partir de 100 $ à 5 000 $ par mois, re-testant chaque fois que votre cluster change. Pour une analyse plus complète de ce qui motive ces chiffres, consultez notre comparaison des coûts de Penetration Testing.

Ce qu'il faut retenir

Kubernetes ajoute une couche d'orchestration entière de surface d'attaque en plus de votre infrastructure cloud. Le tester nécessite trois disciplines complémentaires—l'analyse d'images, la surveillance d'exécution et le cluster Penetration Testing—ainsi que des tests adversariaux des charges de travail web et API qui offrent aux attaquants leur première prise. Les scanners de configuration renforcent la construction ; seul le Penetration Testing par enchaînement d'exploits prouve ce qu'un attaquant peut réellement atteindre.

Penetrify combine le Penetration Testing autonome par IA de vos charges de travail avec des tests d'intégration de cluster et de cloud, en continu et à partir de 100 $/mois—afin que la sécurité de votre Kubernetes suive le rythme de chaque déploiement au lieu de chaque audit annuel.

Foire Aux Questions

Que devrais-je tester dans un cluster Kubernetes ?Les politiques RBAC et les chemins d'escalade, les contextes de sécurité des pods, les NetworkPolicies, la gestion des secrets et le chiffrement etcd, les vecteurs d'évasion de conteneurs, la chaîne d'approvisionnement d'images, et l'intégration entre Kubernetes et le modèle IAM de votre fournisseur de cloud. De manière critique, testez également les charges de travail web et API exécutées à l'intérieur du cluster—elles sont généralement le point d'entrée de l'attaquant. Quelle est la différence entre l'analyse de conteneurs et les tests d'exécution ?L'analyse d'images (Trivy, Grype) inspecte les images de conteneurs au moment de la construction pour détecter les paquets connus vulnérables et les secrets exposés. Les tests d'exécution (Falco, Tetragon) surveillent le comportement des charges de travail en direct—appels système (syscalls), flux réseau, dérive—pour détecter les anomalies. L'analyse détecte ce qui se trouve dans l'image ; l'exécution détecte ce que fait la charge de travail. Aucun des deux ne prouve si un attaquant peut enchaîner les découvertes pour aboutir à un compromis complet, ce que le cluster Penetration Testing apporte. Comment les évasions de conteneurs se produisent-elles, et comment les tester ?Les évasions sont soit basées sur la configuration (pods privilégiés, montages hostPath, socket Docker inscriptible, espaces de noms d'hôte partagés) soit basées sur des exploits (CVEs de runtime et de noyau comme CVE-2019-5736). Testez en auditant les contextes de sécurité pour les paramètres dangereux, en vérifiant vos versions de runtime et de noyau par rapport aux CVEs d'évasion connues, et en confirmant que seccomp, AppArmor/SELinux et les contrôles d'admission sont réellement appliqués plutôt que laissés sans restriction. À quelle fréquence les clusters Kubernetes devraient-ils être testés ?Exécutez l'analyse de configuration (kube-bench, Trivy) à chaque construction et changement de cluster, et maintenez la surveillance d'exécution toujours active. Complétez avec du Penetration Testing adversarial—idéalement des tests continus basés sur l'IA qui se réexécutent après chaque déploiement, plus un examen manuel plus approfondi après les mises à niveau majeures, les changements RBAC ou les nouvelles charges de travail à haut risque. Les Penetration Tests ponctuels trimestriels seuls laissent de longues périodes d'aveuglement dans un cluster qui change quotidiennement.

Frequently Asked Questions

Quels types de vulnérabilités Penetrify détecte-t-il ?

Penetrify détecte toutes les catégories de vulnérabilités OWASP Top 10, notamment les injections SQL, XSS, CSRF, IDOR, les failles d'authentification, les mauvaises configurations de sécurité et l'exposition de données sensibles. Il teste également la sécurité des API, la gestion des sessions et les mauvaises configurations courantes dans Supabase, Firebase et Bubble.

Combien de temps dure un test de pénétration IA ?

Un scan rapide se termine en 15–30 minutes. Un scan standard dure 1–2 heures avec une couverture plus large. Un scan approfondi peut durer plusieurs heures pour les applications complexes.

Que contient un rapport Penetrify ?

Chaque rapport comprend un résumé exécutif, un score de sécurité global, des résultats classés par gravité (Critique, Élevé, Moyen, Faible), des étapes de reproduction détaillées et des recommandations de remédiation concrètes rédigées pour les développeurs – pas pour les responsables conformité.

Related articles

Comment sécuriser les clusters Kubernetes avec le Cloud Penetration Testing
Découvrez comment sécuriser les clusters Kubernetes grâce au cloud Penetration Testing. Réduisez votre surface d'attaque, maîtrisez des défenses éprouvées et protégez les applications à l'échelle du cloud. Guide d'expert : fortifiez-vous dès maintenant !
Sécurisez vos clusters Kubernetes avec le Cloud Penetration Testing
Protégez vos clusters Kubernetes grâce à des services experts de Penetration Testing dans le cloud. Détectez les vulnérabilités, comme les erreurs de configuration RBAC, avant que les attaquants ne le fassent. Sécurisez votre configuration – commencez dès maintenant !
Tests de sécurité des conteneurs : Docker, images et protection d'exécution
Les conteneurs exécutent vos charges de travail de production. Voici comment tester les images, les configurations d'exécution et l'orchestration afin de détecter les vulnérabilités qui peuvent mener à des "breakouts".

Explore more