Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Container Escape

cloud

Définition

Un Container Escape (évasion de conteneur) est une technique d'attaque permettant à un processus s'exécutant dans un conteneur d'accéder à l'hôte sous-jacent ou à d'autres conteneurs sur le même hôte, brisant l'isolation que le système de conteneurisation est censé fournir. C'est l'une des techniques les plus critiques dans la Kubernetes Threat Matrix, permettant à un attaquant d'escalader d'un pod compromis à l'ensemble d'un nœud Kubernetes. Les techniques de container escape exploitent généralement : les configurations Docker/Kubernetes non-sécurisées (conteneurs privilegiés avec privileged: true, montages hostPath du socket Docker /var/run/docker.sock, montages hostPath du système de fichiers hôte /etc, /proc), les vulnérabilités du runtime de conteneur (CVEs dans containerd, runc - ex: runc CVE-2019-5736 permettant l'écrasement du binaire runc depuis un conteneur), et les vulnérabilités du noyau Linux (des syscalls non filtrés permettant d'exploiter des vulnérabilités kernel depuis un espace de noms conteneur). Le montage du socket Docker (/var/run/docker.sock) dans un conteneur est souvent la technique la plus simple d'évasion sans exploit : depuis le conteneur avec accès au socket, il est possible de lancer de nouveaux conteneurs privilegiés montant le système de fichiers hôte et d'obtenir un shell root sur l'hôte. Cette configuration est malheureusement commune dans les environnements CI/CD où des agents Jenkins ou GitLab Runner nécessitent l'accès à Docker. Les mesures de protection contre les container escapes incluent : l'utilisation de conteneurs non-privilegiés (privileged: false), la limitation des capabilities Linux (capDrop: [ALL]), l'activation de seccomp (RuntimeDefault ou profil personnalisé), l'utilisation d'AppArmor, l'interdiction des montages hostPath sensibles via des Admission Controllers (Kyverno, Gatekeeper), la mise à jour régulière des container runtimes pour corriger les CVEs, et l'utilisation d'OS durcis pour les nœuds (Bottlerocket, COS). La détection des container escapes en production passe par Falco qui surveille les syscalls dangereux dans les conteneurs : exec dans un namespace hôte, accès à /proc/host depuis un conteneur, écriture dans /etc depuis un conteneur, et montage de systèmes de fichiers depuis un conteneur.

Détection des container escapes avec Falco

Falco inclut des règles prédéfinies pour détecter les tentatives d'évasion de conteneur : launch_privileged_container détecte le démarrage d'un conteneur privilegié, container_privileged_ssh_violation détecte un shell interactif dans un conteneur privilegié, write_below_root détecte l'écriture dans des répertoires système (/etc, /usr, /bin) depuis un conteneur, et runc_override détecte l'écrasement du binaire runc. Configurez ces règles avec priorité CRITICAL et routez les alertes vers PagerDuty pour une réponse immédiate.

Prévention des escapes via le securityContext

Configuration securityContext complète pour prévenir les container escapes : privileged: false, allowPrivilegeEscalation: false, readOnlyRootFilesystem: true, runAsNonRoot: true, runAsUser: 10001, capabilities: {drop: [ALL]}, seccompProfile: {type: RuntimeDefault}. Cette configuration implémente toutes les défenses disponibles au niveau Kubernetes pour minimiser la surface d'attaque des container escapes. Enforcez ces paramètres via une Kyverno ClusterPolicy mutation qui les ajoute automatiquement à tous les pods sans securityContext.

Test de résistance aux escapes

Testez la résistance aux container escapes de votre cluster avec des outils dédiés : traitor (github.com/liamg/traitor) teste automatiquement plusieurs techniques d'évasion depuis un pod (SUID binaries, dangerous capabilities, writable /proc paths). Déployez un pod de test avec la configuration standard et exécutez traitor : s'il trouve des vecteurs d'évasion, durcissez la configuration jusqu'à ce qu'il n'en trouve plus. Ces tests valident l'efficacité de vos contrôles de sécurité dans votre environnement spécifique.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis