Clair est un outil d’analyse statique de vulnérabilités dans les images de conteneurs. C’est à dire que Clair a besoin de scanner une seule fois une image et peut remonter des informations sur les nouvelles vulnérabilités au fur et à mesure de leurs apparitions.
Le développement de cet outil a été initié par les équipes de CoreOS en novembre 2015 car le nombre de failles de sécurité présentes dans les images du Docker Hub, qu’elles soient officielles ou non, est assez important. Cet article présenté en conférence cette année et relatant le résultat d’un scan de plusieurs centaines de milliers d’images du Docker Hub illustre ce fait. Clair est capable de découvrir les vulnérabilités présentes sur les images Docker ainsi que les images au format Appc.
Ce logiciel est codé en Golang et la version 2.0 est disponible depuis le 19 Mai 2017. Ce projet est en constante évolution et nous pouvons trouver sur le github du projet une v2 de l’API de Clair basé sur le framework gRPC de Google.
Clair est organisé autour de différents modules :
Clair est construit en tant qu'image de conteneur, ce qui permet de le déployer simplement, en tant que conteneur simple ou dans un cluster Kubernetes (le fichier de création des services est disponible sur le repository Github de Clair).
Le fonctionnement est globalement assez simple : l’utilisateur dépose les images à analyser au travers de l’API. Toujours au travers de l’API, l’utilisateur peut demander une analyse de ses images et savoir à quelles vulnérabilités les images correspondent, cette analyse se faisant en temps réel via la corrélation dans la base de données.
Régulièrement (via un intervalle défini dans la configuration), une mise à jour des listes de failles est réalisée, ce qui permet d’avoir une information très fiable sur la faillibilité des images. De plus, il est possible de configurer une nouvelle analyse de l’image à intervalles réguliers, ce qui crée des “notifications” en base de données que l’utilisateur peut consulter, et aussi de configurer l’envoi de ces mêmes notifications à un serveur http. Au travers de cette fonctionnalité, il est possible de faire en sorte de bloquer l’utilisation d’une image, d’avertir par mail, de relancer une construction de l’image avec les mises à jour.
Pour vous aider dans cette tâche sans utiliser l’API, il existe un client en ligne de commande: clairctl (qui ne supporte que les images Docker actuellement).
Enfin, il est bon de savoir qu’il est possible de customiser le comportement de Clair en créant de nouveaux modules pour la gestion d’autres types d’images (OCI par exemple), ajouter de nouveaux critères afin de valider la présence de failles de sécurité ou encore l’ajout de nouvelles sources de CVE.
Nous savons que la sécurité de vos infrastructures est importante à vos yeux. Nous espérons donc vous avoir fait découvrir un outil qui va vous aider à renforcer cette sécurité, ou vous permettre de migrer plus sereinement vers des infrastructures conteneurisées. Les différents liens présents dans cet article devraient vous aider à vous lancer.