Sécurité

Grype

Scanner de vulnérabilités Anchore pour images OCI et systèmes de fichiers. Intégration native avec Syft SBOM. Compatible SARIF, JSON. CLI simple et rapide.

Grype est un scanner de vulnérabilités open source développé par Anchore, conçu pour analyser les images OCI, les systèmes de fichiers et les SBOM. Il détecte les CVE dans les packages OS (Alpine, Debian, RHEL, Ubuntu…) et les dépendances applicatives (Go, Java, Node, Python, Ruby…). Grype est le scanner natif de l'écosystème Anchore et s'intègre directement avec Syft (générateur de SBOM du même éditeur) pour une analyse complète de la supply chain.

Différence avec Trivy : Grype se concentre sur la détection de CVE dans les artefacts (images, SBOM), sans les fonctions de scan IaC ou secrets qu'offre Trivy. Il est souvent utilisé conjointement avec Syft dans les pipelines Anchore.


Informations essentielles

Origine : Anchore Inc.  ·  Licence : Apache 2.0  ·  Architectures : x86_64, ARM64

Liens : Documentation  ·  GitHub  ·  Releases

Support : Projet actif maintenu par Anchore. Base de données de vulnérabilités mise à jour en continu.

Stack par défaut

ComposantValeur
Sources CVENVD, GitHub Advisory, distro advisories, OSV
Formats d'entréeImage OCI, tarball, répertoire, SBOM Syft/SPDX/CycloneDX
Formats de sortieTable, JSON, SARIF, CycloneDX, template custom
Intégration SyftInput SBOM natif (grype sbom:syft.json)
Base de donnéesCache local (~100 Mo), mise à jour automatique

Prérequis

RessourceValeur
OSLinux, macOS, Windows
Accès réseauPour télécharger la DB de vulnérabilités
Docker (optionnel)Pour scanner des images locales

Installation

# Via script officiel (Linux/macOS)
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin

# Homebrew (macOS)
brew install anchore/grype/grype

# Vérifier
grype version

Vérification de l'installation

# 1. Version et état de la DB
grype version
# Application Version: x.y.z
# DB Schema: X  DB Built: <date>

# 2. Mise à jour de la base de données
grype db update
# Updated vulnerability database (schema 6)

# 3. Premier scan de test
grype alpine:latest
# Doit lister les CVE ou afficher "No vulnerabilities found"

# 4. Test avec sévérité filtrée
grype --fail-on critical alpine:latest
# exit 0 si aucune CVE CRITICAL, exit 1 sinon

# 5. Test du SBOM en entrée (avec Syft)
syft alpine:latest -o syft-json > sbom.json
grype sbom:./sbom.json
# Mêmes résultats qu'un scan direct de l'image

Pièges courants à l'installation

SymptômeCauseCorrection
DB update failedAccès à anchore.io bloquéUtiliser GRYPE_DB_UPDATE_URL pour un miroir
no SBOM providers matchedEntrée non reconnueVérifier la syntaxe (image:, sbom:, dir:)
Résultats différents de TrivySources CVE et DB différentesNormal - les deux outils ont des bases différentes
Scan lent la première foisTéléchargement de la DB (~100 Mo)Normal - mise en cache ensuite

Utilisation

Scanner une image

# Scan d'une image (pull automatique)
grype nginx:latest

# Seulement HIGH et CRITICAL
grype --severity-cutoff high nginx:latest

# Bloquer le pipeline en cas de CRITICAL
grype --fail-on critical nginx:latest

# Sortie JSON
grype -o json nginx:latest > report.json

# Sortie SARIF (pour GitHub Code Scanning)
grype -o sarif nginx:latest > grype.sarif

Scanner depuis un SBOM (Syft)

# Générer un SBOM avec Syft puis le scanner
syft my-app:latest -o syft-json > sbom.json
grype sbom:./sbom.json

# Avantage : une seule génération de SBOM, plusieurs scanners possibles

Scanner un répertoire ou tarball

# Répertoire local
grype dir:./my-app/

# Image exportée en tarball
docker save my-app:latest -o my-app.tar
grype docker-archive:./my-app.tar

Fichier d'ignorance (.grype.yaml)

# .grype.yaml - configuration du projet
ignore:
  # Ignorer cette CVE spécifique dans ce package
  - vulnerability: CVE-2023-12345
    package:
      name: libssl
      version: 1.1.1k
  # Ignorer toutes les CVE dans ce package
  - package:
      name: openssl
      type: deb

output: json
fail-on-severity: high

Intégration CI/CD

GitHub Actions

- name: Scan image avec Grype
  uses: anchore/scan-action@v3
  with:
    image: ${{ env.IMAGE }}
    fail-build: true
    severity-cutoff: high
    output-format: sarif

- name: Upload résultats Grype
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: results.sarif

Mise à jour

# Mettre à jour la DB uniquement
grype db update

# Mettre à jour la CLI
curl -sSfL https://raw.githubusercontent.com/anchore/grype/main/install.sh | sh -s -- -b /usr/local/bin

# Vérifier l'état de la DB
grype db status

Troubleshooting

# Voir la version et état de la DB
grype version
grype db status

# Forcer la mise à jour de la DB
grype db update

# Mode verbose
grype -vv nginx:latest 2>&1 | head -50

# Lister les CVE dans une package précis
grype nginx:latest | grep -i openssl

Commandes utiles

grype <image>                            # Scanner une image
grype sbom:<fichier.json>               # Scanner depuis un SBOM
grype dir:<chemin>                       # Scanner un répertoire
grype --fail-on critical <image>        # Pipeline gate
grype -o json <image>                   # Sortie JSON
grype -o sarif <image>                  # Sortie SARIF
grype db update                          # Mettre à jour la DB CVE
grype db status                          # État de la DB locale

Ressources

Newsletter · 2 000+ abonnés

Reste au courant de ce qui bouge en prod

RudeOps veille devops hebdo, droit au but.

Gratuit · Sans spam · Désinscription en un clic