Trivy – Un scanner de vulnérabilité simple et rapide

Les tests de sécurités sont une étape indispensable dans le cycle de vie de votre application et sont souvent exécutés par une cellule spécialisée dans une entreprise. Si vous êtes dans l’écosystème JAVA vous avez entendu parler de la faille critique touchant log4j CVE-2021-44228 qui a monopolisé les CISO et autre consultants sécurité des entreprises. La communauté InfoSec a documenté la faille et l’équipe Log4J l’a patché. Cependant, comment éviter que les futures constructions soient vulnérables sur ce point ? Ces tests sont réalisés le plus souvent en bout de chaine une fois l’ensemble des tests fonctionnels passés. Le DevOps et le DevSecOps poussent à lancer les tests de sécurités au plus tôt (Shift Left) afin de détecter et corriger le plus rapidement possible une vulnérabilité. Parmi les solutions existantes, on va se pencher sur Trivy, un scanner simple de vulnérabilités, qui peut vérifier les paquets OS (Alpine/Ubuntu…) et applicatifs (Maven, NPM, Nuget…).

Fonctionnement

La lancement de Trivy est relativement simple. Il suffit simplement d’indiquer le type d’éléments à scanner. Les éléments qui peuvent être scannés sont :

  • Un filesystem (répertoires, fichiers)
  • Une image docker
  • Un repository Git
trivy --quiet fs --exit-code 0 ./

La commande ci-dessus execute Trivy en mode « filesystem » et va scanner le répertoire courant. L’option exit code peut être ajustée pour retourner un code différent de 0 en cas de vulnérabilités détectées.

Pour un scan exécuté sur une application Springboot, voici un exemple de résultat :

résultat scan vulnérabilité
Le résultat d’un scan Trivy

Sur la capture ci-dessus nous observons quatre vulnérabilités dont une critique, notre faille LOG4Shell.

Trivy utilise une base de connaissance qu’il télécharge au début du scan pour alimenter le rapport de sortie. Si vous êtes en environnement d’entreprise sans accès à Github, il est possible d’utiliser Trivy en mode « Air Gap » en téléchargeant la base de vulnérabilité séparément et en lui fournissant lors du scan.

Adapté à la démarche DevSecOps

Trivy est un des outils qui vous sera utile dans votre démarche DevSecOps. La détection et la correction de vulnérabilité pourra être faite au plus tôt afin d’éviter les mauvaises surprises juste avant la mise en production. Il s’agit d’un outil qui pourra bien compléter les analyses statiques (SAST comme Checkmarx) et vous fera gagner du temps.

De plus, l’intégration dans un pipeline est relativement simple. Trivy est disponible sous forme d’image Docker, permettant son utilisation comme un agent.

stage('Security Scan JAR') {
    options {
        skipDefaultCheckout()
    }
    agent {
        docker {
            image 'aquasec/trivy'
            args '-u root --entrypoint='
            reuseNode true
        }
    }
  steps {
    sh 'trivy --quiet fs --exit-code 0 ./'
  }
}

La gestion des codes de sorties permettent de faire tomber en erreur votre pipeline en cas de détection de vulnérabilité. Vous pouvez également choisir à partir de quelle sévérité (attribut –severity) le build devra tomber en erreur.

Conclusion

Avec l’autonomisation, la responsabilisation des équipes et le mindset DevOps, la sécurité des applications est aussi l’affaire de l’équipe projet. En quelques minutes vous pouvez vous doter d’un outil qui peut vous éviter de grosses galère une fois votre application mise en production. Trivy est opensource, intégré dans des outils existants du marché comme Harbor ce qui démontre son efficacité et sa maturité.

Print Friendly, PDF & Email

2 réponses sur “Trivy – Un scanner de vulnérabilité simple et rapide”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.