
Terrier est un outil d'analyse d'images et de conteneurs qui peut être utilisé pour scanner des images et des conteneurs afin d'identifier et de vérifier la présence de fichiers spécifiques en fonction de leurs hachages.
Terrier est un outil d'analyse d'images et de conteneurs qui peut être utilisé pour scanner des images OCI et des conteneurs afin d'identifier et de vérifier la présence de fichiers spécifiques en fonction de leurs empreintes. Une description détaillée de Terrier est disponible sur le blog d'Heroku, à l'adresse https://blog.heroku.com/terrier-open-source-identifying-analyzing-containers.
Pour les instructions d'installation à partir des binaires, veuillez consulter la page des versions.
$ go get github.com/heroku/terrier
Via Go
$ go build
ou
$ make all
$ ./terrier -h
Utilisation de ./terrier:
-cfg string
Charger la configuration depuis le fichier yaml fourni (par défaut "cfg.yml")
Une archive TAR OCI de l'image à analyser est requise ; elle est fournie à Terrier via la valeur "Image" dans le fichier cfg.yml.
La commande Docker suivante peut être utilisée pour convertir une image Docker en archive TAR pouvant être analysée par Terrier.
# docker save id_image -o image.tar
$ ./terrier
[+] Chargement de la configuration : cfg.yml
[+] Analyse de l'image
[+] Source de l'image Docker : image.tar
[*] Inspection de la couche : 05c3c2c60920f68b506d3c66e0f6148b81a8b0831388c2d61be5ef02190bcd1f
[!] Tous les composants ont été identifiés et vérifiés : (493/493)
Terrier analyse du YAML ; voici un exemple de configuration.
# CECI EST UN EXEMPLE DE CONFIGURATION, À MODIFIER SELON VOS BESOINS
mode: image
image: image.tar
# mode: container
# path: merged
# verbose: true
# veryverbose: true
files:
- name: '/usr/bin/curl'
hashes:
- hash: '2353cbb7b47d0782ba8cdd9c7438b053c982eaaea6fbef8620c31a58d1e276e8'
- hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aaa'
- hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96'
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
- name: '/usr/bin/go'
hashes:
- hash: '2353cbb7b47d0782ba8cdd9c7438b053c982eaaea6fbef8620c31a58d1e276e8'
# DÉCOMMENTER POUR ANALYSER DES EMPREINTES
# hashes:
# - hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
# - hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aa'
# - hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aa'
Terrier est un outil en ligne de commande qui vous permet de :
Terrier peut être utilisé pour vérifier si une image OCI spécifique utilise un binaire particulier, ce qui est utile dans un scénario de vérification de la chaîne d'approvisionnement. Par exemple, nous pouvons vouloir vérifier qu'une image Docker spécifique utilise une ou plusieurs versions spécifiques de cURL. Dans ce cas, Terrier reçoit les empreintes SHA256 des binaires de confiance.
Un exemple de fichier YAML pour ce scénario pourrait ressembler à ceci :
mode: image
# verbose: true
# veryverbose: true
image: golang1131.tar
files:
- name: '/usr/local/bin/analysis.sh'
hashes:
- hash: '9adc0bf7362bb66b98005aebec36691a62c80d54755e361788c776367d11b105'
- name: '/usr/bin/curl'
hashes:
- hash: '23afbfab4f35ac90d9841a6e05f0d1487b6e0c3a914ea8dab3676c6dde612495'
- name: '/usr/local/bin/staticcheck'
hashes:
- hash: '73f89162bacda8dd2354021dc56dc2f3dba136e873e372312843cd895dde24a2'
Terrier peut être utilisé pour vérifier la présence d'un fichier ou de plusieurs fichiers particuliers dans une image OCI en fonction d'un ensemble d'empreintes fournies. Cela peut être utile pour vérifier si une image OCI contient un fichier malveillant ou un fichier qui doit être identifié.
Un exemple de fichier YAML pour ce scénario pourrait ressembler à ceci :
mode: image
# verbose: true
# veryverbose: true
image: alpinetest.tar
hashes:
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'
- hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2'
- hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41'
- hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96'
Terrier peut être utilisé pour vérifier les composants de conteneurs pendant l'exécution en analysant le contenu de /var/lib/docker/overlay2/.../merged. Un exemple de fichier YAML pour ce scénario pourrait ressembler à ceci :
mode: container
verbose: true
# veryverbose: true
# image: latestgo13.tar
path: merged
files:
- name: '/usr/local/bin/analysis.sh'
hashes:
- hash: '9adc0bf7362bb66b98005aebec36691a62c80d54755e361788c776367d11b105'
- name: '/usr/local/go/bin/go'
hashes:
- hash: '23afbfab4f35ac90d9841a6e05f0d1487b6e0c3a914ea8dab3676c6dde612495'
- name: '/usr/local/bin/staticcheck'
hashes:
- hash: '73f89162bacda8dd2354021dc56dc2f3dba136e873e372312843cd895dde24a2'
- name: '/usr/local/bin/gosec'
hashes:
- hash: 'e7cb8304e032ccde8e342a7f85ba0ba5cb0b8383a09a77ca282793ad7e9f8c1f'
- name: '/usr/local/bin/errcheck'
hashes:
- hash: '41f725d7a872cad4ce1f403938937822572e0a38a51e8a1b29707f5884a2f0d7'
- name: '/var/lib/dpkg/info/apt.postrm'
hashes:
- hash: '6a8f9af3abcfb8c6e35887d11d41a83782b50f5766d42bd1e32a38781cba0b1c'
Terrier est un outil en ligne de commande et utilise le YAML. Un exemple de configuration YAML :
mode: image
# verbose: true
# veryverbose: true
image: alpinetest.tar
files:
- name: '/usr/local/go/bin/go'
hashes:
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521f'
- hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aaa'
- hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aaa'
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
- name: '/usr/bin/delpart'
hashes:
- hash: '9a43cb726fef31f272333b236ff1fde4beab363af54d0bc99c304450065d9c96aaa'
- name: '/usr/bin/stdbuf'
hashes:
- hash: '8b7c559b8cccca0d30d01bc4b5dc944766208a53d18a03aa8afe97252207521faa'
- hash: '22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2aa'
- hash: '60a2c86db4523e5d3eb41a247b4e7042a21d5c9d483d59053159d9ed50c8aa41aa'