Work on tuto 2

This commit is contained in:
nemunaire 2022-09-20 06:02:53 +02:00
commit bc179806db
19 changed files with 545 additions and 145 deletions

View file

@ -20,8 +20,8 @@ Il est donc primordial de ne pas laisser ses conteneurs à l'abandon une fois
leur image créée et envoyée en production. Nos conteneurs doivent être
regénérés sitôt que leur image de base est mise à jour (une mise à jour d'une
image telle que Debian, Ubuntu ou Redhat n'apparaît que pour cela) ou bien
lorsqu'un des programmes ou l'une des bibliothèques que l'on a installées
ensuite est mise à jour.
lorsqu'un des programmes ou l'une des bibliothèques que l'on a installées est
mise à jour.
Convaincu ? Cela sonne encore comme des bonnes pratiques difficiles à mettre en
œuvre, pouvant mettre en péril tout un système d'information. Pour s'en
@ -38,13 +38,13 @@ propager à cause de l'usage d'une image parente pas à jour.
[^dockerhubvulnerability]: <https://www.enck.org/pubs/shu-codaspy17.pdf>
Une mesure efficace consiste à reconstruire régulièrement (et surtout
automatiquement) les images que l'on publie sur un registre public, sans
oublier de mettre à jour l'image de base.
automatiquement) les images que l'on publie sur un registre, sans oublier de
mettre à jour l'image de base.
D'ailleurs, avez-vous vérifié qu'une mise à jour de l'image `nemunaire/youp0m`
n'était pas disponible depuis que vous avez commencé à l'utiliser ? Docker ne
vérifie jamais si une mise à jour des images que vous avez précédemment
téléchargées. Pensez donc régulièrement à appeler :
D'ailleurs, avez-vous vérifié qu'une mise à jour de l'image
`registry.nemunai.re/youp0m` n'était pas disponible depuis que vous avez
commencé à l'utiliser ? Docker ne vérifie jamais si une mise à jour des images
que vous avez précédemment téléchargées. Pensez donc régulièrement à appeler :
<div lang="en-US">
```
@ -67,7 +67,7 @@ intermédiaire.
::::: {.warning}
Par cette méthode, vous êtes limité à 10 scans par mois.
Par cette méthode, vous êtes limité à 10 scans par mois avec un compte gratuit.
:::::
@ -102,17 +102,17 @@ commencer notre analyse :
<div lang="en-US">
```
42sh$ docker scan nemunaire/fic-admin
42sh$ docker scan nemunaire/youp0m
Testing nemunaire/fic-admin...
Testing nemunaire/youp0m...
Package manager: apk
Project name: docker-image|nemunaire/fic-admin
Docker image: nemunaire/fic-admin
Project name: docker-image|nemunaire/youp0m
Docker image: nemunaire/youp0m
Platform: linux/amd64
Base image: alpine:3.14.2
Base image: alpine:3.16.2
✓ Tested 16 dependencies for known vulnerabilities, no vulnerable paths found.
✓ Tested 15 dependencies for known vulnerabilities, no vulnerable paths found.
According to our scan, you are currently using the most secure version of
the selected base image
@ -142,9 +142,9 @@ Package manager: deb
Project name: docker-image|mysql
Docker image: mysql
Platform: linux/amd64
Base image: mysql:8.0.26
Base image: mysql:8.0.30
Tested 135 dependencies for known vulnerabilities, found 79 vulnerabilities
Tested 119 dependencies for known vulnerabilities, found 24 vulnerabilities
According to our scan, you are currently using the most secure version of
the selected base image
@ -152,8 +152,8 @@ the selected base image
</div>
Ce dernier exemple est sans appel : `mysql` est une image officielle, et sa
dernière version à l'écriture de ses lignes contient pas moins de 79
vulnérabilités dont 11 *high*.
dernière version à l'écriture de ses lignes contient pas moins de 24
vulnérabilités dont 9 *high* (pourtant corrigées dans des versions suivantes).
## Trivy
@ -176,16 +176,16 @@ Tentons à nouveau d'analyser l'image `mysql` :
<div lang="en-US">
```
42sh$ docker run --rm aquasec/trivy mysql
2021-09-22T10:27:46.509Z INFO Need to update DB
2021-09-22T10:27:46.509Z INFO Downloading DB... 100.00% 14.41 MiB p/s 2s
2021-09-22T10:27:56.556Z INFO Detected OS: debian
2021-09-22T10:27:56.556Z INFO Detecting Debian vulnerabilities...
2021-09-22T10:27:56.579Z INFO Number of language-specific files: 0
42sh$ docker run --rm aquasec/trivy image mysql
INFO Need to update DB
INFO Downloading DB... 100.00% 14.41 MiB p/s 2s
INFO Detected OS: oracle
INFO Detecting Oracle vulnerabilities...
INFO Number of language-specific files: 0
mysql (debian 10.10)
====================
Total: 158 (UNKNOWN: 5, LOW: 19, MEDIUM: 64, HIGH: 61, CRITICAL: 9)
mysql (oracle 8.6)
==================
Total: 5 (UNKNOWN: 0, LOW: 0, MEDIUM: 4, HIGH: 1, CRITICAL: 0)
```
</div>
@ -193,24 +193,24 @@ Les résultats sont un peu différents qu'avec `docker scan`, mais on constate
que l'image `mysql` contient vraiment de nombreuses vulnérabilités. Même si
elles ne sont heureusement pas forcément exploitables directement.
Voyons maintenant s'il y a des différentes avec l'image `nemunaire/fic-admin` :
Voyons maintenant s'il y a des différentes avec l'image `nemunaire/youp0m` :
<div lang="en-US">
```
42sh$ docker run --rm aquasec/trivy nemunaire/fic-admin
2021-09-22T10:29:48.091Z INFO Need to update DB
2021-09-22T10:29:48.091Z INFO Downloading DB... 100.00% 15.98 MiB p/s 1s
2021-09-22T10:29:51.902Z INFO Detected OS: alpine
2021-09-22T10:29:51.902Z INFO Detecting Alpine vulnerabilities...
2021-09-22T10:29:51.903Z INFO Number of language-specific files: 1
2021-09-22T10:29:51.903Z INFO Detecting gobinary vulnerabilities...
42sh$ docker run --rm aquasec/trivy image nemunaire/youp0m
INFO Need to update DB
INFO Downloading DB... 100.00% 15.98 MiB p/s 1s
INFO Detected OS: alpine
INFO Detecting Alpine vulnerabilities...
INFO Number of language-specific files: 1
INFO Detecting gobinary vulnerabilities...
nemunaire/fic-admin (alpine 3.14.2)
nemunaire/youp0m (alpine 3.16.2)
===================================
Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)
srv/admin (gobinary)
srv/youp0m (gobinary)
====================
Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)
```
@ -218,7 +218,7 @@ Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)
Nous pouvons remarque que Trivy, en plus de faire l'analyse statique des
vulnérabilités de l'image, a aussi fait une analyse des dépendances du binaire
`/srv/admin`.
`/srv/youp0m`.
Trivy est en effet capable de rechercher des vulnérabilités par rapport aux
dépendances connues de certains langages : Python, PHP, Node.js, .NET, Java,