Skip to main content

Tout ce qu’il faut savoir sur l’analyse des conteneurs

Écrit par:
0 minutes de lecture

Qu’est-ce que l’analyse des conteneurs ?

L’analyse des conteneurs ou analyse des images de conteneurs correspond au processus et aux outils d’analyse permettant d’identifier des vulnérabilités au sein de conteneurs et de leurs composants. Il s’agit d’un maillon clé de la sécurité des conteneurs, car elle permet aux développeurs et équipes de cybersécurité de corriger les menaces présentes dans les applications conteneurisées avant leur déploiement.

Si les déploiements conteneurisés sont de plus en plus populaires, ce n’est pas pour rien. En effet, les conteneurs permettent aux développeurs de travailler plus rapidement et de déployer sans accroc des applications en les transformant en unités de code portables et indépendantes. Toutefois, en optant pour des logiciels conteneurisés, les développeurs prennent aussi la responsabilité de la sécurité des conteneurs. C’est là qu’intervient l’analyse des conteneurs, en leur permettant d’assurer cette tâche efficacement.

Nous allons commencer par nous pencher sur les bases de l’analyse des conteneurs, avant de nous intéresser au fonctionnement des outils d’analyse automatisés. Nous verrons ensuite les types de vulnérabilités que ces outils sont en mesure de détecter et l’impact des couches des images sur la sécurité des conteneurs.

Notions de base sur l’analyse des conteneurs

Les vulnérabilités des conteneurs peuvent avoir diverses origines : logiciel conteneurisé, interactions du conteneur avec le système d’exploitation hôte et avec les autres conteneurs, configuration du réseau et du stockage, etc. Un outil d’analyse des conteneurs est un logiciel automatisé qui analyse ces différents composants pour mettre au jour des failles de sécurité.

En plus des vulnérabilités provenant directement du code et de l’outil que vous ajoutez à une image, vos conteneurs peuvent présenter des problèmes issus des autres images qu’ils utilisent. Ces autres images sont appelées images parentes ou images de base (même si le qualificatif « parent » est plus juste techniquement). En réalité, l’image de votre conteneur est peut-être basée sur une image publique qui contient des vulnérabilités connues ou un malware, en particulier si vous ne l’avez pas téléchargée auprès d’un éditeur reconnu, et n’en avez pas authentifié l’éditeur et le contenu. Pire encore, même les images provenant de fournisseurs de confiance bien connus présentent souvent des vulnérabilités. En les analysant, et en identifiant les images parentes et leurs vulnérabilités, vous pouvez généralement corriger de nombreux problèmes en une seule intervention.

Les outils d’analyse peuvent être intégrés à diverses étapes du développement. Par exemple, vous pouvez analyser des images parentes potentielles depuis votre bureau avant de décider laquelle utiliser comme base. Certains outils et plug-ins d’IDE analysent les Dockerfiles et vous suggèrent d’autres images que vous pourriez utiliser, car elles présentent moins de vulnérabilités ou sont moins volumineuses. De nombreuses entreprises intègrent l’analyse des vulnérabilités des conteneurs dans leurs pipelines d’intégration continue et de livraison continue (CI/CD). C’est dans ces pipelines que les véritables images sont la plupart du temps générées avant le déploiement. Cette intégration évite que des images de conteneurs présentant trop de problèmes soient stockées dans vos registres et n’arrivent en production. La plupart des équipes suivent également leurs déploiements conteneurisés exécutés sur Kubernetes ou une autre plateforme. L’analyse de la sécurité des conteneurs permet ainsi d’améliorer considérablement la sécurité d’une application sans pour autant demander de grands efforts aux développeurs.

L’analyse des registres de conteneurs est aussi un bon moyen de réduire le nombre de vulnérabilités touchant l’ensemble des images régulièrement utilisées par votre organisation. Par exemple, l’intégration de Snyk avec Docker Hub permet de mettre en place une source fiable d’images publiques pouvant servir de base aux conteneurs créés par les développeurs. Vous pouvez aussi suivre vos images stockées afin d’y repérer des vulnérabilités nouvellement découvertes et éviter qu’elles ne soient déployées en production à l’avenir. De plus, vous disposez probablement dans votre registre de conteneurs d’images anciennes qui ne changent que rarement ou d’images fournies par des tiers. Ces images ne passeront pas par vos pipelines de CI/CD, et il peut donc être utile de les analyser dans le registre pour déterminer si elles sont sûres ou non. Un outil d’analyse des registres peut ainsi rassurer les développeurs quant à la sécurité des images qu’ils utilisent pour leurs déploiements conteneurisés.

Quels types de vulnérabilités peuvent être détectés ?

Comme nous l’avons vu, une vulnérabilité peut toucher un conteneur par différents mécanismes. Ces failles de sécurité peuvent aller du code d’application non sécurisé aux erreurs de configuration à l’exécution, en passant par les menaces réseau et les problèmes de contrôle des accès. Pour s’en protéger, il est nécessaire d’assurer une surveillance continue des conteneurs et de se tenir informé des vulnérabilités régulièrement découvertes.

La plupart des solutions d’analyse des conteneurs reposent sur une source publique d’informations comme la National Vulnerability Database (NVD) ou la base de données des vulnérabilités et expositions courantes Common Vulnerabilities & Exposures (CVE). Ces bases de données répertorient les exploits connus pour permettre l’automatisation de la gestion des vulnérabilités, de la mesure de la sécurité et de la conformité.

L’équipe de chercheurs en sécurité de Snyk enrichit les données de vulnérabilité des conteneurs à l’aide d’informations permettant de prioriser plus facilement ce qui peut sembler être un nombre insurmontable de failles. Des facteurs comme l’exécution du conteneur dans un cluster Kubernetes et la configuration de celui-ci, la disponibilité d’un exploit mature, les discussions sur les médias sociaux et les détails des vulnérabilités spécifiques aux distributions Linux sont ainsi pris en compte par Snyk Container.

Impact des couches des conteneurs sur la détection des vulnérabilités

Les conteneurs forment les bases des applications modernes. Ils permettent notamment de s’appuyer sur les travaux d’autres développeurs. Docker a simplifié ce processus en facilitant le partage d’images de conteneurs via Docker Hub. La solution fournit également ses propres images officielles qui couvrent de nombreux langages, frameworks et services d’application. Lorsque vous ajoutez vos propres images à celles des autres, vous vous retrouvez avec des conteneurs dans lesquels figurent de multiples couches en lecture seule et une couche finale en lecture/écriture.

Chaque couche peut introduire de nouvelles vulnérabilités dans le conteneur, et il est donc essentiel que votre outil d’analyse soit capable de détecter les problèmes couche par couche. Mieux encore, il devrait pouvoir faire le lien entre ces couches et les commandes ou instructions Dockerfiles qui en sont à l’origine, car il y est plus facile pour les développeurs d’y faire leurs changements. De plus, les images étant presque toujours basées sur d’autres d’images (via la commande FROM d’un Dockerfile, par exemple), un outil d’analyse des vulnérabilités des conteneurs comme Snyk Container peut déterminer que certaines couches sont en réalité des images Docker officielles et vous proposer des alternatives intelligentes qui réduisent les vulnérabilités. Il s’agit d’une solution supérieure à l’ajout de nouvelles couches brutes. La multiplication des couches dans un conteneur se traduit généralement par une multiplication des packages installés, et donc des vulnérabilités et du risque. Par conséquent, une meilleure pratique consiste à utiliser les images les moins volumineuses possibles répondant aux besoins de votre application.

Sécurité complète des conteneurs

Les conteneurs se composant de multiples couches, il est nécessaire d’analyser le code personnalisé, les dépendances open source, les conteneurs et les Dockerfiles eux-mêmes, voire dans certains cas, les fichiers d’infrastructure en tant que code (IaC) pour assurer une sécurité complète. Ces éléments sont les composants des applications cloud natives modernes, ils doivent donc être absolument pris en compte lors de la mise en place d’un workflow de développement sécurisé.

Snyk propose un ensemble complet d’outils d’analyse de sécurité pour les applications cloud natives, ce qui garantit que les équipes de développement peuvent corriger les vulnérabilités rapidement, dès le début du processus. Snyk s’intègre de manière transparente aux workflows existants pour fluidifier le déploiement du nouveau processus de sécurité auprès des équipes de développement. Les entreprises peuvent ainsi opter pour une stratégie de sécurité « shift left » et implémenter des mesures de sécurité pour leurs conteneurs et leurs applications dès le début.

Plus précisément, Snyk Container permet non seulement d’analyser vos conteneurs, mais aussi les Dockerfiles eux-mêmes pour faire correspondre les vulnérabilités aux commandes qui en sont à l’origine et fournir des recommandations, voire des pull requests permettant d’utiliser des images parentes moins vulnérables. Ce contexte approfondi autour des problèmes de sécurité aide les développeurs à déterminer lesquels corriger en premier en fonction de leur risque d’exploitation immédiat. Ils peuvent ainsi améliorer sans délai la sécurité de leurs conteneurs et applications en limitant les modifications.

FAQ sur l’analyse des conteneurs

Comment fonctionne l’analyse des conteneurs ?

L’analyse des conteneurs consiste généralement à utiliser un outil de sécurité qui étudie une image de conteneur couche par couche pour détecter d’éventuels problèmes de sécurité. La plupart des solutions d’analyse s’appuient sur une base de données des vulnérabilités connues permettant aux entreprises de ne pas se laisser dépasser par les évolutions des menaces. Les applications conteneurisées comportent par ailleurs plusieurs composants, comme du code personnalisé, des dépendances open source, des images, des Dockerfiles, etc. La recherche de vulnérabilité dans tous ces composants est essentielle pour assurer une sécurité exhaustive des conteneurs.