Comment utiliser l’analyse de sécurité de Docker
Depuis sa parution en 2013, Docker est devenu une solution massivement populaire pour le déploiement d’applications. En permettant d’exécuter des applications dans des environnements isolés appelés conteneurs tout en évitant la surcharge de ressources associée aux machines virtuelles, Docker offre des avantages en termes de portabilité et de sécurité sans réduire de manière significative l’efficacité des systèmes.
Mais l’isolation que Docker fournit entre les conteneurs ne protège pas contre tous les types de risques de sécurité. Au contraire, une variété de vulnérabilités peut se cacher à l’intérieur des images Docker qui sont les « plans » sur lesquels sont basés les conteneurs Docker. Parmi les exemples clés, on peut citer :
- Les logiciels malveillants que les attaquants injectent dans les conteneurs Docker en même temps que des applications légitimes. Le logiciel malveillant injecté sera exécuté en même temps que le reste du conteneur.
- Les risques liés à la configuration du réseau, comme le fait de laisser des ports non sécurisés ouverts en utilisant l’instruction EXPOSE dans un fichier Docker. Les attaquants pourraient abuser de ces ports pour accéder à un conteneur non sécurisé. Ils pourraient alors utiliser cette tête de pont pour étendre l’attaque au reste du système.
- Les risques liés à la configuration du contrôle d’identité et d’accès (en anglais, Identity and Access Control ou IAM) qui permettent aux conteneurs d’accéder à des ressources externes auxquelles ils ne devraient pas avoir accès.
- Les informations d’identification exposées (ex. clés API) à l’intérieur de l’image docker, qui peuvent être réutilisées par n’importe quel attaquant ayant accès à l’image ou au conteneur.
- Images infectées par une attaque par élévation de privilèges qui parvient à sortir du conteneur et à pénétrer dans l’hôte, par ex. une image qui exécute un exploit d’élévation de privilèges du noyau sur son point d’entrée.
Utiliser l’analyse d’images Docker pour sécuriser Docker
L’analyse de sécurité Docker est la principale méthode de détection des risques de ce type dans les images Docker. Outils d’analyse d’images Docker analysent automatiquement toutes les couches des images Docker pour détecter les logiciels malveillants, les mauvaises configurations et les autres risques susceptibles d’entraîner une faille de sécurité dans un environnement d’application basé sur Docker.
Recherche de failles de sécurité dans n’importe quelle image en 3 étapes simples, avec Xray CLI
SCANNER IMAGE DOCKER
L’analyse des images Docker consiste à identifier le contenu d’une image Docker, puis à vérifier si ce contenu correspond à des composants réputés pour leur manque de sécurité. Par exemple, les outils de scan des images Docker peuvent permettre de découvrir qu’une certaine bibliothèque open source dans une image Docker contient une vulnérabilité de sécurité connue. Les scanners d’images Docker permettant d’analyser les configurations en plus du contenu applicatif d’une image sont également capables de détecter les mauvaises configurations susceptibles d’entraîner des problèmes de sécurité, tels que les problèmes de réseau ou d’IAM décrits ci-dessus.
Les limites de l’analyse des images Docker
Bien que l’analyse d’images soit un élément essentiel d’une stratégie de sécurité Docker, il est important de comprendre que les scanners d’images ne traitent pas tous les types de risques potentiels de sécurité Docker.
L’analyse d’une image Docker ne détectera pas les risques tels que :
- Des mauvaises configurations avec les outils d’orchestration de conteneurs, comme Kubernetes, que les attaquants pourraient utiliser pour accéder à un environnement d’applications conteneurisées.
- Les vulnérabilités de sécurité qui existent dans le système d’exploitation utilisé pour héberger les conteneurs.
- Risques de sécurité découlant de codes d’application ou de bibliothèques propriétaires qui ne sont pas inclus dans les bases de données de vulnérabilités utilisées par les outils d’analyse de sécurité de Docker.
Meilleures pratiques pour la sécurité des images Docker
Lors du build et du déploiement d’images Docker, les équipes peuvent contribuer à atténuer le risque de vulnérabilités de sécurité provenant d’images non sécurisées en adhérant à un ensemble de règles de sécurité pour les images Docker, notamment les suivantes.
Scanner toutes les images
Une bonne pratique de base consiste à analyser toutes les images Docker avant d’exécuter des conteneurs basés sur ces images. Les scanners peuvent détecter des risques tels que des composants connus pour être sujets à des vulnérabilités de sécurité, ou des problèmes de configuration qui peuvent conduire à des problèmes de sécurité.
Une façon simple d’effectuer l’analyse est d’intégrer le scan d’images dans votre registre de conteneurs Docker afin que les images soient automatiquement scannées chaque fois qu’elles sont chargées dans votre registre. Les scanners d’images tels que JFrog Xray peuvent s’intégrer à des dépôts de conteneurs comme Artifactory à cette fin.
Éviter la balise :latest
Lorsque vous téléchargez des images Docker à partir d’un registre de conteneurs, vous avez la possibilité d’utiliser la balise « :latest » pour télécharger la version la plus récente de l’image disponible dans le registre. C’est pratique, mais ce n’est pas idéal du point de vue de la sécurité, car cela pourrait entraîner le déploiement d’une version de l’application différente de celle à laquelle vous vous attendez. Par exemple, vous pouvez déployer par inadvertance une version bêta d’un conteneur qui présente des problèmes de sécurité.
Bien que l’analyse des images Docker devrait vous protéger contre les images non sécurisées même lors de l’utilisation de la balise :latest, il est préférable d’éviter cette balise. Au lieu de cela, indiquez la version de l’image que vous souhaitez utiliser.
Évite les contenus d’images inutiles
Lorsque vous créez une image Docker, respectez le principe du « less is more ». En d’autres termes, moins il y a de couches dans une image Docker, mieux c’est du point de vue de la sécurité. Choisissez des images de base (qui servent de fondement aux nouvelles images Docker) qui ne contiennent que des composants strictement nécessaires à votre application, et évitez d’ajouter à l’image des bibliothèques ou des commandes dont vous n’avez pas besoin. Les images de base comme Alpine Linux, une distribution Linux légère, sont populaires à cette fin.
Protéger votre registre de conteneurs
Toute personne ayant accès à votre registre de conteneurs peut potentiellement y charger des images Docker non sécurisées. Cette personne pourrait également désactiver l’analyse des images, ce qui vous laisserait sans protection contre les images malveillantes.
Prévenez ces risques en choisissant un registre Docker qui vous permet de configurer des contrôles d’accès granulaires afin que chaque utilisateur ne puisse accéder ou modifier que les images spécifiques dont il a besoin. Vous pouvez également envisager d’utiliser un registre Docker qui n’est accessible qu’à partir des points d’extrémité du réseau et/ou des utilisateurs que vous avez spécifiés, au lieu d’un registre public, visible par le monde entier.
Pour plus d’informations :