Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker

Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker
Hi Habr!

Ann am fìrinn an latha an-diugh, mar thoradh air an àite a tha a’ sìor fhàs aig containerization ann am pròiseasan leasachaidh, chan e a’ cheist mu bhith a’ dèanamh cinnteach à tèarainteachd diofar ìrean agus aonadan co-cheangailte ri soithichean an cuspair as cudromaiche. Tha a bhith a’ dèanamh sgrùdaidhean làimhe a’ toirt ùine, agus mar sin bhiodh e na dheagh bheachd co-dhiù na ciad cheumannan a ghabhail gus am pròiseas seo a dhèanamh fèin-ghluasadach.

San artaigil seo, roinnidh mi sgriobtaichean deiseil airson grunn ghoireasan tèarainteachd Docker a chuir an gnìomh agus stiùireadh air mar a chleachdas tu ionad demo beag gus am pròiseas seo a dhearbhadh. Faodaidh tu na stuthan a chleachdadh gus feuchainn air mar a chuireas tu air dòigh pròiseas deuchainn tèarainteachd ìomhaighean agus stiùireadh Dockerfile. Tha e soilleir gu bheil bun-structar leasachaidh is buileachaidh a h-uile duine eadar-dhealaichte, mar sin gu h-ìosal bheir mi seachad grunn roghainnean a dh’ fhaodadh a bhith ann.

Goireasan sgrùdaidh tèarainteachd

Tha àireamh mhòr de dhiofar thagraidhean cuideachaidh agus sgriobtaichean ann a bhios a’ dèanamh sgrùdaidhean air diofar thaobhan de bhun-structar Docker. Chaidh iomradh a thoirt air cuid dhiubh san artaigil roimhe (https://habr.com/ru/company/swordfish_security/blog/518758/#docker-security), agus anns an stuth seo bu mhath leam fòcas a chuir air trì dhiubh, a tha a’ còmhdach a ’mhòr-chuid de na riatanasan tèarainteachd airson ìomhaighean Docker a chaidh a thogail tron ​​​​phròiseas leasachaidh. A bharrachd air an sin, seallaidh mi cuideachd eisimpleir air mar as urrainnear na trì goireasan sin a cheangal ann an aon loidhne-phìoban gus sgrùdaidhean tèarainteachd a dhèanamh.

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

Goireas tòcan gu math sìmplidh a chuidicheas, mar chiad tuairmse, measadh a dhèanamh air ceartachd agus sàbhailteachd stiùireadh Dockerfile (mar eisimpleir, a’ cleachdadh dìreach clàran ìomhaighean ùghdarraichte no a’ cleachdadh sudo).

Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker

Dòglach
https://github.com/goodwithtech/dockle

Goireas tòcan a bhios ag obair le ìomhaigh (no le tasglann teàrr air a shàbhaladh) a nì sgrùdadh air ceartachd agus tèarainteachd ìomhaigh sònraichte mar sin, a’ dèanamh anailis air na sreathan agus an rèiteachadh aige - dè na cleachdaichean a tha air an cruthachadh, dè an stiùireadh a thathas a’ cleachdadh, a tha tha leabhraichean air an cur suas, làthaireachd facal-faire falamh, msaa. d. Gu ruige seo chan eil an àireamh de sgrùdaidhean glè mhòr agus tha e stèidhichte air grunn de na sgrùdaidhean agus molaidhean againn fhèin Slat-tomhais CIS (Ionad airson Tèarainteachd Eadar-lìn). airson Docker.
Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker

Tròcair
https://github.com/aquasecurity/trivy

Tha an goireas seo ag amas air dà sheòrsa so-leòntachd a lorg - duilgheadasan le togail OS (le taic bho Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu) agus duilgheadasan le eisimeileachd (Gemfile.lock, Pipfile.lock, composer.lock, pasgan). -glas.json, snàth.lock, cargo.lock). Faodaidh Trivy an dà chuid ìomhaigh san ath-reic agus ìomhaigh ionadail a sganadh, agus faodaidh e cuideachd sganadh stèidhichte air an fhaidhle .tar a chaidh a ghluasad le ìomhaigh Docker.

Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker

Roghainnean airson goireasan a chuir an gnìomh

Gus na tagraidhean a chaidh a mhìneachadh fheuchainn ann an àrainneachd iomallach, bheir mi seachad stiùireadh airson a bhith a’ stàladh a h-uile goireas ann am pròiseas beagan nas sìmplidhe.

Is e am prìomh bheachd sealltainn mar as urrainn dhut dearbhadh susbaint fèin-ghluasadach a chuir an gnìomh air ìomhaighean Dockerfiles agus Docker a thèid a chruthachadh rè leasachadh.

Tha an sgrùdadh fhèin air a dhèanamh suas de na ceumannan a leanas:

  1. A’ sgrùdadh ceart agus sàbhailteachd stiùireadh Dockerfile a’ cleachdadh goireas linter Hadolint
  2. Dèan sgrùdadh air ceartachd agus sàbhailteachd nan ìomhaighean deireannach agus eadar-mheadhanach a’ cleachdadh goireas Dòglach
  3. A’ dèanamh cinnteach gu bheil so-leòntachd a tha aithnichte gu poblach (CVE) anns an ìomhaigh bhunaiteach agus grunn eisimeileachd - a’ cleachdadh a’ ghoireas Tròcair

Nas fhaide air adhart san artaigil bheir mi trì roghainnean seachad airson na ceumannan seo a bhuileachadh:
Tha a’ chiad fhear le bhith a’ rèiteachadh loidhne-phìoban CI/CD a’ cleachdadh GitLab mar eisimpleir (le cunntas air a’ phròiseas airson eisimpleir deuchainn àrdachadh).
Tha an dàrna fear a 'cleachdadh sgriobt shligean.
Tha an treas fear a’ toirt a-steach togail ìomhaigh Docker gus ìomhaighean Docker a sganadh.
Faodaidh tu an roghainn as freagarraiche dhut a thaghadh, a ghluasad chun bhun-structair agad agus atharrachadh a rèir do fheumalachdan.

Tha a h-uile faidhle riatanach agus stiùireadh a bharrachd cuideachd anns an stòr: https://github.com/Swordfish-Security/docker_cicd

Amalachadh a-steach do GitLab CI/CD

Anns a ’chiad roghainn, seallaidh sinn ri mar as urrainn dhut sgrùdaidhean tèarainteachd a chuir an gnìomh a’ cleachdadh siostam stòr GitLab mar eisimpleir. An seo thèid sinn tro na ceumannan agus faigh a-mach mar a stàlaicheas tu àrainneachd deuchainn le GitLab bhon fhìor thoiseach, cruthaich pròiseas sganaidh agus cuir air bhog goireasan airson sgrùdadh a dhèanamh air an deuchainn Dockerfile agus ìomhaigh air thuaiream - an tagradh JuiceShop.

A’ stàladh GitLab
1. Stàlaich Docker:

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

2. Cuir an cleachdaiche làithreach ris a 'bhuidheann docker gus an urrainn dhut obrachadh le docker gun a bhith a' cleachdadh sudo:

sudo addgroup <username> docker

3. Lorg do IP:

ip addr

4. Stàlaich agus cuir air bhog GitLab anns a 'ghobhar, a' cur do sheòladh fhèin an àite an t-seòlaidh IP san ainm aoigheachd:

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

Bidh sinn a’ feitheamh gus an cuir GitLab crìoch air a h-uile modh stàlaidh riatanach (faodaidh tu sùil a chumail air a’ phròiseas tro thoradh an fhaidhle log: logaichean docker -f gitlab).

5. Fosgail an IP ionadail agad sa bhrobhsair agus faic duilleag ag iarraidh ort am facal-faire atharrachadh airson an neach-cleachdaidh freumh:
Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker
Suidhich facal-faire ùr agus rach gu GitLab.

6. Cruthaich pròiseact ùr, mar eisimpleir cicd-test agus cuir a-steach e leis an fhaidhle tòiseachaidh README.md:
Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker
7. A-nis feumaidh sinn GitLab Runner a stàladh: àidseant a ruitheas a h-uile gnìomh riatanach ma thèid iarraidh.
Luchdaich sìos an tionndadh as ùire (sa chùis seo, airson 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. Dèan e so-ghnìomhaichte:

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

9. Cuir cleachdaiche OS airson Runner agus tòisich an t-seirbheis:

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

Bu chòir dha coimhead air rudeigin mar seo:

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. A-nis bidh sinn a 'clàradh an Runner gus an urrainn dha eadar-obrachadh leis an eisimpleir GitLab againn.
Gus seo a dhèanamh, fosgail an duilleag Settings-CI/CD (http://OUR_IP_ADDRESS/root/cicd-test/-/settings/ci_cd) agus air an taba Runners lorg an URL agus an tòcan Clàraidh:
Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker
11. Runner Clàr le bhith a' cur an URL agus an tòcan Clàraidh an àite:

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"

Mar thoradh air an sin, gheibh sinn GitLab obrach deiseil, anns am feum sinn stiùireadh a chuir ris gus ar goireasan a thòiseachadh. Anns an demo seo chan eil na ceumannan againn airson an tagradh a thogail agus a chumail, ach ann an àrainneachd fhìor bhiodh iad sin ro na ceumannan sganaidh agus a’ gineadh ìomhaighean agus Dockerfile airson mion-sgrùdadh.

rèiteachadh loidhne-phìoban

1. Cuir faidhlichean ris an ath-reic mydockerfile.df (is e seo deuchainn Dockerfile a nì sinn sgrùdadh) agus am faidhle rèiteachaidh pròiseas GitLab CI / CD .gitlab-cicd.yml, a tha a’ liostadh stiùireadh airson sganairean (thoir an aire don dot ann an ainm an fhaidhle).

Ann am faidhle rèiteachaidh YAML tha stiùireadh airson trì goireasan a ruith (Hadolint, Dockle, agus Trivy) a nì mion-sgrùdadh air an Dockerfile taghte agus an ìomhaigh a tha air a shònrachadh anns an caochladair DOCKERFILE. Faodar a h-uile faidhle riatanach a thoirt bhon stòr: https://github.com/Swordfish-Security/docker_cicd/

Earrann bho mydockerfile.df (Is e faidhle eas-chruthach a tha seo le seata de stiùiridhean neo-riaghailteach a-mhàin gus obrachadh a’ ghoireas a nochdadh). Ceangal dìreach ris an fhaidhle: mydockerfile.df

Susbaint 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

Tha an rèiteachadh YAML a’ coimhead mar seo (gheibhear am faidhle fhèin tron ​​cheangal dìreach an seo: .gitlab-ci.yml):

Clàr-innse .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

Ma tha feum air, faodaidh tu cuideachd ìomhaighean a chaidh a shàbhaladh a sganadh ann an cruth tasglann .tar (ge-tà, feumaidh tu na paramadairean cuir a-steach atharrachadh airson goireasan san fhaidhle YAML)

NB: Feumaidh trivy stàladh rpm и git. Rud eile, cruthaichidh e mearachdan nuair a bhios tu a ’sganadh ìomhaighean stèidhichte air RedHat agus a’ faighinn ùrachaidhean don stòr-dàta so-leòntachd.

2. Às deidh dhut faidhlichean a chuir ris an ath-reic, a rèir an stiùiridh anns an fhaidhle rèiteachaidh againn, tòisichidh GitLab gu fèin-ghluasadach air a ’phròiseas togail is scan. Air an taba CI/CD → Pipelines chì thu adhartas an stiùiridh.

Mar thoradh air an sin, tha ceithir gnìomhan againn. Bidh trì dhiubh a 'dèiligeadh gu dìreach ri sganadh, agus tha am fear mu dheireadh (Aithisg) a' cruinneachadh aithisg shìmplidh bho fhaidhlichean sgapte le toraidhean sganaidh.
Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker
Gu gnàthach, stadaidh Trivy a ruith ma lorgar so-leòntachd CRITICEACH san ìomhaigh no ann an eisimeileachd. Aig an aon àm, bidh Hadolint an-còmhnaidh a ’tilleadh còd Soirbheachais oir bidh e an-còmhnaidh a’ toirt a-steach beachdan, a bheir air an togail stad.

A rèir na riatanasan sònraichte agad, faodaidh tu còd fàgail a rèiteachadh gus an cuir na goireasan sin stad air a’ phròiseas togail nuair a lorgas na goireasan sin duilgheadasan le fìor chudromachd. Anns a’ chùis againn, cha stad an togail ach ma lorgas Trivy so-leòntachd leis a’ chudromachd a shònraich sinn anns an caochladair SHOWSTOPPER ann an .gitlab-ci.yml.
Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker

Faodar toradh gach goireas fhaicinn ann an loga gach gnìomh sganaidh, gu dìreach anns na faidhlichean json anns an roinn artifacts, no ann an aithisg HTML sìmplidh (barrachd air sin gu h-ìosal):
Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker

3. Gus aithisgean cleachdaidh a thaisbeanadh ann an cruth beagan nas leughaidh le daoine, thèid sgriobt Python beag a chleachdadh gus trì faidhlichean JSON a thionndadh gu aon fhaidhle HTML le clàr de lochdan.
Tha an sgriobt seo air a chuir air bhog le gnìomh Aithris air leth, agus tha an artifact mu dheireadh aige na fhaidhle HTML le aithisg. Tha stòr an sgriobt cuideachd anns an stòr agus faodar atharrachadh a rèir do fheumalachdan, dathan, msaa.
Dòighean agus eisimpleirean de bhuileachadh air goireasan sgrùdaidh tèarainteachd Docker

Sgriobt slige

Tha an dàrna roghainn freagarrach airson cùisean nuair a dh’ fheumas tu sgrùdadh a dhèanamh air ìomhaighean Docker taobh a-muigh an t-siostam CI / CD no feumaidh an stiùireadh gu lèir a bhith agad ann an cruth a ghabhas a chuir gu bàs gu dìreach air an aoigh. Tha an roghainn seo air a chòmhdach le sgriobt slige deiseil a ghabhas ruith air inneal fìor-ghlan (no eadhon fìor). Bidh an sgriobt a’ cur an gnìomh an aon stiùireadh ris an gitlab-runner a tha air a mhìneachadh gu h-àrd.

Airson an sgriobt a ruith gu soirbheachail, feumaidh Docker a bhith air a chuir a-steach air an t-siostam agus feumaidh an neach-cleachdaidh gnàthach a bhith sa bhuidheann docker.

Gheibhear an sgriobt fhèin an seo: docker_sec_check.sh

Aig toiseach an fhaidhle, bidh caochladairean a’ sònrachadh dè an ìomhaigh a dh’ fheumar a sganadh agus dè na h-uireasbhaidhean èiginneach a bheir air a’ ghoireas Trivy falbh leis a’ chòd mearachd ainmichte.

Nuair a thèid an sgriobt a choileanadh, thèid a h-uile goireas a luchdachadh sìos chun eòlaire innealan docker_, tha toraidhean an cuid obrach anns an eòlaire docker_tools/json, agus bidh an HTML leis an aithisg anns an fhaidhle toraidhean.html.

Toradh sgriobt eisimpleir

~/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

Ìomhaigh docker leis a h-uile goireas

Mar an treas roghainn eile, chuir mi ri chèile dà Dockerfiles sìmplidh gus ìomhaigh a chruthachadh le goireasan tèarainteachd. Cuidichidh aon Dockerfile le bhith a’ togail seata airson ìomhaigh a sganadh bho stòr, cuidichidh an dàrna fear (Dockerfile_tar) le bhith a’ togail seata airson faidhle teàrr a sganadh le ìomhaigh.

1. Thoir am faidhle Docker co-fhreagarrach agus na sgriobtaichean bhon stòr https://github.com/Swordfish-Security/docker_cicd/tree/master/Dockerfile.
2. Bidh sinn ga chuir air bhog airson co-chruinneachadh:

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

3. Às deidh a 'cho-chruinneachadh a chrìochnachadh, bidh sinn a' cruthachadh soitheach bhon ìomhaigh. Aig an aon àm, bidh sinn a ’dol seachad air caochladair àrainneachd DOCKERIMAGE le ainm na h-ìomhaigh anns a bheil ùidh againn agus a’ cur suas an Dockerfile a tha sinn airson a sgrùdadh bhon inneal againn chun fhaidhle /Faidhle docker (Thoir an aire gu bheil an t-slighe iomlan chun an fhaidhle seo a dhìth):

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

Toraidhean

Cha do choimhead sinn ach air aon sheata de ghoireasan bunaiteach airson a bhith a’ sganadh artifacts Docker, a tha, nam bheachd-sa, gu h-èifeachdach a’ còmhdach pàirt reusanta de riatanasan tèarainteachd ìomhaigh. Tha cuideachd àireamh mhòr de dh'innealan pàighte agus an-asgaidh ann a dh'fhaodas na h-aon sgrùdaidhean a dhèanamh, a 'tarraing aithisgean brèagha no ag obair a-mhàin ann am modh tòcan, còmhdach siostaman rianachd container, msaa. .

Is e an rud math mun t-seata innealan a tha air a mhìneachadh san artaigil seo gu bheil iad uile stòr fosgailte agus faodaidh tu feuchainn orra agus innealan eile den aon seòrsa gus faighinn a-mach dè a tha iomchaidh dha na feumalachdan agus na bun-structar agad. Gu dearbh, bu chòir a h-uile so-leòntachd a lorgar a bhith air a sgrùdadh airson iomchaidheachd ann an suidheachaidhean sònraichte, ach tha seo na chuspair airson artaigil mòr san àm ri teachd.

Tha mi an dòchas gun cuidich an iùl seo, na sgriobtaichean agus na goireasan thu agus gum bi e na thoiseach tòiseachaidh airson bun-structar nas tèarainte a chruthachadh ann an raon glacaidh.

Source: www.habr.com

Cuir beachd ann