Skip to main content

Les dix principales images Docker contiennent plus de 8 000 chemins vulnérables

Écrit par
Headshot of Hayley Denbraver

Hayley Denbraver

Security in The Container Registry small

7 mars 2019

0 minutes de lecture

Introduction

Dans cet article, nous examinons de plus près les images Docker et les écosystèmes de conteneurs étudiés dans notre rapport State of Open Source Security, qui révèle notamment que les dix principales images Docker contiennent plus de 8 000 chemins vulnérables.

Nous sommes ravis d’aider notre communauté à mieux comprendre la sécurité de Docker. Depuis la publication du précédent rapport State of Open Source Security, Snyk a lancé des outils qui aident les développeurs à comprendre et à atténuer les vulnérabilités des conteneurs. Nous aimons partager nos observations sur l’état de la sécurité open source, mais aussi proposer des outils pour vous aider à détecter et à corriger les vulnérabilités de vos images de conteneurs.

Dans le cadre de nos recherches pour le rapport State of Open Source Security, nous avons observé les statistiques suivantes sur les personnes responsables de la sécurité des conteneurs et celles qui la mettent réellement en pratique.

  • 68 % des utilisateurs estiment que les développeurs devraient être responsables de la sécurité des images de conteneurs Docker.

  • 54 % des développeurs ne testent pas du tout la sécurité des images Docker.

  • Seuls 15,5 % des utilisateurs déclarent tester leurs images Docker à la recherche de vulnérabilités pendant le développement.

Ces chiffres révèlent un décalage entre la responsabilité de la sécurité et sa mise en pratique. Puisque les développeurs sont responsables de la sécurité des images de conteneurs, ils gagneraient beaucoup à intégrer la sécurité plus tôt dans leur workflow, dès le développement. Pourtant, seuls 15,5 % le font ! Les chiffres indiquent également que certains développeurs sont responsables de la sécurité sans la mettre activement en pratique. Ainsi, même les mesures les plus simples — corriger des vulnérabilités en mettant à jour le tag de base ou en reconstruisant l’image Docker — risquent d’être négligées.

Pour ces raisons, nous avons pensé qu’il serait utile d’examiner plus en détail les vulnérabilités détectées, afin d’aider les développeurs à comprendre les problèmes de sécurité propres à leurs conteneurs Docker.

Analyse approfondie de la sécurité Docker

Nous examinons de plus près les chemins menant aux vulnérabilités, les liens entre dépendances et vulnérabilités, ainsi que la gravité de ces dernières.

Remarque : ces chiffres sont à jour au moment de la rédaction et diffèrent donc légèrement de ceux présentés dans le rapport State of Open Source Security.

Chemins menant aux vulnérabilités

Il arrive qu’une même vulnérabilité soit introduite par plusieurs dépendances. Snyk ne voulait pas compter plusieurs fois ces vulnérabilités, car cela donnerait l’impression que l’image est beaucoup moins sécurisée qu’elle ne l’est réellement. Il est toutefois important de comprendre qu’une vulnérabilité peut être introduite plusieurs fois : plus elle est associée à des dépendances, plus il peut être difficile de la corriger. Pour donner aux utilisateurs une idée de la fréquence de ce phénomène, Snyk utilise le concept de « chemins », qui désigne le nombre de voies par lesquelles les vulnérabilités sont introduites dans l’image. J’ai donc pensé qu’il serait utile d’étudier le rapport entre le nombre de chemins et celui des vulnérabilités afin d’évaluer la difficulté à supprimer les vulnérabilités d’une image Docker donnée.

Tableau comparant les vulnérabilités, les chemins et les chemins par vulnérabilité dans différentes images Docker, avec un total de 1 075 vulnérabilités et de 8 204 chemins.

Ce tableau montre que l’image Docker node sera probablement la plus difficile à débarrasser de ses vulnérabilités. On constate également que chaque vulnérabilité présente dans les dix images étudiées est susceptible d’être associée à plusieurs chemins. Heureusement, Snyk vous évite d’avoir à démêler ces nœuds vous-même. Nos outils Docker peuvent vous aider à déterminer comment supprimer ces vulnérabilités ou vous suggérer d’autres images Docker à utiliser.

Dépendances

Examinons maintenant de plus près les dépendances de chacune des images Docker. Le tableau suivant montre le lien entre le nombre de dépendances et le nombre de vulnérabilités.

Tableau comparant les vulnérabilités, les dépendances et le ratio vulnérabilités/dépendances de différentes images Docker, avec les totaux.

En considérant dans leur ensemble les dix images Docker étudiées, nous avons observé que l’ajout de dix dépendances s’accompagne probablement de l’introduction de sept vulnérabilités. Node fait figure d’exception : en moyenne, dix dépendances supplémentaires y introduisent 14 vulnérabilités, soit deux fois plus que la moyenne !

Gravité

Snyk classe les vulnérabilités selon trois niveaux de gravité : élevée, moyenne et faible. Ces catégories aident les utilisateurs à évaluer et à prioriser les vulnérabilités à corriger en premier. Comprendre la gravité des vulnérabilités détectées dans les images Docker nous permet de mieux cerner l’ampleur du problème de sécurité.

Bonne nouvelle concernant la gravité des vulnérabilités ! La grande majorité des vulnérabilités observées dans notre étude étaient de faible gravité, soit 74,9 %. Les vulnérabilités de gravité moyenne représentaient 16,9 %, contre 8,2 % pour celles de gravité élevée. C’est une bonne nouvelle, car les utilisateurs peuvent donner la priorité au petit nombre de vulnérabilités graves et améliorer considérablement la sécurité de leurs conteneurs.

Voici la répartition de la gravité des vulnérabilités par image Docker : 

Tableau comparant les pourcentages de gravité faible, moyenne et élevée pour des images Docker, notamment node, postgres, nginx et d’autres.

On constate que, malgré des variations entre les images Docker, la majorité des vulnérabilités sont généralement de faible gravité. C’est une bonne nouvelle !

Conclusions

Nos résultats montrent que les dix principales images Docker contiennent plus de 8 000 chemins menant à des vulnérabilités. Associés au constat que presque chaque dépendance présente dans ces images s’accompagne de l’ajout d’une vulnérabilité, ils plaident fortement en faveur de l’utilisation d’images de base minimales. Cette recommandation figurait également en tête de notre fiche pratique récemment publiée sur la sécurité Docker.

En privilégiant des images minimales qui ne regroupent que les outils système et les bibliothèques nécessaires à l’exécution de votre projet, vous réduisez également la surface d’attaque et veillez à livrer un système d’exploitation sécurisé. Résultat : potentiellement moins de vulnérabilités, moins de chemins menant à celles-ci et moins de dépendances au total, pour un conteneur plus sécurisé.

La sécurité Docker peut être complexe, mais les outils de Snyk facilitent la correction des vulnérabilités et la recherche d’une image de base sécurisée.

La sécurité des conteneurs, pensée pour les développeurs

Snyk détecte et corrige automatiquement les vulnérabilités dans les images de conteneurs et les workloads Kubernetes.