Les 10 images Docker les plus populaires contiennent chacune au moins 30 vulnérabilités
26 février 2019
0 minutes de lectureBienvenue dans le rapport annuel de Snyk sur l’état de la sécurité open source 2019. Ce rapport se compose de plusieurs articles :
Hausse de 88 % des vulnérabilités dans les bibliothèques d’applications en deux ans
Les 10 images Docker les plus populaires contiennent chacune au moins 30 vulnérabilités
Les vulnérabilités ReDoS dans npm bondissent de 143 % et les attaques XSS continuent de progresser
Vous pouvez également télécharger notre superbe rapport PDF, élaboré avec soin, qui rassemble toutes ces informations et bien plus encore.
Télécharger le rapport 2019 sur la sécurité open source
Vulnérabilités connues dans les images Docker
L’adoption des technologies de conteneurs applicatifs augmente à un rythme remarquable et devrait encore progresser de 40 % en 2020, selon 451 Research. Il est courant que des bibliothèques système soient intégrées à de nombreuses images Docker, car celles-ci reposent sur une image parente qui utilise généralement une distribution Linux comme base.
Les images Docker s’accompagnent presque toujours de vulnérabilités connues, en plus de leurs nombreux avantages
Nous avons analysé dix des images les plus populaires à l’aide des fonctionnalités d’analyse Docker récemment lancées par Snyk.
Les résultats montrent que chaque image Docker analysée contenait des versions vulnérables de bibliothèques système. L’image officielle Node.js intègre 580 bibliothèques système vulnérables ; les autres en comptent chacune au moins 30 présentant des vulnérabilités connues du public.

Snyk a récemment lancé sa solution de gestion des vulnérabilités des conteneurs afin de permettre aux développeurs d’assumer pleinement la sécurité de leurs applications conteneurisées avec Docker. Grâce à cette nouvelle fonctionnalité, les développeurs peuvent détecter les vulnérabilités connues dans leurs images de base Docker et les corriger en suivant les recommandations de Snyk. Snyk suggère une mise à niveau minimale ou des images de base alternatives qui contiennent moins de vulnérabilités, voire aucune.
La correction peut être simple si vous en connaissez l’existence. Il suffit de reconstruire l’image Docker pour corriger les vulnérabilités dans 20 % des images ; dans 44 % des cas, il faut remplacer l’image de base.
À partir des analyses effectuées par les utilisateurs de Snyk, nous avons constaté que 44 % des images Docker analysées présentaient des vulnérabilités connues pour lesquelles il existait des images de base plus récentes et plus sécurisées. Ces recommandations de remédiation sont propres à Snyk. Les développeurs peuvent ainsi mettre à niveau leurs images Docker.
Snyk a également indiqué que 20 % des images Docker analysées présentaient des vulnérabilités connues qui pouvaient être réduites en reconstruisant simplement l’image.
Différences de vulnérabilités selon la balise de l’image
La version actuelle de Node.js bénéficiant d’une prise en charge à long terme (LTS) est la version 10. L’image portant la balise 10 (c’est-à-dire node:10) est essentiellement un alias de node:10.14.2-jessie (au moment de notre analyse), où jessie désigne une version obsolète de Debian qui n’est plus activement maintenue.
Si vous aviez choisi cette image comme image de base dans votre Dockerfile, vous vous exposeriez à 582 bibliothèques système vulnérables intégrées à l’image. Une autre option consiste à utiliser la balise d’image node:10-slim, qui fournit des images plus légères, sans dépendances inutiles (elle omet par exemple les pages de manuel et d’autres ressources). Toutefois, le choix de node:10-slim entraînerait encore l’intégration de 71 bibliothèques système vulnérables.
La plupart des vulnérabilités proviennent de l’image de base que vous avez choisie. C’est pourquoi la remédiation doit porter sur les correctifs de l’image de base.
L’image node:10-alpine est une meilleure option si vous souhaitez une image de base très légère, avec un ensemble minimal de bibliothèques système. Toutefois, même si aucune vulnérabilité n’a été détectée dans la version de l’image Alpine que nous avons analysée, cela ne signifie pas nécessairement qu’elle est exempte de problèmes de sécurité.
Alpine Linux gère les vulnérabilités différemment des autres grandes distributions, qui préfèrent rétroporter des ensembles de correctifs. Alpine privilégie des cycles de publication rapides pour ses images : chaque nouvelle version d’image s’accompagne d’une mise à niveau des bibliothèques système.

De plus, Alpine Linux ne dispose pas d’un programme d’avis de sécurité. Ainsi, lorsqu’une bibliothèque système présente des vulnérabilités, Alpine Linux ne publie pas d’avis officiel à ce sujet. Pour atténuer la vulnérabilité, Alpine Linux crée une nouvelle version de l’image de base intégrant une nouvelle version de la bibliothèque qui corrige le problème, si elle est disponible (au lieu de rétroporter des correctifs, comme indiqué précédemment).
Rien ne garantit que la nouvelle version corrigée d’une bibliothèque vulnérable sera immédiatement disponible sur Alpine Linux, même si c’est souvent le cas. Malgré cela, si vous pouvez passer à la version Alpine Linux en toute sécurité sans interrompre votre application, vous pouvez réduire la surface d’attaque de votre environnement en utilisant moins de bibliothèques.
En réalité, une balise d’image comme node:10 est un alias qui pointe vers une autre image et change constamment au fil de la publication de nouvelles versions mineures et corrigées de la version 10.

Certaines équipes préfèrent utiliser une balise de version spécifique plutôt qu’un alias. Leur image de base serait alors, par exemple, node:10.8.0-jessie. Toutefois, à mesure que de nouvelles versions de Node 10 sont publiées, il est fort probable que ces images plus récentes contiennent moins de vulnérabilités dans leurs bibliothèques système.
Grâce aux fonctionnalités d’analyse Docker de Snyk, nous avons constaté que lorsqu’un projet utilisait une balise de version spécifique, comme node:10.8.0-jessie, nous pouvions alors recommander des images plus récentes contenant moins de vulnérabilités.
Vulnérabilités connues dans les bibliothèques système
Le nombre de vulnérabilités signalées dans les bibliothèques système augmente, affectant certaines distributions Linux populaires comme Debian, Red Hat Enterprise Linux et Ubuntu. Pour la seule année 2018, nous avons recensé 1 597 vulnérabilités dans les bibliothèques système de ces distributions, auxquelles des CVE connus ont été attribués, soit plus de quatre fois le nombre de vulnérabilités de 2017.

L’analyse des vulnérabilités présentant un niveau de gravité élevé ou critique montre clairement que leur nombre continue d’augmenter en 2017 et en 2018.

Pour aller plus loin :
Consultez le DevSecOps Hub de Snyk pour découvrir des ressources et des conseils à mettre en pratique.
Hausse de 88 % des vulnérabilités dans les bibliothèques d’applications en deux ans
Les vulnérabilités ReDoS dans npm bondissent de 143 % et les attaques XSS continuent de progresser
10 bonnes pratiques pour sécuriser Docker - découvrez les pratiques de sécurité à suivre lorsque vous créez des images de base Docker ou que vous les récupérez, ainsi que Docker Content Trust.
Vous développez en Java ? Cette ressource devrait vous intéresser : Docker pour les développeurs Java : 5 points essentiels pour ne pas compromettre votre sécurité
10 bonnes pratiques pour conteneuriser des applications web Node.js avec Docker. Si vous développez avec Node.js, vous allez adorer ce guide pas à pas qui vous montre comment créer des images de base Docker sécurisées et performantes pour vos applications Node.js.
