D’après l’analyse de sécurité récente des 4 millions d'images de conteneurs hébergées sur le référentiel Docker Hub, plus de la moitié contenaient au moins une vulnérabilité critique. Celle-ci a également permis de constater que des milliers d'images contenaient des logiciels malveillants ou des applications potentiellement dangereuses. Ce constat pointe la nécessité pour les entreprises de mettre en place des politiques et des processus de surveillance stricts pour vérifier l’état des images de conteneurs et des composants logiciels tiers provenant des référentiels publics. Les attaques ciblant la chaîne d'approvisionnement de logiciels ne sont pas nouvelles, mais la popularité croissante des DevOps, du développement agile et de l'architecture logicielle basée sur les micro-services et exploitant les technologies de conteneur ont favorisé la création de nombreux registres publics hébergeant des composants logiciels et des images pré-construites. Sauf que les attaquants ont aussi vu dans ce phénomène une opportunité à exploiter, et qu’ils essayent de publier du code malveillant sur ces référentiels de paquets, soit directement, soit en compromettant les comptes existants.

Dans son rapport 2020 sur l'état de la chaîne d'approvisionnement logiciel State of the Software Supply Chain, l’entreprise de gouvernance open source et d’automatisation du DevOps Sonatype, fait état d'une croissance de 430 % d'une année sur l'autre des attaques visant à infiltrer les projets de logiciels open source en amont en exploitant le réseau complexe de dépendances qui existe entre eux. Nombre de ces attaques ont profité des dépôts de paquets publics pour distribuer des logiciels malveillants. C’est le cas par exemple de npm pour l'écosystème JavaScript ou de PyPi pour la communauté des développeurs Python. Docker Hub ne fait pas exception à la règle, même s'il est utilisé pour distribuer des images de conteneurs pré-construites plutôt que des logiciels individuels. Selon le rapport de Sonatype, au cours de l'année dernière, 2,2 millions d'images de conteneurs ont été ajoutées à Docker Hub et le référentiel pourrait atteindre 96 milliards de demandes d'extraction d'images de la part des développeurs cette année.

De multiples vulnérabilités découvertes

Les technologies de conteneur comme Docker ont permis aux entreprises d’accélérer de manière radicale leurs déploiements et les processus d’améliorations de leurs applications. Par exemple, l’extraction d'une image Docker pré-construite contenant une instance de MySQL d'un registre public comme Docker Hub en vue de son utilisation par une application ne prend quelques secondes par rapport à l'installation et la configuration manuelles du serveur de base de données. Cependant, quand elles utilisent un paquet de tierce partie dans leurs propres projets, les entreprises doivent toujours penser au risque auquel elles s’exposent en téléchargeant et en exécutant des versions obsolètes de ces paquets potentiellement affectés par des vulnérabilités connues. Á cet égard, les conteneurs Docker ne sont pas différents. En fait, le risque est même plus élevé car ils comprennent des piles logicielles complètes avec une couche d'OS et une couche d'application et non pas un seul paquet.

Selon l'analyse de Sonatype, au moins 11 % des composants open source consommés par les développeurs présentent au moins une vulnérabilité connue. Mais ce pourcentage peut varier considérablement selon les langages de programmation et les référentiels de paquets. Par exemple, une analyse du registre npm faite en 2019 a révélé que près de 40 % des paquets hébergés avaient utilisé un code présentant des failles connues. Concernant les images Docker hébergées sur le Hub, les résultats d’une analyse complète du dépôt publiés par l’entreprise Prevasio, spécialisée dans l'analyse des menaces, ont révélé que 51% de toutes les images de conteneurs présentaient des vulnérabilités critiques, 13% des vulnérabilités hautement critiques et 4% des vulnérabilités modérées.

Le risque d'exécuter des logiciels obsolètes provenant d'images extraites de Docker Hub est donc important. Mais celui-ci peut être réduit, en choisissant d’une part des éditeurs fiables qui maintiennent leurs images à jour, et d’autre part en mettant en place des politiques imposant une analyse des vulnérabilités et une analyse de la configuration des images Docker, non seulement au moment du déploiement, mais aussi à des intervalles réguliers. En septembre, Docker a annoncé un partenariat avec la société de sécurité Snyk afin d’intégrer des capacités natives d'analyse des vulnérabilités sur Docker Desktop et dans Docker Hub. Cependant, un autre risque associé aux images Docker provenant de sources tierces est plus difficile à atténuer : celui des images contenant des logiciels malveillants ou des applications utilisant des chevaux de Troie.

Des images de conteneurs minées par des cryptomineurs

Tous les référentiels de logiciels et les boutiques d'applications représentent des cibles pour les pirates informatiques qui cherchent à diffuser des logiciels malveillants à des utilisateurs peu méfiants et le succès de ces attaques dépend du niveau de surveillance de ces dépôts. Au cours de leur analyse, les chercheurs de Prevasio ont identifié 6 433 images malveillantes ou potentiellement nuisibles, soit 0,16 % de l'ensemble du registre de Docker Hub. « Si le développeur d'une entreprise va chercher une image pré-construite pour gagner du temps, au lieu de créer une nouvelle image à partir de zéro, le risque que cette image préétablie soit infectée par un cheval de Troie est réel », ont averti les chercheurs de Prevasio. « Si une telle image se retrouve en production, elle pourrait permettre à des attaquants d’accéder à distance à ces applications conteneurisées par une porte dérobée ».

D’après l’analyse de Prevasio, le type de malwares le plus répandu dans les images Docker sont les mineurs de cryptomonnaies, puisqu’il représente 44 % des images malveillantes. 23 % des images contenaient un voleur de portefeuille Bitcoin sous forme de paquet npm appelé flatmap-stream, et 20 % des images contenaient divers outils de piratage comme des frameworks de post-exploitation qui fournissent aux attaquants des portes dérobées et 6,5 % contenaient un malware Windows. « Notre analyse des images de conteneurs malveillants a révélé que le code multiplateforme était largement utilisé, en particulier GoLang, .NET Core et PowerShell Core », ont déclaré les chercheurs de Prevasio. « La portabilité du code multiplateforme est très intéressante financièrement pour les attaquants car elle augmente leur retour sur investissement. En d'autres termes, ils n’ont pas besoin d’écrire leur code malveillant plusieurs fois pour plusieurs plates-formes. Ils peuvent l’écrire une seule fois et l’utiliser partout, y compris dans des conteneurs Linux. C’est une des raisons pour laquelle on trouve un grand nombre de frameworks de sécurité offensifs et d'outils de post-exploitation, comme Mimikatz ou Caldera, dans les conteneurs de Linux Docker, facilitant la prolifération de techniques Windows malveillantes bien évoluées dans le monde Linux ».

Prevasio a également trouvé des images contenant des applications déjà chargées avec un cheval de Troie, par exemple des versions de WordPress, du serveur d'application web Apache Tomcat ou de l'outil Jenkins CI/CD avec un backdoor. Dans certains cas, les images de conteneurs comprenaient des artefacts comme des pages web de spam, résultant probablement d'une infection par un logiciel malveillant sur l'ordinateur utilisé pour les générer. Le scan hors ligne des images de conteneurs avec un produit anti-malware ne sera peut-être pas suffisant pour détecter ces menaces, car les attaquants utilisent de plus en plus de charges utiles dynamiques. Cela signifie que la charge utile malveillante est téléchargée et installée dans le conteneur après le premier déploiement de l'image.

« Notre analyse des conteneurs malveillants montre également que de nombreuses images contiennent une charge utile dynamique », ont déclaré les chercheurs. « C'est-à-dire qu'une image dans sa forme originale n'a pas de binaire malveillant. Mais, au moment de l'exécution, elle peut être scriptée pour télécharger une source de mineur de cryptomonnaie, pour ensuite la compiler et l'exécuter ». La détection de ces binaires nécessite des outils d'analyse dynamique où l'image est exécutée et surveillée dans un bac à sable similaire à ceux utilisés pour détecter si les exécutables Windows sont malveillants, en analysant leur comportement au moment de l'exécution.