Comment trouver des vulnérabilités dans les conteneurs et les fichiers avec Grype - CloudSavvy IT
Agence web » Actualités du digital » Comment trouver des vulnérabilités dans les conteneurs et les fichiers avec Grype

Comment trouver des vulnérabilités dans les conteneurs et les fichiers avec Grype

Grype est un scanner de vulnérabilité open source qui détecte les faiblesses dans les images de conteneurs et les répertoires de système de fichiers. Grype est développé par Anchore mais fonctionne comme un binaire autonome qui est plus facile à maîtriser que le moteur Anchore.

Des vulnérabilités connues pénètrent dans votre logiciel via des packages de système d’exploitation obsolètes, des dépendances de langage de programmation compromises et des images de base non sécurisées. L’analyse active de vos artefacts vous tient informé des problèmes avant que des acteurs malveillants ne les trouvent. Voici comment utiliser Grype pour trouver des problèmes dans votre code et vos conteneurs.

Installation de Grype

Grype est distribué sous forme de binaire précompilé dans deb, rpm, source Linux et formats Mac. Vous pouvez récupérer la dernière version de GitHub et l’installer avec le gestionnaire de packages de votre système ou en copiant le binaire dans un emplacement de votre chemin. Vous pouvez également utiliser le script d’installation pour automatiser le processus :

curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin

Vérifiez le fonctionnement de votre binaire en exécutant le grype commander. La documentation sur les commandes disponibles sera affichée.

Analyses de base

Dans sa forme la plus simple, Grype prend un seul argument qui spécifie l’image du conteneur ou le chemin du système de fichiers à analyser. Pour numériser une image, fournissez une balise de registre valide. Grype utilisera les informations d’identification Docker disponibles pour extraire les images de Docker Hub et des registres privés.

grype alpine:latest

Vous pouvez également numériser une archive d’images qui a été exportée depuis Docker :

grype saved-image.tar

Grype téléchargera sa base de données de vulnérabilités la première fois qu’il sera exécuté. Cela pèse actuellement environ 90 Mo. Une fois la base de données disponible, Grype extraira l’image Docker, cataloguera le logiciel qu’elle contient et analysera les vulnérabilités connues présentes dans la base de données.

Capture d'écran d'un scan de conteneur Grype

Les résultats sont affichés dans un tableau au sein de votre terminal. Chaque vulnérabilité inclut son ID CVE, le nom du package affecté et son niveau de gravité. Lorsque le problème a été corrigé dans une version ultérieure, vous verrez le numéro de version de cette mise à jour dans le FIXED-IN colonne. Cela vous aide à déterminer si une vulnérabilité peut être facilement corrigée avec une simple mise à jour du gestionnaire de packages.

Grype peut fonctionner avec des packages pour toutes les distributions Linux les plus populaires. Il prend également en charge les packages Ruby Gems, NPM et Yarn, les dépendances Python Eggs, Wheels et Poetry et les modules Java aux formats JAR, WAR, EAR, JPI et HPI.

Analyse des systèmes de fichiers

Grype peut analyser les chemins du système de fichiers sur votre machine. Cela vous permet de découvrir des vulnérabilités dans les référentiels de code source avant de créer une image. Pour utiliser cette fonction, spécifiez un chemin de répertoire avec le dir: schème:

grype dir:/example-dir

Grype recherchera les fichiers compatibles imbriqués sous la racine du répertoire donné. Chaque fichier trouvé sera indexé et analysé pour détecter les vulnérabilités.

Capture d'écran d'une analyse du système de fichiers Grype

Les analyses de système de fichiers présentent les mêmes types de vulnérabilité que les analyses d’images de conteneur. L’analyse peut prendre quelques minutes si vous travaillez avec une grande arborescence de répertoires.

Filtrage des vulnérabilités

Deux indicateurs de filtrage sont pris en charge pour limiter le rapport aux seules vulnérabilités ou options de résolution qui vous intéressent :

  • --only-fixed – Afficher uniquement les vulnérabilités qui ont été corrigées dans une version ultérieure du package concerné.
  • --fail-on high – Quitter immédiatement avec un code d’erreur lorsqu’un high– une vulnérabilité de niveau est trouvée. Vous pouvez remplacer n’importe quel niveau d’erreur pris en charge (critique, élevé, moyen ou faible) au lieu de high.

Ignorer les vulnérabilités

Les vulnérabilités peuvent être ignorées pour masquer les faux positifs ou les problèmes que vous avez décidé de ne pas résoudre, peut-être parce qu’ils ne sont pas pertinents pour votre utilisation du package.

Pour ignorer une vulnérabilité, vous devez créer un fichier de configuration Grype personnalisé au format YAML. Ajouter le CVE de la vulnérabilité sous le niveau supérieur ignore domaine:

ignore:
  - vulnerability: CVE-2021-12345

D’autres champs sont également pris en charge, comme cette variante pour ignorer tous les problèmes liés aux packages NPM :

ignore:
  - package:
      type: npm

Enregistrez votre fichier de configuration dans .grype.yaml ou .grype/config.yaml dans votre répertoire de travail. Il sera utilisé automatiquement la prochaine fois que vous exécuterez une analyse Grype. Le fichier de configuration globale ~/.grype.yaml est également pris en charge. Le fichier dans votre répertoire de travail sera fusionné avec le fichier global au moment de l’exécution.

Les vulnérabilités n’affecteront pas le code de sortie de Grype si elles sont ignorées. Le rapport JSON les déplacera vers un autre ignoredMatches champ tandis que les rapports de table terminale les excluent complètement. Si vous ignorez une vulnérabilité, n’oubliez pas de documenter pourquoi elle a été acceptée afin que chaque contributeur comprenne le risque.

Utilisation des SBOM

Grype peut fonctionner avec les SBOM générés par Syft, un autre des projets d’Anchore. Syft indexe vos images de conteneur pour produire une liste des dépendances qu’elles contiennent.

Utilisez Syft pour créer un SBOM pour votre image au format JSON :

syft alpine:latest -o json > alpine-sbom.json

Exécutez ensuite une analyse Grype à l’aide du SBOM :

grype sbom:/alpine-sbom.json

Grype inspectera l’image référencée pour de nouvelles vulnérabilités résultant de sa nomenclature. Continuez à utiliser Grype avec votre SBOM pour surveiller les problèmes émergents dans les dépendances d’images que vous avez déjà audités et indexés.

Personnalisation de la sortie Grype

Grype fournit quatre formateurs de sortie différents que vous pouvez basculer entre en utilisant le -o Indicateur CLI :

  • table – Le tableau lisible par défaut pour la consommation dans le terminal.
  • json – Un rapport au format JSON contenant des informations beaucoup plus complètes sur chaque vulnérabilité, ainsi que des détails sur la base de données Grype utilisée pour l’analyse. Les fichiers JSON sont adaptés à l’archivage et à la comparaison à long terme, ou à utiliser comme artefacts de build CI.
  • cyclonedx – Un rapport compatible CycloneDX au format XML qui est prêt à alimenter d’autres outils prenant en charge les SBOM et les listes de vulnérabilités.
  • template – Ce formateur avancé vous permet de produire vos propres rapports dans des formats arbitraires.

le template le formateur accepte un modèle Go qui sera utilisé pour restituer la sortie du rapport. Pour utiliser ce formateur, ne le spécifiez pas par son nom – à la place, transmettez le chemin d’accès à un fichier contenant votre modèle Go :

grype alpine:latest -o output-template.tmpl

Le modèle doit utiliser la syntaxe de modèle Go pour référencer les variables fournies par Grype. Vous pouvez créer tout type de format de fichier dont vous avez besoin, comme une page HTML, un fichier Markdown ou une structure JSON personnalisée. Les documents Grype incluent un exemple de production d’un fichier CSV à partir des variables disponibles.

Base de données des vulnérabilités

La base de données des vulnérabilités stocke les détails de toutes les vulnérabilités connues de Grype. Une fois téléchargée, la version mise en cache sera réutilisée jusqu’à ce qu’une mise à jour soit disponible. Les interactions manuelles avec la base de données ne sont généralement pas nécessaires.

Dans certaines situations, vous devrez peut-être forcer le téléchargement de la base de données. Cela peut être dû au fait que vous configurez un serveur à vide avant d’exécuter une analyse. Utilisez le grype db check et grype db update commandes pour rechercher et télécharger une version plus récente de la base de données.

Une fois la base de données disponible, les analyses fonctionneront pendant que votre système est hors ligne. Vous pouvez désactiver les vérifications automatiques de la mise à jour de la base de données de Grype en définissant le GRYPE_DB_AUTO_UPDATE variable d’environnement à false dans ta coquille.

Résumé

Grype vous alerte des vulnérabilités à l’intérieur de vos conteneurs et sur votre système de fichiers. En tant que binaire CLI autonome, il est plus facile de démarrer qu’une installation complète d’Anchore.

Si vous vous demandez lequel choisir, la valeur d’Anchore réside dans son extensibilité et ses options de configuration avancées. Avec Anchore Engine, vous pouvez définir vos propres ensembles de règles en fonction des portes, des déclencheurs et des actions. Ceux-ci vous permettent d’adapter précisément vos analyses à votre environnement spécifique. Grype offre une expérience plus rationalisée lorsque vous souhaitez simplement une liste des vulnérabilités connues dans votre image.

Quel que soit votre choix, l’adoption d’une forme d’analyse active des vulnérabilités vous tiendra informé des faiblesses de votre chaîne d’approvisionnement logicielle. Pour une approche entièrement intégrée, utilisez Grype dans le cadre de votre pipeline CI afin d’être alerté des nouvelles vulnérabilités au fur et à mesure que le code est validé.

★★★★★