Agence web » Actualités du digital » Comment utiliser Trivy pour trouver des vulnérabilités dans les conteneurs Docker –

Comment utiliser Trivy pour trouver des vulnérabilités dans les conteneurs Docker –

Logo Trivy

Une analyse Trivy inspecte l’image de base de votre Dockerfile pour trouver les vulnérabilités non résolues dont vos conteneurs hériteront. Trivy peut également examiner les packages du système d’exploitation et les dépendances du code source ajoutés via les gestionnaires de packages populaires.

Trivy propose trois types d’analyse : conteneur, référentiel Git et répertoire du système de fichiers. Nous nous concentrons sur les analyses de conteneurs dans cet article. La documentation Trivy fournit plus d’informations sur la façon dont vous pouvez analyser votre code source et son environnement.

Installer Trivy

Trivy est disponible sur les distributions Linux les plus populaires. Vous devrez peut-être ajouter le référentiel du développeur. Vous pouvez trouver le bon lien pour votre distribution dans la documentation Trivy.

Si vous préférez utiliser une version spécifique, vous pouvez télécharger un binaire à partir de la page des versions GitHub du projet. Il existe également un script d’installation automatisé qui téléchargera le binaire approprié pour votre système d’exploitation.

Enfin, Trivy a sa propre image Docker que vous pouvez utiliser à la place d’une installation bare metal :

docker run --rm -v trivy-cache:/root/.cache/ -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy:latest

Cette commande lie votre trivy-cache répertoire au chemin du cache du conteneur Trivy. Cela améliore les performances en permettant à Trivy de mettre en cache les données en dehors de Docker entre les analyses.

Le socket Docker de votre hôte est également monté dans le conteneur. Cela permet à Trivy d’analyser d’autres conteneurs exécutés sur l’hôte. Vous êtes maintenant prêt à commencer à rechercher des vulnérabilités.

Première exécution

Le moteur de conteneur de Trivy prend en charge les images locales et distantes. Cela fonctionne avec Docker, Podman, les archives d’images exportées (docker save) et des images dans des registres tels que Docker Hub et GitHub Container Registry.

Vous pouvez démarrer une analyse de base à l’aide de la trivy image commander. Cela accepte une balise d’image.

trivy image my-image:latest

Trivy téléchargera sa base de données de vulnérabilités lors de la première exécution. La base de données sera mise en cache et réutilisée pour les analyses futures.

Capture d'écran d'un rapport Trivy

Les résultats du scan sont envoyés directement sur votre terminal. Le résumé en haut montre le système d’exploitation du conteneur détecté et une répartition des vulnérabilités trouvées par gravité. Le tableau fournit une liste complète des problèmes, y compris la bibliothèque dans laquelle chacun a été trouvé, une description et un ID CVE lorsqu’il est disponible.

Réduire le bruit

Trivy prend en charge plusieurs indicateurs pour vous permettre de personnaliser sa sortie. Il affichera par défaut toutes les vulnérabilités détectées si aucun indicateur n’est présent. Cela pourrait inclure des vulnérabilités qui n’ont pas été corrigées dans le projet en amont.

Vous pouvez exclure les problèmes non résolus en ajoutant le --ignore-unfixed drapeau. Cela réduit le bruit en cachant les problèmes que vous ne pourrez pas résoudre.

trivy image --ignore-unfixed my-image:latest

Parfois, vous voudrez peut-être accepter intentionnellement une vulnérabilité. Tous les problèmes n’ont pas le même impact sur tous les projets. Si vous n’êtes pas concerné, ou si vous êtes prêt à prendre le risque, Trivy vous permettra d’omettre des identifiants CVE spécifiques de vos analyses.

Ajouter un .trivyignore fichier dans votre répertoire de travail. Saisissez une liste d’ID CVE, un sur chaque ligne. Trivy trouvera et utilisera le fichier lorsque vous exécuterez une analyse. Les CVE présents dans .trivyignore n’apparaîtra pas dans la sortie de numérisation. C’est une bonne idée d’ajouter un commentaire à chaque CVE que vous excluez ; cela garantit que les autres contributeurs sont informés de la raison pour laquelle le risque a été accepté.

# .trivyignore
# This issue is not relevant to our usage
CVE-2021-1234

Filtrage des vulnérabilités

Vous pouvez filtrer pour afficher les vulnérabilités d’un type particulier en utilisant le --vuln-type drapeau. Cela accepte soit library ou alors os comme valeur.

Utilisant library révélera les problèmes liés aux dépendances du langage de programmation. le os L’option étend l’analyse aux packages du système d’exploitation.

Vous pouvez également filtrer par gravité de vulnérabilité. Cela vous aide à vous concentrer sur les problèmes importants en masquant des vulnérabilités relativement insignifiantes. Transmettez une liste de niveaux de gravité CVSS séparés par des virgules pour inclure :

trivy image --severity MEDIUM,HIGH,CRITICAL my-image:latest

Désormais, tout problème de gravité « faible » sera omis du rapport.

Trivy utilise par défaut un tableau visuel conçu pour la consommation humaine dans un terminal. Vous pouvez obtenir un JSON analysable par machine à la place en ajoutant --format json.

Il existe également une prise en charge des styles de sortie personnalisés à l’aide de modèles. Plusieurs modèles sont inclus, tels que xml et html:

trivy image --format template @contrib/html.tpl -o scan.html my-image:latest

Cette analyse produira un rapport HTML enregistré dans scan.html. Les rapports graphiques peuvent être plus rapides à lire et plus faciles à partager, en particulier lorsque de nombreux problèmes sont détectés.

Utiliser Trivy dans CI

Vous pouvez facilement incorporer Trivy dans vos scripts CI. Attention, le code de sortie est toujours 0 par défaut, même si des vulnérabilités sont trouvées. Ajouter le --exit-code 1 flag pour faire sortir Trivy avec un code différent de zéro si des problèmes sont présents.

Vous avez plusieurs options pour intégrer Trivy dans vos builds. Des modèles d’intégration officiels sont disponibles pour les fournisseurs de CI populaires, notamment GitHub, GitLab, Travis et CircleCI.

Lorsque vous créez des images dans votre pipeline, vous pouvez soit exécuter Trivy sur la sortie de génération finale, soit utiliser l’outil dans le conteneur. Les builds en plusieurs étapes de Docker vous permettent de référencer l’image Trivy et d’abandonner la build si une analyse échoue. Assurez-vous d’utiliser le filesystem mode au lieu de image, pendant que vous analysez le conteneur en cours d’exécution de l’intérieur.

COPY --from=aquasec/trivy:latest /usr/local/bin/trivy /usr/local/bin/trivy
RUN trivy filesystem --exit-code 1 --no-progress /

Il est généralement préférable d’exécuter Trivy vers la fin de votre Dockerfile, une fois toutes vos dépendances logicielles installées. Cours rm /usr/local/bin/trivy ensuite pour réduire la taille de votre image finale.

Mode serveur

Trivy peut fonctionner en mode client-serveur. Cela déplace la base de données des vulnérabilités vers le serveur, de sorte que les clients n’ont pas besoin de maintenir leurs propres versions.

Les binaires Trivy sont livrés avec le mode serveur intégré. Cours trivy server pour démarrer une instance de serveur sur votre machine. Le port par défaut est 4594; vous pouvez changer cela en ajoutant --listen localhost:8080 et en spécifiant le port choisi.

Le serveur téléchargera la base de données des vulnérabilités au démarrage. Il vérifiera les mises à jour en arrière-plan et extraira automatiquement les nouvelles versions.

Vous connectez un client Trivy à votre serveur en utilisant trivy client:

trivy client --remote http://localhost:8080 image my-image:latest

Si vous avez besoin d’une authentification, ajoutez un --token flag au serveur et aux commandes client. Le serveur n’acceptera de nouveaux clients que s’ils présentent le bon jeton.

Résumé

L’utilisation de Trivy pour analyser vos conteneurs Docker vous aide à trouver les vulnérabilités avant qu’elles ne deviennent un problème en production. Vous pouvez avoir plus confiance en vos conteneurs en vérifiant régulièrement les packages de système d’exploitation obsolètes et les dépendances du langage de programmation.

Trivy acquiert ses listes de vulnérabilités à partir de plusieurs sources différentes. Certaines de ces sources spécifient uniquement une utilisation non commerciale, vous devez donc vérifier que votre projet est conforme avant d’ajouter Trivy à vos builds.

★★★★★