áá ááĽá!
áᏠáŁáá á°á¨áŁá áááł á áááľ áá°áśá˝ ááľáĽ á¨ááŤáŁááľ áá áĽá¨á¨áᨠá áááŁáą á¨á°ááŤáŠ á°á¨ááá˝á áĽá á¨áŽáá´áááŽá˝ áá á¨á°áŤáŤá á áŤááľá á°á áááľ á¨áá¨ááἠááłá á áá¨á¨áťá á°á¨á áá á áá°áá. áźáŽá˝á á áĽá ááŤááľ á áľáŤá áľáŤ ááᣠáľááá áá áá áá°áľ áá° á ááśáá˛á áááľá¨á á˘áŤááľ á¨ááááŞáŤ áĽááááá˝á ááá°áľ áĽáŠ ááááá˘
á áá
á˝áá ááľáĽ ᣠáá
áá áá°áľ áááá°á˝ áĽá á¨áśá¨á á°á
áááľ áááááŤáá˝á áĽá áááŞáŤáá˝á ááá°áá á ááá á¨áá áľááŞááśá˝á áĽáááŤáá ᢠᨠDockerfile ááľáá˝á áĽá áááŞáŤáá˝á á°á
áááľá á¨ááá¨á áá°áľá áĽáá´áľ áá°áŤááľ áĽáá°ááťá áááá¨á ááłááśá˝á áá áá áá˝ááᢠá¨áááľ áĽá á¨áľáá ፠áá á¨á° áááľ áááá á°á á¨á°áᨠáĽáá°áá ááá˝ áá, áľááá
á¨áá
á áłá˝ á ááŤáł á ááŤáŽá˝á áĽá°áŁáá.
á¨á°á áááľ áá°áť áááááŤáá˝
á á°ááŤáŠ á¨áśá¨á áá á¨á° áááľ ááłáŽá˝ áá áá°áťáá˝á á¨ááŤáŤááą áĽá ááĽá áŤáá¸á á¨á°ááŤáŠ á áἠáá°áá áŞáŤáá˝ áĽá áľááŞááśá˝ á áᢠá ááłááśáš á ááľáá á˝áá ááľáĽ á°ááá¸áá (
ááśáááľ
á ááááŞáŤ ᨠDockerfile áááŞáŤáá˝á áľááááááľ áĽá á°á áááľ áááááá á¨áá¨áł á áŁá ááá á¨áŽááśá áááá፠(áááłá á¨á°áááą á¨ááľá áááἠá¤áśá˝á áĽáť ááá áąáśá á áá áá)á˘
áśáá
á¨áŽááśá áááá፠á ááľá áá á¨áá°áŤ (ááá á á°ááá á á¨áłááŚá ááľá áá) á¨á ááľá á¨á°áá°á ááľá áľááááááľ áĽá á°á
áááľ á¨áááľá˝ ááĽááĽáŠá áĽá á ááááŠá á áá°áá°á - á°á áááá˝ áá áĽáá°á°áá አᣠáá á áááľ áááŞáŤáá˝ áĽá
á áá áĽáá°ááá ᣠáá áĽáŤáá˝ áĽáá°á°áŤá , áŁáś á¨ááá áá áááŠ, ááá°. á . á¨áźáŽá˝ áĽááľ á áŁá áľáá
áŁáááá áĽá á á ááŤáł áźáŽá˝ áĽá áááŽá˝ áá á¨á°áá°á¨á° áá.
áľáŞáŞ
áá áááá፠áááľ á áááľ á°áááááśá˝á áááááľ áŤáá áá - á¨áľááá° ááá áááŁáł á˝ááŽá˝ (á áááá ᣠáŹáľááľ (á¤á) ᣠá´ááľáŚá¤áľ ᣠá´á˘áŤá áá¤áአᣠáĄáĄááą áá°ááá) áĽá á¨áĽááááľ á˝ááŽá˝ (Gemfile.lock ᣠPipfile.lock ᣠcomposer.lock ᣠpack-lock) .jsonᣠyarn.lockᣠCargo.lock)ᢠáľáŞáŞ á áá¨ááťá ááľáĽ áŤááá ááľá áĽá á¨á áŤáŁá˘áá ááľá ááááľ áĽá áĽáá˛áá á á°áááá á¨.áłá ááá áá á áááľá¨áľ á Docker ááľá ááááľ áá˝ááá˘
áááááŤáá˝ áľáá ፠á ááŤáŽá˝
á áááá°á áááłáá˝ ááľáĽ á¨á°ááášáľá á áááŹá˝áá˝ áááá¨á, áááá áááááŤáá˝á áĽáá° ááá áá°áľ á áŤá áááŤá áááŞáŤáá˝á áĽá°áŁáá.
ááá ááłáĽ á áĽáľááľ áá á¨ááá áŠáľá Dockerfiles áĽá Docker ááľáá˝á á áŤáľ á°á á¨áááľ áá°áť áĽáá´áľ áá°áá á áĽáá°áá˝á ááłá¨áľ ááá˘
áá¨áááŤá áŤáą á¨áá¨á°ááľá á°á¨ááá˝ áŤáŤáľáłá:
- ᨠDockerfile áááŞáŤáá˝á áľááááááľ áĽá á°á áááľ á ááá°á áááá፠áá¨ááἠááśáááľ
- á¨áá¨á¨áťáá áĽá ááŤá¨áá ááľáá˝á áľááááááľ áĽá á°á áááľ áá¨ááἠ- áááá፠áśáá
- á áá á¨áłá ááľá ááľáĽ á¨á°áááą á¨áłáá á°áááááśá˝á (CVE) áá¨ááἠáĽá á ááŤáł áĽáááá˝ - á áááááŤá áľáŞáŞ
á áá áá á á˝áá ááľáĽ áĽááá
á áĽááááá˝ ááá°áá á áśáľáľ á ááŤáŽá˝á áĽá°áŁáá-
á¨ááááŞáŤá á¨ááľáἠááłáá á áá áá ᨠCI / á˛á˛ á§áá§á á áááá áá (á¨áá¨áŤ ááłáá á¨ááłá°á áá°áľ ááááŤ)á˘
ááá°áá á¨áźá áľááŞááľ á áá áá áá.
áŚáľá°áá Docker ááľáá˝á áááááľ Docker ááľá á ááááŁáľ ááá˘
ááĽááľá á¨ááľáááá á ááŤá ááá¨áĽ, áá° áá á¨á° áááľ áŤáľá°ááá áĽá á¨ááááľá áá áááťá¸áľ áá˝áá.
ááá á áľááá áááá˝ áĽá á°á¨á᪠áááŞáŤáá˝ áĽáá˛á á áá áŤáááŤá ááľáĽ áááááĄ-
GitLab CI/á˛á˛ áá á°áľ
á ááááŞáŤá á ááŤá ᨠGitLab áá¨ááť áľáááľá áĽáá° ááłá á áá áá á¨á°á áááľ áá°áťáá˝á áĽáá´áľ á°ááŁáŤá ááľá¨á áĽáá°ááťá áĽáááá¨áłááᢠáĽáá á á°á¨áááš ááľáĽ áĽááááá áĽá áĽáá´áľ á¨áá¨áŤ á áŤáŁá˘á á GitLab á¨áŁáś áááá áĽáá°ááťá áŁá¨áá°áť áá°áľá áĽáááĽáŤáá áĽá á¨áá¨áŤ Dockerfileá áĽá á¨áááá° ááľáá áááá°á˝ áááááŤáá˝á áĽááŤáá - á¨ááľážá áá°áá áŞáŤá˘
GitLabá á ááŤá áá
1. áśá¨áá áŤá
sudo apt-get update && sudo apt-get install docker.io
2. áąáś áłáá áá á¨áśá¨á áá ááľáŤáľ áĽáá˛á˝á á¨á ááá á°á áá áá° ááá°áťá áĄáľá áá¨ááŠá˘
sudo addgroup <username> docker
3. á¨áĽááľáá á áá áŤáááĄ-
ip addr
4. GitLabá á ááŤáŁá ááľáĽ ááŤá áĽá áŤááąáŁ á¨á áá á áľáŤáťáá á á áľá°ááá áľá á áŤáľá ááááŠáľáĄ-
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
GitLab áááá á áľááá á¨ááŤá áá°áśá˝á áĽáá˛áŤá áá á áĽá¨á á á á áá (á áá ááá áá ááľ áá°áąá áá¨á°á áá˝áá-docker logs -f gitlab)á˘
5. á¨á á¨áŁá˘áá á áá á á áłáš ááľáĽ ááááą áĽá ááľá á°á ááá á¨ááá áá áááá¨á á¨ááŤááá áá áá˝ áááá¨áąá˘
á á˛áľ á¨ááá áá áŤááá áĽá áá° GitLab áááąá˘
6. á á˛áľ ááŽáááľ ááá አáááłá cicd-test áĽá á áááť ááá áŤáľáááŠáľá˘ README.md:
7. á áá GitLab Runner: á áĽáŤá áá áááá á áľááá áľáŤáá˝ á¨ááŤá¨ááá ááŞá ááŤá á ááĽá.
á¨á
áἠáááá áľáŞáľ áŤáááą (á áá
á ááŁá á ááááľ 64-á˘áľ áľá)
sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
8. á°ááá áĽáá˛áá áŤáľáááľáĄ-
sudo chmod +x /usr/local/bin/gitlab-runner
9. ááŻáŠ á¨áľááá° ááá á°á áá áŤáá áĽá á áááááąá ááááŠáĄ-
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
áĽáá°áá áŤá ááá ááá°á á áá áľáĄ-
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. á áá ᨠGitLab ááłá áá ááľá°ááĽá áĽáá˛áá á áŻáŠá áĽáááááŁááá˘
áá
áá áááľá¨á ᨠSettings-CI/CD áášá ááááą (http://OUR_ IP_ADDRESS/root/cicd-test/-/settings/ci_cd) áĽá á áŠááŽá˝ áľá áá URL áĽá á¨áááᣠááľáá°áŤ áŤáááĄ-
11. áŠá áá¤áá áĽá á¨áááᣠááľáá°áŤáá á áá°áŤáľ áŻáŠá áŤáľááááĄáĄ-
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"
á áá¤áąá, ááá á¨áá GitLab áĽááááá, á áá ááľáĽ áááááŤááťá˝áá ááááá áááŞáŤáá˝á áá¨á áŤáľááááá. á áá ááłáŤ ááľáĽáŁ á¨áá°áá áŞáŤ áááŁáł áĽá áŽáá´áááááá˝á á°á¨ááá˝ á¨áááᣠááá áá á áĽááá°á á áŤáŁá˘ áĽááą á¨áá°áť á°á¨ááá˝á áááľáá áĽá ááľáá˝á áĽá ááá°áá°á Dockerfile áŤáááŤáá˘
á¨á§á᧠ááľáá áá á
1. áááá˝á áá° áá¨ááťá á áá mydockerfile.df (áá á¨ááááľáá á¨áśáá°á ááá áá¨áŤ áá) áĽá ᨠGitLab CI/CD áá°áľ áá á ááá .gitlab-cicd.yml, áá á ááááá˝ áááŞáŤáá˝á ááá¨ááŤá (á ááá áľá ááľáĽ áŤááá ááĽáĽ áŤáľá°áá).
á¨.yaml áááá ááá á¨á°áá¨á áá áśá¨áááá áĽá á DOCKERFILE á°áááá ááľáĽ á¨á°ááá¸áá ááľá á¨áá°áá°á áśáľáľ áááááŤáá˝á (HadolintᣠDockle áĽá Trivy) áááľáŹáľ áááŞáŤáá˝á áááᢠááá á áľááá á°ááśá˝ á¨áá¨ááťá ááá°áą áá˝áá-
áŤáᥠmydockerfile.df (áá
áááááŤá áĽáá´áľ áĽáá°áá°áŤ áááłá¨áľ á¨áááá° áááŞáŤáá˝ áľáĽáľáĽ áŤáá á¨áá
ááá áá)ᢠáá° ááá ááĽá°á á ááá;
á¨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
ᨠYAML áá
á áá
á áááľáá (ááá áŤáą áĽáá
áŤáá ááĽá°á á ááá ááá°áľ áá˝áááĄ
á¨.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
á áľááá á¨áá á¨á°ááᥠááľáá˝á áĽáá° .tar áááἠá¤áľ ááááľ áá˝áá (ááá áá á YAML ááá ááľáĽ áŤááľá á¨áááá፠áááŞáŤáá˝á áááἠáŤáľáááááłá)
ááłá°á˘áŤáĄ áľáŞáŞ ááŤá áŤáľááááá áŞá˝ и ááľ. á áá áá፠á RedHat áá á¨á°áá°á¨áą ááľáá˝á á˛áá áĽá á¨á°áááááľ áłáłá¤á ááááá˝á á˛áŤáá áľá á°áśá˝á áááĽáŤáá˘
2. áááášá áá° áá¨ááťá áŤá¨á á áá, á áĽá á¨ááááŞáŤ ááá ááľáĽ áŁáá áááŞáŤ áá°á¨áľ, GitLab á áŤáľ-á°á á¨áááŁáł áĽá á¨áá°áť áá°áąá ááááŤá. á CI / á˛á˛ â á¨á§á᧠ááľááŽá˝ áľáŠ áá, á¨áááŞáŤáá áá°áľ áá¨áľ áá˝áá.
á áá¤áąá, á áŤáľ á°ááŁáŤáľ á áá. á¨áĽááá
ááľáĽ áŚáľáą á ááĽáł á ááááľ ááľáĽ á¨á°áłá°á áá¸á, áĽá á¨áá¨á¨áťá (áŞáááľ) á¨á°á á°á áááá˝ á¨áá°áť áá¤áśá˝ áá ááá áŤá ááᣠáá°á áľáŁá.
á ááŁáŞááľ áľáŤá᪠á ááľá áá ááłá á¨áá á°áááááśá˝ á¨á°áá á ááááá áŤáááᢠá á°ááłáłá áá ááśáááľ áá áá á á áááá áŽáľ ááľáĽ áľáŹáľá ááááłá ᣠááááŤáąá á áááá áá áá á áľá°áŤá¨áśá˝ áľáááľ áááŁáłá áĽáá˛áá áŤá°ááááá˘
á áĽááľá áአááľáááśá˝ áá á áááľá¨áľ áĽááá
áááááŤáá˝ á¨á ááľ á¨á°áá°á ááłá á˝ááŽá˝ á˛áá á¨áááŁáł áá°áąá áĽáá˛áŤáá á¨áá፠áŽáľ áááá áá˝ááᢠá áĽá áááł áŁáááŁáłá á¨áááá áľáŞáŞ á SHOWSTOPPER á°áááá ááľáĽ á¨ááá˝áá á¨áŁáľááľ áá á°áááááľá áŤáá áĽáť ááᢠ.gitlab-ci.yml.
á¨áĽáŤááłááą áááá፠á á áŤá áá¤áľ á áĽáŤááłááą á¨áá°áť á°ááŁá áááἠááľáĽ á ááĽáł á json áááá˝ á á
ááľ ááá ááľáĽ ááá á ááá HTML ááᣠááľáĽ ááłá áá˝áá (á¨áá
á áłá˝ áŁáá áá á¨á áá )
3. á¨áááá፠áŞáááśá˝á á áľááš á á°áá˝ ááá ἠá áá˝á ááአááá
á¨áĽáŁ áľáá˝ á¨áááá áľááŞááľ áśáľáľ json áááá˝á áá° á ááľ á¨á¤á˝á˛á¤áá¤á ááá á¨áĽáá˝áľ á áá á¨áĽ áááá¨á áá á
ááá˘
áá
áľááŞááľ á á°áᨠá¨áŞáááľ á°ááŁá á°áááŻáᣠáĽá á¨áá¨á¨áťá á
ááľ á¨áŞáááľ áá á¨á¤á˝á˛á¤áá¤á ááá ááᢠá¨áľááŞááľ ááአáĽáá˛á á áá áŤáááŤá ááľáĽ á á áĽá á¨áĽááľá ááááśá˝áŁ áááá˝áŁ ááá° áá ááľáá áá˝ááá˘
á¨áźá áľááŞááľ
ááá°áá á ááŤá á á˛á á/á˛á˛ á˛áľá°á ááľáĽ á¨áá á¨áśá¨á ááľáá˝á áááá°á˝ ááááá ááłáŽá˝ á°áľáá áá ᣠááá ááá áááŞáŤáá˝ á á áľá°ááá áá á ááĽáł áá¨ááá á áá˝á á á ââááľáĽ áááááľ áááŁá ᢠáá á ááŤá á áášá áááŁá (ááá áĽáá˛áŤáá áĽááá°á) áá˝á áá áá ፠á áá˝á ááá á áá á¨áźá áľááŞááľ á°á¸áááᢠáľááŞááą á¨áá áŤáá gitlab-áŻá áá á°ááłáłá áááŞáŤáá˝á áá¨á°ááá˘
áľááŞááą á á°áłáŤ áááł áĽáá˛á°áŤ Docker á á˛áľá°á áá ááŤá á áá áľ áĽá á áá áŤáá á°á áá á áśáá°á áĄáľá ááľáĽ ááá á áá áľá˘
áľááŞááą áŤáą áĽáá
ááá áá˝áááĄ-
á ááá ááááŞáŤ áá á°ááááŽá˝ á¨áľáá ááľá ááááľ áĽááłáá áľ áĽá áá ááááľ ááľááśá˝ áĽááłááľ á¨áľáŞáŞ áááá፠á á°á áá°á á¨áľá á°áľ áŽáľ áĽáá˛áᣠáŤá°ááá¸ááá˘
á áľááŞááą á áááá áá áľ ááá áááááŤáá˝ áá° áááŤá ááááłá docker_tools, á¨áĽáŤá¸á áá¤áśá˝ - á áááŤá ááľáĽ docker_tools/json, áĽá á¨áŞáááą áá áŤáá HTML á ááá ááľáĽ áááá áá¤áśá˝.html.
ááłá áľááŞááľ áá ááľ
~/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 ááľá á¨ááá áááááŤáá˝ áá
áĽáá° áśáľá°á á ááŤá á¨á°á áááľ áááááŤáá˝ áá ááľá áááá á áááľ ááá Dockerfiles á ááá áťááᢠá ááľ Dockerfile ááľáá á¨áá áŤáááŤá ááľáĽ áááááľ á ááľ áľáĽáľáĽ áááááŁáľ áá¨áłáᣠááá°áá (Dockerfile_tar) á¨áłá áááá á ááľá áááááľ áľáĽáľáĽ ááááŁáá˘
1. á°áá˘áá á¨áśá¨á ááá áĽá áľááŞááśá˝á á¨áá¨ááťá ááľáĽ áĽáááľáłáá
2. ááľáĽá°áŁ áŤááąáľáĄ-
docker build -t dscan:image -f docker_security.df .
3. áááŁáłá á¨á°á ááá á áá, á¨ááľá áá ááŤáŁ ááá áŠ. á á°ááłáłá áá ᨠDOCKERIMAGE á á¨áŁá˘ á°áááá á áááááá á¨ááľá áľá áĽááľá°ááááá áĽá á¨áá˝á áá° ááá áá°áá°á á¨ááááááá Dockerfile áĽáááááᢠ/ áśá¨áááá (áá°áá ááá áášá ááááľ áĽáá°ááŤáľááá áἠáá á)
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
áá¤áśá˝
á ááľ áá°á¨áłá á¨áśá¨á á áá˛áááľ ááá áááááŤáá˝á áĽáť á¸áááááŁáá á áĽáŠ á¨ááľá á°á áááľ ááľáááśá˝á á ááᣠáá¸ááá áĽáŹ á áľáŁááᢠá°ááłáłá áá°áťáá˝á á¨ááŤá¨áááᣠá¨ááŤáአáŞáááśá˝á áááłá ááá á áŽááśá áááłáŁ á áŽáá´ááá á áľá°áłá°á á˛áľá°ááľ á˝áá ááá° áĽáť á¨áá°áŠ áĽá ááá˝ á¨áá¨áááŁá¸á áĽá ááť ááłáŞáŤáá˝ á áá˘á¨áĽááá ááłáŞáŤáá˝ á á ááá áĽááł áĽá áĽáá´áľ áĽááąá ááááľ áĽáá°ááťá áľáá˝ áááś ááłá áá˝ááá˘
á á áááš ááľáĽ á¨á°ááášáľ á¨ááłáŞáŤáá˝ áľáĽáľáĽ á áááłá áá ááá á áááľ ááá áá á¨á°ááᥠáá¸á áĽá á¨áĽááľá ááááśá˝ áĽá á¨áá á¨á° áááľ áŁá áŞáá˝ áá á áľááá á¨ááľáááá áááááľ á¨ááą áĽá á¨ááá˝ á°ááłáłá ááłáŞáŤáá˝ áá ááá¨á áá˝áá ᢠáĽááἠáá, á¨á°áááľ ááá áľáááśá˝ á á°áá°á áááłáá˝ áá á°áááááľ áĽáá˛ááŤá¸á ááĽááľ á ááŁá¸á, áá áá ááá°ááľ áľáá á˝áá áááľ áá.
áĽááá
áááŞáŤáá˝áŁ áľááŞááśá˝ áĽá áááááŤáá˝ áĽáá°áá¨áąááľ áĽá á áŽáá´áááŹá˝á ááľá á¨á áá á°á
áááą á¨á°á á á áá á¨á° áááľ áááá á áááť áááá áĽáŹ á°áľá á á°ááááá˘
ááá: hab.com