Sécurité des environnements de conteneurs

Les conteneurs sont massivement utilisés par les équipes de développement. Extrêmement légers,  ils partagent le même noyau et démarrent très rapidement. Leur exécution demande peu de mémoire en comparaison avec le lancement d'un système d'exploitation. Docker est un des formats de conteneurs Open Source les plus rencontrés. La sécurité des environnements de conteneurs est au programme du CISSP en vigueur depuis le 1er mai 2021 mais aussi des certifications « sécurité du Cloud » comme le CSSP, le CCSK et le « petit nouveau » pour les auditeurs : le CCAK.

Fonctionnement

Une image de conteneur comprend ce qui est nécessaire pour exécuter une application: code et librairies. Contrairement à un environnement pour lequel plusieurs systèmes d’exploitation partagent les mêmes ressources matérielles par l’intermédiaire d’un hyperviseur, la virtualisation applicative permet à des applications de partager les ressources d’un système d’exploitation commun. Ainsi les fonctions du noyau Linux comme « cgroups (control groups ) », « AppArmor » et « namespaces » pour isoler des ressources (processeur, mémoire, réseau, communication entre les processus…). Des systèmes d’exploitation spécifiquement configurés pour les conteneurs sont disponibles. Par exemple Container-Optimized OS de Google qui est basé sur Chromium OS. Des projets comme Docker ou « rkt (rock-it) » fournissent des fonctionnalités complémentaires pour gérer les images et les conteneurs. Ces plateformes sont disponibles en environnement Linux et Windows.

DockerEngine

Exemple du moteur Docker - source : www.docker.com

Sécurité

Le NIST propose une un cycle de vie sur 5 phases pour la gestion des conteneurs :

  • Développement des images.
  • Test des images.
  • Stockages dans les registres.
  • Orchestration : conversion des images en conteneurs et déploiement sur les systèmes.
  • Démarrage, exécution et arrêt des conteneurs sur les systèmes par l’orchestrateur.

NIST800190

Source : NIST  800-190

Deux grandes familles de risques sont à traiter :

  • Compromission directe d’une image ou d’un conteneur.
  • Rebond depuis un conteneur pour attaquer d’autres ressource : conteneurs, système hôte Linux ou Windows.

Quelques exemples de vulnérabilités susceptibles d’être exploitées par un attaquant :

  • Image contenant des composants obsolètes avec des failles publiques, des « malware » ou des secrets (par exemple un mot de passe pour accéder à une base de données ou des clés privées).
  • Utilisation d’images non sûres issues de répertoires publics.
  • Faiblesse des gestions des accès aux registres et à l’orchestrateur.
  • Mauvaise protection des échanges (réseau) entre les conteneurs.
  • Vulnérabilité exploitable dans le moteur de gestion des conteneurs permettant à l’attaquant de compromettre le système hôte.
  • Manque de durcissement des configurations.
  • Faiblesse de développement des images (non spécifique aux conteneurs).

Durcissement des environnements

Au-delà des mesures de sécurisation du développement, du scan régulier des registres pour détecter la présence de vulnérabilités publiques ou de secrets stockés dans les images, il est fondamental de durcir le moteur qui gère les conteneurs.

Par exemple, le CIS Benchmark pour Docker prévoit les catégories de durcissement suivantes :

  • Configuration sécurisée du système hôte : 12 mesures pour un système hôte type Linux.
  • Configuration du démon Docker : 17 mesures.
  • Gestion des fichiers de configuration du démon Docker : 22 mesures.
  • Gestion des images : 11 mesures.
  • Configuration du « runtime» : 31 mesures.
  • Administration : 2 mesures.
  • Sécurisation de « Swarm » (gestion des « nodes ») : 10 mesures.
  • Console d’administration : 7 mesures.
  • Activation du scan du registre : 1 mesure.

Pour en savoir plus sur les 20 meilleures formations sur la sécurité des systèmes d’information, téléchargez gratuitement notre livre blanc ci-dessous :

Cloud, CISSP, Certifications, SécuritéCloud, Conteneur, Docker, Container