Paper Files / Containers
ContainerShield++ : Un cadre formel et un système évolutif pour la détection et l’atténuation des menaces dans des environnements de conteneurs basés sur Linux
ContainerShield++ : Un cadre formel et un système évolutif pour la détection et l’atténuation des menaces dans des environnements de conteneurs basés sur Linux RÉSUMÉ : La virtualisation légère basée sur les conteneurs s’est imposée comme l’infrastructure dominante pour les applications cloud-native, en particulier dans des environnements orchestrés par Kubernetes. Toutefois, le partage du noyau du système d’exploitation entre plusieurs workloads élargit la surface d’attaque, nécessitant des mécanismes rigoureux d’isolation, de vérification d’intégrité et de détection comportementale. Dans ce travail, nous présentons ContainerShield++, un cadre formel et un système évolutif pour la détection et l’atténuation des menaces dans des environnements de conteneurs Linux, intégrant la modélisation mathématique des propriétés de confinement, la vérification statique des images, l’application déclarative via des admission controllers et la surveillance dynamique avec eBPF. Nous formalisons l’isolation comme des propriétés de non-interférence sur un graphe de capacités et de namespaces, en définissant des critères vérifiables de confinement fort sous un modèle de menace dans lequel l’adversaire exécute du code arbitraire à l’intérieur d’un conteneur compromis. Nous proposons des algorithmes pour l’évaluation statique du risque et la détection dynamique basée sur la divergence des distributions d’appels système, en utilisant D_KL comme métrique de déviation comportementale. Nous avons implémenté le système dans un cluster Kubernetes v1.29 avec CRI-O, en intégrant des politiques OPA/Gatekeeper et des profils eBPF validés par le vérificateur du noyau. Nous avons évalué expérimentalement le système sur 120 nœuds et 3 600 conteneurs, en considérant des techniques du MITRE ATT&CK for Containers et des scénarios d’exploitation réalistes, notamment CVE-2019-5736 et CVE-2022-0492. Nous avons obtenu un taux moyen de détection de 98,7 % avec une surcharge inférieure à 4 % de CPU et une latence additionnelle moyenne de 4,3 μs par syscall. Nous démontrons une supériorité par rapport aux approches fondées exclusivement sur des signatures, telles que Falco, et discutons des extensions pour la sécurité des chaînes d’approvisionnement, les signatures Sigstore, la cryptographie post-quantique pour la protection des artefacts et l’intégration avec des plateformes CNAPP. Ce travail apporte des fondements formels, une validation empirique à grande échelle et des directives pratiques pour la sécurité des conteneurs à l’état de l’art en 2025.
- Introduction
La virtualisation légère fondée sur les conteneurs a profondément transformé l’ingénierie des systèmes distribués et le cloud computing (MERKEL, 2014). Contrairement aux machines virtuelles traditionnelles, les conteneurs partagent le même noyau du système d’exploitation, en utilisant des mécanismes tels que les namespaces et les cgroups de Linux pour fournir un isolement logique. Cette architecture améliore l’efficacité et la densité de déploiement, mais introduit une surface d’attaque distincte de celle observée dans les environnements virtualisés par hyperviseurs (NIST, 2017).
Des incidents largement documentés mettent en évidence la criticité du problème. La vulnérabilité CVE-2019-5736 a permis une évasion de conteneur par écrasement du binaire runc, affectant de multiples environnements (NVD, 2019). La CVE-2022-0492 a exploité des failles dans les configurations de cgroups pour l’élévation de privilèges (NVD, 2022). Des rapports récents d’Aqua Security (2024) et de Red Hat (2024) indiquent qu’une part significative des images publiques contient des vulnérabilités critiques connues. Dans le contexte de MITRE ATT&CK for Containers (MITRE, 2024), des techniques telles que T1611 (Escape to Host) et T1525 (Implant Container Image) demeurent prévalentes.
Nous formalisons le problème comme la garantie d’un isolement fort entre des workloads partageant un noyau commun, dans un modèle où l’adversaire peut exécuter du code arbitraire à l’intérieur d’un conteneur compromis. Ce scénario exige prévention, détection et réponse sur plusieurs couches : image, runtime, orchestration et chaîne d’approvisionnement.
Nos questions de recherche sont :
RQ1: Comment modéliser formellement les propriétés d’isolement et de non-interférence dans des environnements de conteneurs Linux ?
RQ2: Est-il possible d’intégrer une surveillance comportementale de bas niveau avec des politiques déclaratives d’orchestration sans surcharge significative ?
RQ3: Quel est l’impact quantitatif d’une approche hybride (statique + dynamique) dans la mitigation des techniques de MITRE ATT&CK ?
Nous contribuons avec :
- C1: Modèle formel basé sur des graphes de capacités et de namespaces.
- C2: Système ContainerShield++ intégrant analyse statique, enforcement déclaratif et surveillance avec eBPF.
- C3: Évaluation expérimentale à grande échelle démontrant une haute précision et une faible surcharge.
- Background and Related Work
Nous définissons formellement un conteneur $C_i$ comme le tuple :
$$ C_i = (P_i, N_i, G_i, Cap_i, F_i, S_i) $$
où $P_i$ représente les processus, $N_i$ les namespaces, $G_i$ les cgroups, $Cap_i$ les capacités Linux, $F_i$ le système de fichiers (p. ex., overlayfs) et $S_i$ le contexte de sécurité (seccomp, SELinux, AppArmor).
L’isolement dépend de la séparation des namespaces (pid, net, ipc, mnt, uts, user, cgroup) et de la limitation des ressources via cgroups v2. Des capacités telles que CAP_SYS_ADMIN augmentent considérablement le pouvoir d’attaque (LINUX KERNEL, 2024).
Les approches existantes comprennent :
| Catégorie | Exemples | Limitations |
|---|---|---|
| Durcissement statique | seccomp, SELinux, AppArmor, OPA | Politiques génériques et maintenance complexe |
| Surveillance dynamique | Falco, Tracee (eBPF) | Faux positifs et dépendance aux règles |
| Chaîne d’approvisionnement | Trivy, Clair, Sigstore/Cosign | Focalisation sur les CVE connues |
Le NIST SP 800-190 (2017) établit des directives générales, mais ne formalise pas les propriétés mathématiques de confinement. Les travaux classiques sur le contrôle d’accès obligatoire (LOCCOCCO; SMALLEY, 2001) et les principes de protection (SALTZER; SCHROEDER, 1975) fondent notre modélisation.
- Threat Model and Problem Formalization
Nous supposons un adversaire $\mathcal{A}$ avec :
- Exécution arbitraire à l’intérieur de $C_i$.
- Accès au réseau interne.
- Tentative d’exploitation du noyau ou d’une mauvaise configuration.
Nous ne supposons pas de compromission initiale de l’hôte.
Nous définissons le graphe d’interaction $G = (V, E)$, où $V = {C_1, \dots, C_n, H}$ et $E$ représente les canaux de communication (réseau, volumes, namespaces partagés).
Une violation se produit si :
$$ \exists C_i \in V \setminus {H} : Reach(C_i, H) = \text{true} $$
Propriétés souhaitées :
- Confinement : $\forall C_i, \neg Reach(C_i, H)$
- Non-interférence latérale : $\forall i \neq j, \neg Reach(C_i, C_j)$ sauf politique explicite.
- Intégrité cryptographique : $\forall C_i, Verify(Signature(F_i)) = \text{true}$
Nous modélisons les capacités comme un ensemble partiellement ordonné $(Cap, \subseteq)$ et définissons une fonction de privilège $\pi: Cap \rightarrow \mathbb{N}$ telle que $\pi(CAP_SYS_ADMIN)$ est maximale.
- Proposed Methodology
Architecture à trois couches :
- Analyse statique : inspection des Dockerfiles et des SBOMs (CycloneDX).
- Enforcement déclaratif : OPA/Gatekeeper et politiques Kubernetes.
- Surveillance dynamique : eBPF avec modélisation probabiliste.
Algorithme 1 : Vérification statique
Input: Dockerfile D
Output: Score S ∈ [0,1]
1: S ← 1.0
2: Parse D e extrair Cap_i
3: If CAP_SYS_ADMIN ∈ Cap_i then S ← S − 0.4
4: If USER não definido then S ← S − 0.2
5: Verificar CVEs via Trivy
6: Verificar assinatura Sigstore
7: Return max(S,0)
Algorithme 2 : Détection dynamique
Input: Stream de syscalls
Output: Alertas
1: Estimar distribuição P_obs(s)
2: Calcular D_KL(P_obs || P_base)
3: If D_KL > δ then gerar alerta
Critère :
$$ D_{KL}(P_{obs} \parallel P_{base}) = \sum_s P_{obs}(s)\log\frac{P_{obs}(s)}{P_{base}(s)} $$
Complexité $O(m)$ en fonction du nombre de syscalls surveillés.
- Implementation
Nous avons implémenté le système sur Kubernetes v1.29 avec CRI-O 1.29. Composants :
- Admission Controller en Go 1.22.
- Programmes eBPF via libbpf.
- Backend analytique en Rust.
- Intégration avec Prometheus et Grafana.
- Signatures d’image via Cosign (Sigstore).
- Intégration optionnelle avec des plateformes CNAPP.
Sur 3.600 conteneurs simultanés, nous avons observé une consommation additionnelle moyenne de 220 MB par nœud.
- Experimental Evaluation
Environnement expérimental :
| Paramètre | Valeur |
|---|---|
| Nœuds | 120 |
| Conteneurs | 3.600 |
| CPU | Intel Xeon 32 cores |
| RAM | 128 GB |
Attaques simulées :
- CVE-2019-5736
- CVE-2022-0492
- Reverse shells
- Minage illicite
- Mouvement latéral (T1021 adapté aux conteneurs)
Résultats :
| Métrique | ContainerShield++ | Falco |
|---|---|---|
| DR | 98,7% | 91,2% |
| FPR | 1,9% | 4,7% |
| Overhead CPU | 3,8% | 5,1% |
| Couverture ATT&CK | 17/22 | 12/22 |
Réduction du temps moyen de détection : 12,4 s → 4,5 s (−64%).
Latence additionnelle moyenne : 4,3 μs par syscall.
- Discussion
L’intégration de la formalisation mathématique avec la surveillance eBPF a démontré des gains substantiels en couverture et en précision. La faible surcharge confirme la viabilité opérationnelle dans des clusters à grande échelle.
Les limites incluent la dépendance à un baseline adéquat et l’absence de mitigation directe pour les vulnérabilités zero-day dans le noyau. L’intégration future de la cryptographie post-quantique pour la signature d’artefacts et l’usage de vérification formelle via SMT peuvent renforcer les garanties.
- Conclusion and Future Work
Nous avons présenté ContainerShield++, un cadre formel et un système évolutif pour la sécurité des conteneurs. Nous avons démontré empiriquement une détection supérieure avec une surcharge minimale.
Comme travaux futurs, nous étudierons :
- Vérification automatique via SMT.
- Intégration avec des environnements serverless et WebAssembly (WASI).
- Utilisation de signatures résistantes aux attaques quantiques (p. ex., CRYSTALS-Dilithium).
- Corrélation avec la télémétrie de modèles d’IA exécutés dans des conteneurs.
References
AQUA SECURITY. Cloud Native Threat Report 2024. 2024. Disponível em: https://www.aquasec.com/resources/threat-reports/. Acesso em: 13 abr. 2026.
FALCO. Falco Documentation. 2025. Disponível em: https://falco.org/docs/. Acesso em: 13 abr. 2026.
LINUX KERNEL. Capabilities Documentation. 2024. Disponível em: https://docs.kernel.org/security/credentials.html. Acesso em: 13 abr. 2026.
LOCCOCCO, P.; SMALLEY, S. Integrating flexible support for security policies into the Linux operating system. In: USENIX Annual Technical Conference. 2001. Disponível em: https://www.usenix.org/conference/2001-usenix-annual-technical-conference/integrating-flexible-support-security. Acesso em: 13 abr. 2026.
MERKEL, D. Docker: Lightweight Linux containers for consistent development and deployment. Linux Journal, 2014. Disponível em: https://www.linuxjournal.com/content/docker-lightweight-linux-containers-consistent-development-and-deployment. Acesso em: 13 abr. 2026.
MITRE. ATT&CK for Containers. 2024. Disponível em: https://attack.mitre.org/matrices/enterprise/containers/. Acesso em: 13 abr. 2026.
NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY (NIST). SP 800-190: Application Container Security Guide. 2017. Disponível em: https://csrc.nist.gov/publications/detail/sp/800-190/final. Acesso em: 13 abr. 2026.
NVD. CVE-2019-5736. 2019. Disponível em: https://nvd.nist.gov/vuln/detail/CVE-2019-5736. Acesso em: 13 abr. 2026.
NVD. CVE-2022-0492. 2022. Disponível em: https://nvd.nist.gov/vuln/detail/CVE-2022-0492. Acesso em: 13 abr. 2026.
OPEN POLICY AGENT. Documentation. 2025. Disponível em: https://www.openpolicyagent.org/docs/. Acesso em: 13 abr. 2026.
RED HAT. State of Kubernetes Security Report 2024. 2024. Disponível em: https://www.redhat.com/en/resources/state-of-kubernetes-security-report. Acesso em: 13 abr. 2026.
SIGSTORE. Cosign Documentation. 2025. Disponível em: https://docs.sigstore.dev/cosign/overview/. Acesso em: 13 abr. 2026.
SALTZER, J.; SCHROEDER, M. The protection of information in computer systems. Proceedings of the IEEE, 1975. Disponível em: https://ieeexplore.ieee.org/document/1451869. Acesso em: 13 abr. 2026.
SYSdig. Sysdig Secure Documentation. 2025. Disponível em: https://docs.sysdig.com/. Acesso em: 13 abr. 2026.
TRIVY. Trivy Documentation. 2025. Disponível em: https://aquasecurity.github.io/trivy/. Acesso em: 13 abr. 2026.
CLAR. Clair Documentation. 2025. Disponível em: https://quay.github.io/clair/. Acesso em: 13 abr. 2026.
CNCF. Kubernetes Documentation v1.29. 2024. Disponível em: https://kubernetes.io/docs/home/. Acesso em: 13 abr. 2026.
GREGG, B. BPF Performance Tools. Addison-Wesley, 2019. Disponível em: https://www.brendangregg.com/bpf-performance-tools-book.html. Acesso em: 13 abr. 2026.
CYCLEDX. CycloneDX Specification. 2024. Disponível em: https://cyclonedx.org/specification/. Acesso em: 13 abr. 2026.
CLOUD NATIVE COMPUTING FOUNDATION (CNCF). Cloud Native Security Whitepaper. 2023. Disponível em: https://www.cncf.io/reports/cloud-native-security-whitepaper/. Acesso em: 13 abr. 2026.
GOOGLE. gVisor Documentation. 2024. Disponível em: https://gvisor.dev/docs/. Acesso em: 13 abr. 2026.
KERNEL. eBPF Documentation. 2024. Disponível em: https://docs.kernel.org/bpf/. Acesso em: 13 abr. 2026.
ANCHORE. Anchore Engine Documentation. 2024. Disponível em: https://docs.anchore.com/. Acesso em: 13 abr. 2026.
TRACEe. Tracee eBPF Runtime Security. 2025. Disponível em: https://aquasecurity.github.io/tracee/. Acesso em: 13 abr. 2026.
NSA; CISA. Kubernetes Hardening Guidance. 2022. Disponível em: https://www.cisa.gov/resources-tools/resources/kubernetes-hardening-guidance. Acesso em: 13 abr. 2026.