Docker – audit d’un container via trivy

Pré-requis

On considérera que le serveur est déjà équipé de docker et de containers en cours de fonctionnement.

Dans notre cas on regardera le docker fourni par Syspass, un gestionnaire de mot de passe avec interface web, donc un outil critique.

Installation

Rien de plus simple, il existe une image présente sur le hub docker: trivy.

docker run aquasec/trivy

L’installation prend quelques minutes.

Scan complet

Première étape: récuperer le nom de l’image à scanner:

docker image ls --all

Mémoriser le nom de l’image à scanner

Seconde étape: lancer le scan.


Si le scan est exécuté dans une fenêtre type Putty, je recommande d’ajouter « | more » pour pouvoir suivre chaque alerte.

docker run aquasec/trivy syspass/syspass:3.1.2 | more

L’application fait sa mise à jour de base au lancement du scan
Résultat, page 1 sur beaucoup trop.
Exemple avec une CVE critique

Maintenant, si l’on souhaite avoir un fichier pour analyse ou sauvegarde de l’audit, la commande trivy ne change pas, seulement il suffit de remplacer le « | more » par :

docker run aquasec/trivy syspass/syspass:3.1.2 > audit_syspass.log

puis de l’ouvrir:

Il est aussi possible d’utiliser des templates en suivant la documentation.

Scan par sévérité

Il est possible de générer un fichier par sévérité.
Les valeurs possibles sont: critical, high, medium et low.

docker run aquasec/trivy --severity CRITICAL syspass/syspass:3.1.2 | more

Scan par type

Il est aussi possible d’effectuer un scan pour rechercher des vulnérabilités soit de l’os soit des librairies.

Dans le cas de l’os:

docker run aquasec/trivy --vuln-type os syspass/syspass:3.1.2 | more

Dans le cas des libraries:

docker run aquasec/trivy --vuln-type library syspass/syspass:3.1.2 | more

Client-Serveur

Trivy est capable de fonctionner en mode client-serveur.

Serveur

Le serveur récupère les bases de données d’alertes, ainsi les client n’aurons pas télécharger ces bases et les flux vers internet n’ont pas à être ouvert.

docker run aquasec/trivy server --listen 192.168.1.52:8080

Pour un accès extérieur, renseigner l’IP.

Client

docker run aquasec/trivy server --remote https://192.168.1.52:8080 syspass/syspass:3.1.2

Supervision

En utilisant l’export vers des fichiers log ou json ainsi que crontab, il devient donc possible de superviser les risques que vous encourez avec Docker.

docker run aquasec/trivy image -f json -o /var/log/scan_syspass.json syspass/syspass:3.1.2

Conclusion

Sans renier les avantages de docker (tels qu’obtenir rapidement des applications opérationnelles, simplifier les montées de versions), il convient tout de même de ne pas le croire 100 % sécurisé.

Même si patcher le serveur hôte est, normalement, acquis pour les administrateurs, il reste encore à faire comprendre qu’il doit en être de même pour les images

Ce qui signifie:

  • lors d’une mise en production il faut préparer un processus pour l’audit des images docker,
  • prendre en compte la maintenance de ces images lors des analyses de risques,
  • ne pas oublier vos images docker lors des alertes de sécurités.

En savoir plus:

Guide ANSSI:
https://www.ssi.gouv.fr/publication/recommandations-de-securite-relatives-au-deploiement-de-conteneurs-docker

Trivy Adopted by Leading Cloud Native Platforms:
https://www.aquasec.com/news/trivy-vulnerability-scanner-aqua-security-adopted-by-leading-cloud-native-platforms/