Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities

Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities
Hey Habr!

An der moderner Realitéit, wéinst der wuessender Roll vun der Containeriséierung an Entwécklungsprozesser, ass d'Fro fir d'Sécherheet vu verschiddene Stadien an Entitéite verbonne mat Container ze garantéieren net dat mannst wichtegt Thema. Manuell Kontrollen ausféieren ass Zäitopwänneg, also wier et eng gutt Iddi fir op d'mannst déi initial Schrëtt fir dëse Prozess ze automatiséieren.

An dësem Artikel wäert ech fäerdeg Scripte deelen fir e puer Docker Sécherheets Utilities ëmzesetzen an Instruktioune wéi een e klengen Demo Stand installéiert fir dëse Prozess ze testen. Dir kënnt d'Material benotze fir ze experimentéieren mat wéi Dir de Prozess organiséiert fir d'Sécherheet vun Dockerfile Biller an Instruktiounen ze testen. Et ass kloer datt jidderee seng Entwécklung an Implementéierungsinfrastruktur anescht ass, also hei ënnen wäert ech e puer méiglech Optiounen ubidden.

Sécherheet Check Utilities

Et ginn eng grouss Zuel vu verschiddenen Helper Uwendungen a Skripte déi Kontrollen iwwer verschidden Aspekter vun der Docker Infrastruktur ausféieren. E puer vun hinnen si schonn am virege Artikel beschriwwe ginn (https://habr.com/ru/company/swordfish_security/blog/518758/#docker-security), an an dësem Material géif ech gär op dräi vun hinnen konzentréieren, déi de gréissten Deel vun de Sécherheetsfuerderunge fir Docker-Biller déi während dem Entwécklungsprozess gebaut sinn. Zousätzlech wäert ech och e Beispill weisen wéi dës dräi Utilities an eng Pipeline verbonne kënne ginn fir Sécherheetskontrollen auszeféieren.

Hadolint
https://github.com/hadolint/hadolint

E zimlech einfache Konsol-Utility dat hëlleft fir d'éischt d'Korrektheet an d'Sécherheet vun den Dockerfile-Instruktiounen ze bewäerten (zum Beispill nëmmen erlaabt Bildregistréiere benotzen oder Sudo benotzen).

Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities

Dockle
https://github.com/goodwithtech/dockle

E Konsol-Utility dat op engem Bild funktionnéiert (oder op engem gespäichert Bild Tarball) deen d'Korrektheet an d'Sécherheet vun engem bestëmmte Bild als solch iwwerpréift andeems se seng Schichten a Konfiguratioun analyséiert - wat Benotzer erstallt ginn, wéi eng Instruktioune sinn am Gebrauch, wéi eng Bänn sinn montéiert , d'Präsenz vun engem eidel Passwuert, etc. e. Iwwerdeems d'Zuel vun de Schecken net ganz grouss ass a baséiert op verschidden eegene Kontrollen a Recommandatiounen CIS (Center for Internet Security) Benchmark fir Docker.
Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities

Trivy
https://github.com/aquasecurity/trivy

Dëst Utility zielt fir zwou Zorte vu Schwachstelle ze fannen - Probleemer mat OS Builds (ënnerstëtzt vun Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu) a Probleemer mat Ofhängegkeeten (Gemfile.lock, Pipfile.lock, composer.lock, Package -lock.json , yarn.lock, cargo.lock). Trivy kann souwuel e Bild am Repository wéi och e lokale Bild scannen, a kann och scannen op Basis vun der transferéierter .tar Datei mam Docker Bild.

Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities

Optiounen fir d'Ëmsetzung vun Utilities

Fir déi beschriwwen Uwendungen an isoléierte Konditiounen auszeprobéieren, ginn ech Instruktioune fir all Utilities als Deel vun engem vereinfachte Prozess z'installéieren.

D'Haaptidee ass ze weisen wéi Dir automatesch Inhaltsverifizéierung vun Dockerfiles an Docker Biller implementéiere kënnt, déi während der Entwécklung erstallt ginn.

D'Verifizéierung selwer besteet aus de folgende Schrëtt:

  1. Iwwerpréift d'Korrektheet an d'Sécherheet vun Dockerfile Instruktioune mat engem Linter Utility Hadolint
  2. D'Korrektheet an d'Sécherheet vun de finalen a mëttlere Biller iwwerpréiwen - en Utility Dockle
  3. Iwwerpréift fir allgemeng bekannte Schwachstelle (CVE) am Basisbild an eng Zuel vun Ofhängegkeeten - vum Utility Trivy

Méi spéit am Artikel ginn ech dräi Optiounen fir dës Schrëtt ëmzesetzen:
Déi éischt ass andeems Dir d'CI / CD Pipeline konfiguréiert mat GitLab als Beispill (mat enger Beschreiwung vum Prozess fir eng Testinstanz z'erhéijen).
Déi zweet benotzt e Shell-Skript.
Déi drëtt involvéiert en Docker Bild ze bauen fir Docker Biller ze scannen.
Dir kënnt d'Optioun wielen, déi Iech am Beschten passt, se op Är Infrastruktur iwwerdroen an un Är Besoinen upassen.

All néideg Dateien an zousätzlech Instruktioune sinn och am Repository: https://github.com/Swordfish-Security/docker_cicd

GitLab CI/CD Integratioun

An der éischter Optioun wäerte mir kucken wéi d'Sécherheetschecken mat dem GitLab Repository System als Beispill implementéiert kënne ginn. Hei wäerte mir duerch d'Schrëtt goen a kucken wéi een en Testëmfeld mat GitLab vun Null opstellt, e Scanprozess erstellen an Utilities ausféieren fir en Test Dockerfile an e random Bild ze testen - d'JuiceShop Applikatioun.

GitLab installéieren
1. Installéiert Docker:

sudo apt-get update && sudo apt-get install docker.io

2. Füügt den aktuelle Benotzer an den Docker-Grupp fir datt Dir mat Docker schaffe kënnt ouni sudo ze benotzen:

sudo addgroup <username> docker

3. Fannt Är IP:

ip addr

4. Installéiert a lafen GitLab am Container, ersetzt d'IP Adress am Hostnumm mat Ärem eegenen:

docker run --detach 
--hostname 192.168.1.112 
--publish 443:443 --publish 80:80 
--name gitlab 
--restart always 
--volume /srv/gitlab/config:/etc/gitlab 
--volume /srv/gitlab/logs:/var/log/gitlab 
--volume /srv/gitlab/data:/var/opt/gitlab 
gitlab/gitlab-ce:latest

Mir waarden op GitLab fir all déi néideg Installatiounsprozeduren ofzeschléissen (Dir kënnt de Prozess duerch d'Ausgab vun der Logdatei verfollegen: docker logs -f gitlab).

5. Öffnen Är lokal IP am Browser a kuckt eng Säit déi ubitt fir de Passwuert fir de Root Benotzer z'änneren:
Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities
Setzt en neit Passwuert a gitt op GitLab.

6. Erstellt en neie Projet, zum Beispill cicd-Test an initialiséiert et mat enger Startdatei VIRLIESEN.md:
Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities
7. Elo musse mir de GitLab Runner installéieren: en Agent deen all néideg Operatiounen op Ufro ausféiert.
Luet déi lescht Versioun erof (an dësem Fall, ënner Linux 64-Bit):

sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64

8. Maacht et ausführbar:

sudo chmod +x /usr/local/bin/gitlab-runner

9. Füügt en OS Benotzer fir Runner a fänkt de Service un:

sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

Et soll sou eppes ausgesinn:

local@osboxes:~$ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
Runtime platform arch=amd64 os=linux pid=8438 revision=0e5417a3 version=12.0.1
local@osboxes:~$ sudo gitlab-runner start
Runtime platform arch=amd64 os=linux pid=8518 revision=0e5417a3 version=12.0.1

10. Elo registréiere mir de Runner fir datt en mat eiser GitLab Instanz interagéiere kann.
Fir dëst ze maachen, öffnen d'Säit Settings-CI/CD (http://OUR_ IP_ADDRESS/root/cicd-test/-/settings/ci_cd) an op der Runners Tab fannt Dir d'URL an d'Registrierungstoken:
Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities
11. Registréiert Runner andeems Dir d'URL an d'Registrierungstoken ersetzt:

sudo gitlab-runner register 
--non-interactive 
--url "http://<URL>/" 
--registration-token "<Registration Token>" 
--executor "docker" 
--docker-privileged 
--docker-image alpine:latest 
--description "docker-runner" 
--tag-list "docker,privileged" 
--run-untagged="true" 
--locked="false" 
--access-level="not_protected"

Als Resultat kréie mir e fäerdege schaffende GitLab, an deem mir Instruktioune musse addéieren fir eis Utilities ze starten. An dëser Demo hu mir net d'Schrëtt fir d'Applikatioun ze bauen an ze containeriséieren, awer an engem realen Ëmfeld géifen dës d'Scannenschrëtt virukommen a Biller an eng Dockerfile fir Analyse generéieren.

Pipeline Konfiguratioun

1. Füügt Dateien an de Repository mydockerfile.df (dëst ass eng Test Dockerfile déi mir testen) an d'GitLab CI / CD Prozess Konfiguratiounsdatei .gitlab-cicd.yml, déi Instruktioune fir Scanner oplëscht (notéiert de Punkt am Dateinumm).

D'YAML Konfiguratiounsdatei enthält Instruktioune fir dräi Utilitys ze lafen (Hadolint, Dockle, an Trivy) déi d'gewielt Dockerfile analyséieren an d'Bild an der DOCKERFILE Variabel spezifizéiert. All néideg Dateie kënnen aus dem Repository geholl ginn: https://github.com/Swordfish-Security/docker_cicd/

Extrait aus mydockerfile.df (dëst ass eng abstrakt Datei mat enger Rei vun arbiträren Instruktiounen nëmmen fir d'Operatioun vum Utility ze demonstréieren). Direkte Link op d'Datei: mydockerfile.df

Inhalter vun mydockerfile.df

FROM amd64/node:10.16.0-alpine@sha256:f59303fb3248e5d992586c76cc83e1d3700f641cbcd7c0067bc7ad5bb2e5b489 AS tsbuild
COPY package.json .
COPY yarn.lock .
RUN yarn install
COPY lib lib
COPY tsconfig.json tsconfig.json
COPY tsconfig.app.json tsconfig.app.json
RUN yarn build
FROM amd64/ubuntu:18.04@sha256:eb70667a801686f914408558660da753cde27192cd036148e58258819b927395
LABEL maintainer="Rhys Arkins <[email protected]>"
LABEL name="renovate"
...
COPY php.ini /usr/local/etc/php/php.ini
RUN cp -a /tmp/piik/* /var/www/html/
RUN rm -rf /tmp/piwik
RUN chown -R www-data /var/www/html
ADD piwik-cli-setup /piwik-cli-setup
ADD reset.php /var/www/html/
## ENTRYPOINT ##
ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
USER root

D'YAML Konfiguratioun gesäit esou aus (d'Datei selwer kann aus dem direkten Link hei geholl ginn: .gitlab-ci.yml):

Inhalter vun .gitlab-ci.yml

variables:
    DOCKER_HOST: "tcp://docker:2375/"
    DOCKERFILE: "mydockerfile.df" # name of the Dockerfile to analyse   
    DOCKERIMAGE: "bkimminich/juice-shop" # name of the Docker image to analyse
    # DOCKERIMAGE: "knqyf263/cve-2018-11235" # test Docker image with several CRITICAL CVE
    SHOWSTOPPER_PRIORITY: "CRITICAL" # what level of criticality will fail Trivy job
    TRIVYCACHE: "$CI_PROJECT_DIR/.cache" # where to cache Trivy database of vulnerabilities for faster reuse
    ARTIFACT_FOLDER: "$CI_PROJECT_DIR"
 
services:
    - docker:dind # to be able to build docker images inside the Runner
 
stages:
    - scan
    - report
    - publish
 
HadoLint:
    # Basic lint analysis of Dockerfile instructions
    stage: scan
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/hadolint_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/hadolint/hadolint/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/hadolint/hadolint/releases/download/v${VERSION}/hadolint-Linux-x86_64 && chmod +x hadolint-Linux-x86_64
     
    # NB: hadolint will always exit with 0 exit code
    - ./hadolint-Linux-x86_64 -f json $DOCKERFILE > $ARTIFACT_FOLDER/hadolint_results.json || exit 0
 
    artifacts:
        when: always # return artifacts even after job failure       
        paths:
        - $ARTIFACT_FOLDER/hadolint_results.json
 
Dockle:
    # Analysing best practices about docker image (users permissions, instructions followed when image was built, etc.)
    stage: scan   
    image: docker:git
 
    after_script:
    - cat $ARTIFACT_FOLDER/dockle_results.json
 
    script:
    - export VERSION=$(wget -q -O - https://api.github.com/repos/goodwithtech/dockle/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Linux-64bit.tar.gz && tar zxf dockle_${VERSION}_Linux-64bit.tar.gz
    - ./dockle --exit-code 1 -f json --output $ARTIFACT_FOLDER/dockle_results.json $DOCKERIMAGE   
     
    artifacts:
        when: always # return artifacts even after job failure       
        paths:
        - $ARTIFACT_FOLDER/dockle_results.json
 
Trivy:
    # Analysing docker image and package dependencies against several CVE bases
    stage: scan   
    image: docker:git
 
    script:
    # getting the latest Trivy
    - apk add rpm
    - export VERSION=$(wget -q -O - https://api.github.com/repos/knqyf263/trivy/releases/latest | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/1/')
    - wget https://github.com/knqyf263/trivy/releases/download/v${VERSION}/trivy_${VERSION}_Linux-64bit.tar.gz && tar zxf trivy_${VERSION}_Linux-64bit.tar.gz
     
    # displaying all vulnerabilities w/o failing the build
    - ./trivy -d --cache-dir $TRIVYCACHE -f json -o $ARTIFACT_FOLDER/trivy_results.json --exit-code 0 $DOCKERIMAGE    
    
    # write vulnerabilities info to stdout in human readable format (reading pure json is not fun, eh?). You can remove this if you don't need this.
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 0 $DOCKERIMAGE    
 
    # failing the build if the SHOWSTOPPER priority is found
    - ./trivy -d --cache-dir $TRIVYCACHE --exit-code 1 --severity $SHOWSTOPPER_PRIORITY --quiet $DOCKERIMAGE
         
    artifacts:
        when: always # return artifacts even after job failure
        paths:
        - $ARTIFACT_FOLDER/trivy_results.json
 
    cache:
        paths:
        - .cache
 
Report:
    # combining tools outputs into one HTML
    stage: report
    when: always
    image: python:3.5
     
    script:
    - mkdir json
    - cp $ARTIFACT_FOLDER/*.json ./json/
    - pip install json2html
    - wget https://raw.githubusercontent.com/shad0wrunner/docker_cicd/master/convert_json_results.py
    - python ./convert_json_results.py
     
    artifacts:
        paths:
        - results.html

Wann néideg, kënnt Dir och gespäichert Biller a Form vun engem .tar Archiv scannen (awer, Dir musst d'Inputparameter fir d'Utilities an der YAML Datei änneren)

NB: Trivy erfuerdert installéiert rpm и Go. Soss wäert et Feeler generéieren wann Dir RedHat-baséiert Biller scannt an Updates vun der Schwachstelle Datebank kritt.

2. Nodeems Dir d'Dateien an de Repository bäigefüügt hutt, laut den Instruktiounen an eiser Konfiguratiounsdatei, fänkt GitLab automatesch de Bau- a Scanprozess un. Op der CI / CD → Pipelines Tab kënnt Dir de Fortschrëtt vun den Instruktiounen gesinn.

Als Resultat hu mir véier Aufgaben. Dräi vun hinnen sinn direkt beim Scannen involvéiert, an dee leschte (Rapport) sammelt en einfache Bericht vu verspreeten Dateien mat Scanresultater.
Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities
Par défaut stoppt Trivy seng Ausféierung wann KRITISCH Schwachstelle am Bild oder Ofhängegkeeten fonnt ginn. Zur selwechter Zäit gëtt den Hadolint ëmmer Erfolleg am Ausféierungscode zréck, well seng Ausféierung ëmmer Remarquen huet, wat d'Bau ophalen.

Ofhängeg vun Äre spezifesche Viraussetzungen, kënnt Dir en Ausgangscode konfiguréieren sou datt wann dës Utilities Problemer vun enger gewësser Kritizitéit erkennen, se och de Bauprozess stoppen. An eisem Fall stoppt de Build nëmmen wann Trivy eng Schwachstelle erkennt mat der Kritik, déi mir an der SHOWSTOPPER Variabel uginn hunn .gitlab-ci.yml.
Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities

D'Resultat vun all Utility kann am Logbuch vun all Scannentask gekuckt ginn, direkt an de json Dateien an der Artefakt Sektioun, oder an engem einfachen HTML Bericht (méi doriwwer hei ënnen):
Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities

3. Fir Utility-Rapporten an enger liicht méi mënschlech liesbarer Form ze presentéieren, gëtt e klenge Python-Skript benotzt fir dräi JSON-Dateien an eng HTML-Datei mat enger Tabelle vu Mängel ze konvertéieren.
Dëse Skript gëtt vun enger separater Berichttask gestart, a säi leschte Artefakt ass eng HTML Datei mat engem Bericht. D'Skriptquell ass och am Repository a kann op Är Besoinen, Faarwen, etc.
Methoden a Beispiller vun der Implementatioun vun Docker Sécherheetscheck Utilities

Shell Schrëft

Déi zweet Optioun ass gëeegent fir Fäll wou Dir Docker-Biller ausserhalb vum CI / CD-System kontrolléiere musst oder Dir musst all d'Instruktiounen an enger Form hunn, déi direkt um Host ausgefouert kënne ginn. Dës Optioun ass vun engem fäerdege Shell-Skript ofgedeckt, deen op enger propperer virtueller (oder souguer richteger) Maschinn lafen kann. De Skript féiert déiselwecht Instruktioune wéi de gitlab-runner uewen beschriwwen.

Fir datt de Skript erfollegräich funktionnéiert, muss Docker um System installéiert ginn an den aktuelle Benotzer muss an der Docker-Grupp sinn.

De Skript selwer kann hei fonnt ginn: docker_sec_check.sh

Am Ufank vun der Datei spezifizéieren Variablen wéi ee Bild gescannt soll ginn a wéi eng Schwieregkeet vu Mängel d'Trivy Utility verursaache wäert mat dem spezifizéierte Feelercode.

Wärend der Ausféierung vum Skript ginn all Utilities an de Verzeechnes erofgelueden docker_tools, d'Resultater vun hirer Aarbecht sinn am Verzeechnes docker_tools/json, an den HTML mam Bericht wäert an der Datei sinn Resultater.html.

Beispill Skript Output

~/docker_cicd$ ./docker_sec_check.sh

[+] Setting environment variables
[+] Installing required packages
[+] Preparing necessary directories
[+] Fetching sample Dockerfile
2020-10-20 10:40:00 (45.3 MB/s) - ‘Dockerfile’ saved [8071/8071]
[+] Pulling image to scan
latest: Pulling from bkimminich/juice-shop
[+] Running Hadolint
...
Dockerfile:205 DL3015 Avoid additional packages by specifying `--no-install-recommends`
Dockerfile:248 DL3002 Last USER should not be root
...
[+] Running Dockle
...
WARN    - DKL-DI-0006: Avoid latest tag
        * Avoid 'latest' tag
INFO    - CIS-DI-0005: Enable Content trust for Docker
        * export DOCKER_CONTENT_TRUST=1 before docker pull/build
...
[+] Running Trivy
juice-shop/frontend/package-lock.json
=====================================
Total: 3 (UNKNOWN: 0, LOW: 1, MEDIUM: 0, HIGH: 2, CRITICAL: 0)

+---------------------+------------------+----------+---------+-------------------------+
|       LIBRARY       | VULNERABILITY ID | SEVERITY | VERSION |             TITLE       |
+---------------------+------------------+----------+---------+-------------------------+
| object-path         | CVE-2020-15256   | HIGH     | 0.11.4  | Prototype pollution in  |
|                     |                  |          |         | object-path             |
+---------------------+------------------+          +---------+-------------------------+
| tree-kill           | CVE-2019-15599   |          | 1.2.2   | Code Injection          |
+---------------------+------------------+----------+---------+-------------------------+
| webpack-subresource | CVE-2020-15262   | LOW      | 1.4.1   | Unprotected dynamically |
|                     |                  |          |         | loaded chunks           |
+---------------------+------------------+----------+---------+-------------------------+

juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)

...

juice-shop/package-lock.json
============================
Total: 5 (CRITICAL: 5)

...
[+] Removing left-overs
[+] Making the output look pretty
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html

Docker Bild mat all Utilities

Als drëtt Alternativ hunn ech zwee einfach Dockerfiles zesummegesat fir e Bild mat Sécherheetsservicer ze kreéieren. Een Dockerfile hëlleft e Set ze bauen fir d'Bild aus dem Repository ze scannen, déi zweet (Dockerfile_tar) wäert e Set bauen fir d'Tar-Datei mam Bild ze scannen.

1. Mir huelen déi entspriechend Docker-Datei a Skripte aus dem Repository https://github.com/Swordfish-Security/docker_cicd/tree/master/Dockerfile.
2. Run et fir Assemblée:

docker build -t dscan:image -f docker_security.df .

3. Nodeems de Bau fäerdeg ass, erstellt e Container aus dem Bild. Zur selwechter Zäit passéiere mir d'DOCKERIMAGE Ëmfeldvariabel mam Numm vum Bild an deem mir interesséiert sinn a montéieren d'Dockerfile déi mir vun eiser Maschinn analyséiere wëllen an d'Datei /dockerfil (Notéiert datt den absolute Wee fir dës Datei erfuerderlech ass):

docker run --rm -v $(pwd)/results:/results -v $(pwd)/docker_security.df:/Dockerfile -e DOCKERIMAGE="bkimminich/juice-shop" dscan:image


[+] Setting environment variables
[+] Running Hadolint
/Dockerfile:3 DL3006 Always tag the version of an image explicitly
[+] Running Dockle
WARN    - DKL-DI-0006: Avoid latest tag
        * Avoid 'latest' tag
INFO    - CIS-DI-0005: Enable Content trust for Docker
        * export DOCKER_CONTENT_TRUST=1 before docker pull/build
INFO    - CIS-DI-0006: Add HEALTHCHECK instruction to the container image
        * not found HEALTHCHECK statement
INFO    - DKL-LI-0003: Only put necessary files
        * unnecessary file : juice-shop/node_modules/sqlite3/Dockerfile
        * unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm64/Dockerfile
        * unnecessary file : juice-shop/node_modules/sqlite3/tools/docker/architecture/linux-arm/Dockerfile
[+] Running Trivy
...
juice-shop/package-lock.json
============================
Total: 20 (UNKNOWN: 0, LOW: 1, MEDIUM: 6, HIGH: 8, CRITICAL: 5)
...
[+] Making the output look pretty
[+] Starting the main module ============================================================
[+] Converting JSON results
[+] Writing results HTML
[+] Clean exit ============================================================
[+] Everything is done. Find the resulting HTML report in results.html

Resultater

Mir hunn nëmmen eng Basisset vun Utilitys gekuckt fir Docker Artefakte ze scannen, wat menger Meenung no ganz effektiv en anstännegen Deel vun de Bildsécherheetsfuerderunge ofdeckt. Et ginn och eng grouss Zuel vu bezuelten a gratis Tools, déi déiselwecht Kontrollen ausféieren, schéi Berichter zéien oder reng am Konsolmodus schaffen, Containermanagementsystemer ofdecken, asw.. En Iwwerbléck iwwer dës Tools a wéi se se integréieren kënnen e bësse méi spéit erschéngen .

Déi positiv Säit vum Set vun Tools, déi am Artikel beschriwwe ginn, ass datt se all op Open Source gebaut sinn an Dir kënnt mat hinnen an aner ähnlech Tools experimentéieren fir ze fannen wat genau Är Ufuerderungen an Infrastrukturfeatures entsprécht. Natierlech sollten all Schwachstelle, déi fonnt ginn, fir Applikatioun a spezifesche Konditioune studéiert ginn, awer dëst ass en Thema fir en zukünfteg groussen Artikel.

Ech hoffen dëse Guide, Scripten an Utilities Iech hëllefen an e Startpunkt ginn fir eng méi sécher Infrastruktur am Beräich vun der Containeriséierung ze kreéieren.

Source: will.com

Setzt e Commentaire