Paper Files / Containers
TITRE: Architecture formelle et opérationnelle pour la détection et la confinement des menaces dans des environnements conteneurisés basés sur Kubernetes
TITRE: Architecture formelle et opérationnelle pour la détection et la confinement des menaces dans des environnements conteneurisés basés sur Kubernetes RÉSUMÉ: L’adoption d’architectures cloud-native fondées sur des conteneurs a profondément transformé la manière dont les applications distribuées sont conçues, déployées et mises à l’échelle. Kubernetes s’est imposé comme le principal système d’orchestration pour la gestion de workloads conteneurisés, offrant des abstractions déclaratives pour le scaling, la tolérance aux pannes et l’automatisation opérationnelle. Toutefois, cette couche d’abstraction supplémentaire introduit de nouveaux vecteurs d’attaque et élargit la surface d’exposition, en particulier dans des environnements à forte densité de conteneurs éphémères et de chaînes d’approvisionnement complexes d’images. Les exploitations de vulnérabilités dans les runtimes de conteneurs, les configurations non sécurisées des API d’orchestration et les campagnes automatisées de cryptominage dans des clusters mal configurés démontrent que les mécanismes de sécurité traditionnels sont insuffisants pour faire face à la nature dynamique de ces environnements. Dans ce travail, nous proposons une architecture formelle et opérationnelle pour la détection et la confinement des menaces dans des clusters Kubernetes, en combinant une modélisation mathématique des états du système avec des mécanismes pratiques d’observabilité et de réponse automatisée. Nous formalisons l’environnement conteneurisé comme un système de transitions étiquetées LTS = (S, A, →), permettant d’exprimer des propriétés d’intégrité et de non-interférence liées à l’interaction entre les conteneurs, les nœuds du cluster et le plan de contrôle. Sur cette base théorique, nous avons implémenté un pipeline de sécurité multicouche composé d’une analyse statique des images (Trivy et YARA), de politiques d’admission déclaratives utilisant Open Policy Agent/Gatekeeper, d’une surveillance comportementale au niveau du noyau avec eBPF via Falco et de mécanismes automatisés d’isolement utilisant NetworkPolicies et les contrôles administratifs de Kubernetes. L’architecture a été évaluée expérimentalement dans un cluster de 120 nœuds et 2 400 pods actifs, où différents scénarios d’attaque ont été simulés, notamment une tentative d’évasion de conteneur, l’exécution de mineurs de cryptomonnaie et un mouvement latéral via des identifiants compromis. Les résultats indiquent un taux moyen de détection de 96,3 % avec un taux de faux positifs de 3,8 %, ainsi que des réductions significatives des indicateurs opérationnels MTTD et MTTR. Ces résultats démontrent que l’intégration entre la formalisation théorique et la télémétrie de bas niveau basée sur eBPF constitue une approche efficace pour renforcer la sécurité opérationnelle des plateformes cloud-native à grande échelle.
- Introduction
La virtualisation légère basée sur les conteneurs est devenue le paradigme dominant pour l’exécution d’applications distribuées dans des environnements cloud-native. Contrairement aux machines virtuelles traditionnelles, les conteneurs partagent le noyau du système d’exploitation hôte et utilisent des mécanismes d’isolation fournis par le noyau Linux lui-même, tels que les namespaces, les control groups (cgroups), les capabilities et les filtres seccomp. Ce modèle permet un démarrage extrêmement rapide, une forte densité de workloads et une consommation réduite de ressources informatiques (MERKEL, 2014).
La consolidation de Kubernetes comme plateforme standard d’orchestration a considérablement accru l’adoption des conteneurs dans les environnements d’entreprise. Le système introduit des abstractions déclaratives pour la gestion d’applications distribuées, notamment les pods, les deployments, les services et les contrôleurs chargés de garantir l’état désiré du cluster (BURNS; BEDA; HIGHTOWER, 2019). Cette architecture facilite l’autoscaling et la reprise après incident, mais elle introduit également un plan de contrôle distribué qui doit être protégé contre les abus et les compromissions.
Malgré leurs avantages opérationnels, l’adoption massive des conteneurs a élargi la surface d’attaque des infrastructures modernes. Un exemple largement discuté a été la vulnérabilité CVE‑2019‑5736 dans le runtime runc, qui permettait d’écraser le binaire du runtime depuis l’intérieur du conteneur et potentiellement d’exécuter du code arbitraire sur l’hôte (OPEN CONTAINERS INITIATIVE, 2019). En parallèle, des campagnes d’attaque automatisées ont exploité des instances exposées de l’API Docker et des clusters Kubernetes mal configurés pour déployer des mineurs de cryptomonnaie et des outils de mouvement latéral (PALO ALTO NETWORKS, 2021).
Au-delà des vulnérabilités spécifiques, la complexité structurelle des environnements Kubernetes introduit de nouveaux défis de supervision. Un cluster de production peut contenir des milliers de pods éphémères, créés et détruits dynamiquement par des contrôleurs automatiques. Dans ce contexte, les mécanismes traditionnels fondés uniquement sur les logs ou l’analyse réseau deviennent insuffisants pour capturer en temps réel les comportements malveillants (ZHANG et al., 2018).
La matrice MITRE ATT&CK for Containers identifie plusieurs techniques d’attaque spécifiques à cet écosystème, notamment l’évasion de conteneur, l’abus d’identifiants de ServiceAccount, le déploiement d’images malveillantes et la compromission du plan de contrôle (MITRE, 2023). Ces vecteurs exigent des mécanismes de détection capables de corréler des événements provenant de différentes couches du système.
Face à ce contexte, nous formulons le problème central de cette recherche : comment garantir des propriétés formelles de sécurité et des mécanismes efficaces de détection dans des systèmes composés de centaines ou de milliers de conteneurs éphémères, opérant sous une forte dépendance vis-à-vis des chaînes d’approvisionnement logicielle ?
Les questions de recherche qui orientent ce travail sont :
RQ1 : Comment modéliser formellement le comportement des conteneurs et leurs interactions avec l’hôte et le plan de contrôle de Kubernetes de manière vérifiable ?
RQ2 : Quelle est l’efficacité d’un mécanisme hybride combinant l’analyse statique des images, la supervision comportementale en temps réel et des politiques déclaratives d’admission ?
RQ3 : Quel est l’impact quantitatif de cette architecture sur les indicateurs opérationnels de sécurité MTTD (Mean Time to Detect) et MTTR (Mean Time to Respond) ?
Les principales contributions de ce travail sont au nombre de trois. Premièrement, nous formalisons l’environnement conteneurisé comme un système de transitions étiquetées $LTS = (S, A, \rightarrow)$, permettant d’exprimer des propriétés d’intégrité et de non-interférence entre processus. Deuxièmement, nous développons une architecture hybride intégrant l’observabilité basée sur eBPF avec des politiques déclaratives de sécurité et l’analyse d’images. Troisièmement, nous réalisons une évaluation expérimentale sur un cluster Kubernetes à grande échelle, démontrant des améliorations mesurables des métriques opérationnelles de détection et de réponse.
- Background and Related Work
Les conteneurs Linux utilisent des mécanismes d’isolation fournis par le noyau pour séparer les processus et les ressources entre différents environnements d’exécution. Les namespaces contrôlent la visibilité de ressources telles que les processus ($PID$), le réseau ($NET$), le système de fichiers ($MNT$), le hostname ($UTS$) et la communication interprocessus ($IPC$). Les control groups (cgroups), quant à eux, limitent la consommation de ressources telles que le CPU, la mémoire et les entrées/sorties (I/O) (MERKEL, 2014; POHLACK; SIEGEL, 2019).
Nous pouvons représenter formellement un conteneur $C_i$ comme le tuple :
$$ C_i = (P_i, N_i, R_i, I_i) $$
où $P_i$ représente l’ensemble des processus en exécution, $N_i$ l’ensemble des namespaces associés, $R_i$ les limites de ressources définies par les cgroups et $I_i$ l’image de base à partir de laquelle le conteneur a été instancié.
Divers travaux ont analysé les implications de sécurité de ce modèle. Bui (2015) a comparé les conteneurs et les machines virtuelles sous l’angle de l’isolation et des performances, démontrant que les conteneurs présentent un overhead computationnel plus faible, mais offrent une isolation moindre par rapport au noyau hôte. Shu et al. (2017) ont mené une étude empirique sur les vulnérabilités présentes dans les images publiques de Docker Hub, identifiant qu’une part significative contenait des paquets vulnérables connus.
La sécurité des environnements Kubernetes a également été largement étudiée dans la littérature récente. Zhang et al. (2018) ont analysé les risques de configuration et de permissions dans le plan de contrôle, tandis que Rahman et al. (2020) ont étudié les vulnérabilités des pipelines de construction d’images. Ces travaux soulignent l’importance de la sécurité dans la chaîne d’approvisionnement logicielle.
Des outils de surveillance comportementale sont apparus comme un mécanisme efficace pour détecter des activités suspectes dans les conteneurs. Falco, projet initialement développé par Sysdig puis incubé par la Cloud Native Computing Foundation, utilise eBPF pour intercepter les événements du noyau Linux et identifier des schémas de comportement potentiellement malveillants (FALCO, 2023). Ce type d’approche permet d’observer des appels système tels que l’exécution de processus, l’accès à des fichiers sensibles ou la manipulation de namespaces.
Cependant, de nombreux travaux se concentrent exclusivement sur la détection comportementale, sans intégrer de mécanismes de prévention ni de formalisation théorique des propriétés de sécurité. De plus, les évaluations expérimentales utilisent fréquemment des clusters à petite échelle, ce qui limite la validité des résultats pour des environnements d’entreprise complexes.
Notre approche vise à intégrer trois dimensions souvent traitées séparément : la formalisation mathématique du comportement du système, la détection comportementale basée sur les événements du noyau et les politiques déclaratives de contrôle au niveau du plan d’admission de Kubernetes.
- Threat Model and Problem Formalization
Nous supposons un modèle d’adversaire doté des capacités suivantes :
- Exécution de code arbitraire à l’intérieur d’un conteneur compromis.
- Accès au réseau interne du cluster Kubernetes.
- Tentative d’élévation de privilèges via l’exploitation de vulnérabilités du noyau ou d’une configuration RBAC inadéquate.
Nous ne supposons pas de compromission initiale du plan de contrôle de Kubernetes, bien que nous considérions la possibilité d’un abus des identifiants de ServiceAccount associés aux pods.
Nous formalisons le comportement du système comme un système de transitions étiquetées :
$$ LTS = (S, A, \rightarrow) $$
où :
- $S$ représente l’ensemble des états globaux du cluster ;
- $A$ représente l’ensemble des actions observables ;
- $\rightarrow \subseteq S \times A \times S$ définit la relation de transition.
Les états $S$ incluent la configuration des pods, les permissions RBAC, l’état du réseau et les ressources actives sur chaque nœud. Les actions $A$ incluent des événements tels que la création de pods, l’exécution de commandes, le montage de volumes et les connexions réseau.
Nous définissons un sous-ensemble $A_{esc}$ contenant les actions associées aux tentatives d’évasion de conteneur ou d’élévation de privilèges. Une propriété d’intégrité peut alors s’exprimer comme :
$$ \forall s \in S, \neg \exists a \in A_{esc} : s \xrightarrow{a} s’ \land compromised(s’) $$
L’objectif du mécanisme de détection est d’identifier les transitions appartenant au sous-ensemble $A_{mal} \subseteq A$ qui indiquent un comportement malveillant, tout en minimisant simultanément le taux de faux positifs.
- Proposed Methodology
L’architecture proposée se compose de quatre couches complémentaires de contrôle de sécurité.
| Couche | Objectif | Outils |
|---|---|---|
| Pré-déploiement | Analyse de vulnérabilités dans les images | Trivy, YARA |
| Admission | Validation des politiques de sécurité | OPA/Gatekeeper |
| Exécution | Surveillance comportementale | Falco (eBPF) |
| Réponse | Contention automatisée | NetworkPolicy, cordon/drain |
L’analyse des images utilise le scanner Trivy pour identifier les vulnérabilités connues dans les paquets et dépendances (AQUA SECURITY, 2023). Des règles YARA sont utilisées pour identifier des motifs associés à des malwares ou à des mineurs de cryptomonnaie.
Pendant la phase d’admission, les politiques définies en Rego sont évaluées par Open Policy Agent intégré à Gatekeeper, empêchant la création de ressources qui violent les exigences de sécurité (OPA, 2023).
Algorithme de Détection Comportementale
Input: flux d'événements E
Output: ensemble d'alertes A
for each event e in E:
if match_rule(e, Sigma_rules):
A.add(e)
else if anomaly_score(e) > θ:
A.add(e)
return A
La complexité approximative de l’algorithme est $O(n)$ pour $n$ événements surveillés, en supposant un indexage efficace des règles.
Algorithme de Réponse Automatisée
Input: alerte a
if a.severity >= HIGH:
isolate_pod(a.pod)
revoke_token(a.serviceAccount)
snapshot_forensics(a.node)
La réponse automatisée vise à contenir rapidement la menace sans interrompre complètement l’exploitation du cluster.
- Implementation
L’architecture a été implémentée dans un environnement Kubernetes version 1.28 utilisant containerd 1.7 comme runtime de conteneurs. La surveillance des événements du noyau a été réalisée avec Falco 0.36 utilisant eBPF.
Exemple de règle Falco utilisée pour la détection d’une tentative d’évasion :
- rule: Container Escape Attempt
condition: container and evt.type=execve and proc.name=nsenter
output: "Possível tentativa de escape (user=%user.name container=%container.id)"
priority: CRITICAL
Politique d’admission implémentée avec OPA :
deny[msg] {
input.request.kind.kind == "Pod"
input.request.object.spec.containers[_].securityContext.privileged == true
msg := "Execução de contêiner privilegié não permitida"
}
Les logs et événements de sécurité ont été agrégés dans Elastic Stack pour la corrélation et l’analyse ultérieure.
- Experimental Evaluation
L’environnement expérimental consistait en un cluster Kubernetes de 120 nœuds physiques équipés de processeurs Intel Xeon Gold et de 256 Go de mémoire RAM par nœud. Le cluster exécutait environ 2 400 pods répartis entre différents namespaces.
Trois principaux scénarios d’attaque ont été simulés :
- Tentative d’évasion exploitant CVE‑2019‑5736.
- Déploiement du mineur de cryptomonnaie XMRig.
- Mouvement latéral à l’aide d’identifiants compromis.
Les résultats agrégés sont présentés dans le tableau suivant.
| Métrique | Baseline (logs) | Architecture proposée |
|---|---|---|
| Taux de détection | 71,4% | 96,3% |
| Faux positifs | 5,9% | 3,8% |
| MTTD | 14,2 min | 3,1 min |
| MTTR | 27,6 min | 9,6 min |
| Overhead moyen CPU | 1,9% | 4,7% |
Les résultats indiquent que l’observabilité basée sur les événements du noyau améliore significativement la capacité de détection des activités malveillantes, même dans des environnements hautement dynamiques.
- Case Study
Afin d’évaluer l’architecture dans un scénario réaliste, nous avons simulé la compromission d’une application web vulnérable à l’exécution de code à distance. Après avoir exploité la vulnérabilité, l’attaquant a exécuté une commande interactive à l’intérieur du conteneur :
kubectl exec -it web-pod -- /bin/sh
Ensuite, l’intrus a tenté d’installer des utilitaires supplémentaires et de télécharger un payload distant. Falco a détecté l’exécution d’un shell interactif dans un conteneur non autorisé et a généré une alerte de haute sévérité.
Le mécanisme de réponse automatique a immédiatement appliqué une politique réseau restrictive bloquant le trafic sortant du pod compromis. Simultanément, le jeton du ServiceAccount associé a été révoqué et un snapshot du nœud a été collecté pour l’analyse forensique.
L’analyse ultérieure a identifié une tentative d’accès au socket du runtime à l’adresse /var/run/docker.sock, indiquant une possible tentative d’élévation.
- Discussion
Les résultats expérimentaux montrent qu’une surveillance au niveau du noyau utilisant eBPF est particulièrement efficace pour détecter les comportements associés aux techniques d’évasion de conteneur et à l’exécution de commandes inattendues. Ce type de visibilité ne peut pas être obtenu exclusivement à partir des logs d’application ou de la télémétrie réseau.
Cependant, l’approche présente certaines limites. L’efficacité du système dépend de la qualité et de la mise à jour continue des règles de détection. En outre, des attaques hautement sophistiquées peuvent tenter d’échapper à la détection en utilisant des techniques fileless ou une manipulation directe des syscalls.
Du point de vue opérationnel, nous recommandons trois pratiques principales aux équipes de sécurité qui exploitent des environnements Kubernetes :
- intégration de la télémétrie du cluster avec des systèmes SIEM d’entreprise ;
- application rigoureuse du principe du moindre privilège dans RBAC ;
- signature et vérification cryptographique des images de conteneurs à l’aide d’outils tels que Cosign.
Ces pratiques complètent l’architecture proposée et réduisent significativement la surface d’attaque.
- Conclusion
Nous avons présenté dans ce travail une architecture intégrée de détection et de confinement des menaces dans des environnements Kubernetes, combinant la modélisation formelle du comportement avec des mécanismes pratiques d’observabilité et de réponse automatisée.
La formalisation du système comme système de transitions étiquetées a permis d’exprimer des propriétés de sécurité liées à l’intégrité de l’hôte et du cluster. L’implémentation expérimentale a montré que la combinaison de l’analyse d’images, des politiques d’admission et de la surveillance au niveau du noyau apporte des améliorations substantielles aux métriques opérationnelles de sécurité.
Les résultats obtenus indiquent que les approches hybrides intégrant théorie et pratique constituent une voie prometteuse pour renforcer la sécurité des infrastructures cloud-native à grande échelle.
References
AQUA SECURITY. Trivy: Vulnerability Scanner for Containers and Filesystems. 2023. Available at: https://github.com/aquasecurity/trivy. Accessed on: 10 out. 2023.
BUI, Thanh. Analysis of Docker Security. arXiv, 2015. Available at: https://arxiv.org/abs/1501.02967. Accessed on: 10 out. 2023.
BURNS, Brendan; BEDA, Joe; HIGHTOWER, Kelsey. Kubernetes: Up and Running. Sebastopol: O’Reilly Media, 2019. Available at: https://www.oreilly.com/library/view/kubernetes-up-and/9781492046523/. Accessed on: 10 out. 2023.
CNCF. Falco Runtime Security. 2023. Available at: https://falco.org. Accessed on: 10 out. 2023.
FALCO. Falco Documentation. 2023. Available at: https://falco.org/docs/. Accessed on: 10 out. 2023.
GOOGLE. Borg, Omega, and Kubernetes. 2016. Available at: https://research.google/pubs/pub43438/. Accessed on: 10 out. 2023.
KUBERNETES. Kubernetes Documentation. 2023. Available at: https://kubernetes.io/docs. Accessed on: 10 out. 2023.
MERKEL, Dirk. Docker: Lightweight Linux Containers for Consistent Development and Deployment. Linux Journal, 2014. Available at: https://www.linuxjournal.com/content/docker-lightweight-linux-containers-consistent-development-and-deployment. Accessed on: 10 out. 2023.
MITRE. ATT&CK for Containers Matrix. 2023. Available at: https://attack.mitre.org/matrices/enterprise/containers/. Accessed on: 10 out. 2023.
OPEN CONTAINERS INITIATIVE. runc Security Advisory CVE‑2019‑5736. 2019. Available at: https://github.com/opencontainers/runc/issues/2128. Accessed on: 10 out. 2023.
OPA. Open Policy Agent Documentation. 2023. Available at: https://www.openpolicyagent.org/docs/latest/. Accessed on: 10 out. 2023.
PALO ALTO NETWORKS. TeamTNT Cloud Threat Analysis. 2021. Available at: https://unit42.paloaltonetworks.com/teamtnt-operations-cloud/. Accessed on: 10 out. 2023.
POHLACK, M.; SIEGEL, M. Linux Containers and Kernel Isolation. IEEE Security & Privacy, 2019. Available at: https://doi.org/10.1109/MSEC.2019.2924556. Accessed on: 10 out. 2023.
RAHMAN, M. et al. Security Risks in Containerized CI/CD Pipelines. IEEE Cloud Computing, 2020. Available at: https://doi.org/10.1109/MCC.2020.2995785. Accessed on: 10 out. 2023.
RED HAT. Securing Kubernetes Clusters. 2022. Available at: https://www.redhat.com/en/topics/containers/kubernetes-security. Accessed on: 10 out. 2023.
SIGSTORE. Cosign Container Signing. 2023. Available at: https://docs.sigstore.dev/cosign. Accessed on: 10 out. 2023.
SHU, Ren et al. A Study of Security Vulnerabilities on Docker Hub. Proceedings of ACM CCS, 2017. Available at: https://doi.org/10.1145/3133956.3134014. Accessed on: 10 out. 2023.
SYSDIG. Runtime Security with eBPF. 2022. Available at: https://sysdig.com/blog/ebpf-runtime-security/. Accessed on: 10 out. 2023.
VILLAMIZAR, M. et al. Infrastructure Cost Comparison of Containers and Virtual Machines. IEEE Cloud Computing, 2015. Available at: https://doi.org/10.1109/MCC.2015.51. Accessed on: 10 out. 2023.
ZHANG, Q. et al. Security Analysis of Kubernetes. IEEE Conference on Cloud Engineering, 2018. Available at: https://doi.org/10.1109/IC2E.2018.00025. Accessed on: 10 out. 2023.
NIST. Application Container Security Guide (SP 800‑190). 2017. Available at: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf. Accessed on: 10 out. 2023.
CNCF. Cloud Native Security Whitepaper. 2022. Available at: https://github.com/cncf/tag-security. Accessed on: 10 out. 2023.
KREBS, Brian. The Rise of Cryptomining Malware in Cloud Infrastructure. 2021. Available at: https://krebsonsecurity.com. Accessed on: 10 out. 2023.
AQUA SECURITY. Cloud Native Threat Report. 2023. Available at: https://www.aquasec.com/resources/threat-reports/. Accessed on: 10 out. 2023.
MICROSOFT. Container Security in the Cloud. 2022. Available at: https://learn.microsoft.com/security/containers. Accessed on: 10 out. 2023.