A’ cleachdadh an sganair so-leòntachd airson leabharlannan cleachdte Dependency-Check ann an GitlabCI

Is e pàirt chudromach de riaghladh so-leòntachd a bhith a’ tuigsinn agus a’ dèanamh cinnteach à sèine solair nam pàirtean bathar-bog a tha a’ dèanamh suas siostaman an latha an-diugh. Bidh sgiobaidhean Agile agus DevOps a’ dèanamh feum farsaing de leabharlannan agus frèaman stòr fosgailte gus ùine leasachaidh agus cosgais a lughdachadh. Ach tha eas-bhuannachdan aig a’ bhonn seo cuideachd: an cothrom mearachdan agus so-leòntachd dhaoine eile a shealbhachadh.

Gu dearbh, bu chòir don sgioba a bhith cinnteach gum bi fios aca dè na pàirtean stòr fosgailte a tha air an toirt a-steach do na tagraidhean aca, dèanamh cinnteach gu bheil dreachan earbsach aithnichte air an luchdachadh sìos bho stòran earbsach aithnichte, agus luchdaich sìos dreachan ùraichte de cho-phàirtean às deidh do chugallachd a chaidh a lorg às ùr a bhith air am pasgadh.

Anns an dreuchd seo, seallaidh sinn ri cleachdadh OWASP Dependency Check gus casg a chuir air togalach ma lorgas e fìor dhuilgheadasan leis a’ chòd agad.

Anns an leabhar “Development Security in Agile Projects” tha e air a mhìneachadh mar a leanas. Is e sganair an-asgaidh a th’ ann an OWASP Dependency Check a bhios a’ catalogadh a h-uile pàirt stòr fosgailte a thathas a’ cleachdadh ann an tagradh agus a sheallas na so-leòntachd a tha annta. Tha dreachan ann airson Java, .NET, Ruby (gemspec), PHP (sgrìobhadair-ciùil), Node.js agus Python, a bharrachd air cuid de phròiseactan C/C ++. Bidh Sgrùdadh Dependency a’ fighe a-steach le innealan togail cumanta, a’ toirt a-steach Ant, Maven agus Gradle, agus frithealaichean amalachaidh leantainneach mar Jenkins.

Bidh Sgrùdadh eisimeileachd ag aithris air a h-uile pàirt le so-leòntachd aithnichte bho Stòr-dàta So-leòntachd Nàiseanta NIST (NVD) agus tha e air ùrachadh le dàta bho bhiadhan naidheachdan NVD.

Gu fortanach, faodar seo uile a dhèanamh gu fèin-ghluasadach le bhith a’ cleachdadh innealan leithid pròiseact Sgrùdadh eisimeileachd OWASP no prògraman malairteach mar Duck Dubh, JFrog Xray, Snyk, Cearcall-beatha Nexus Sonatype no Stòr soilleir.

Faodar na h-innealan sin a thoirt a-steach do phìoban togail gus eisimeileachd stòr fosgailte a chlàradh gu fèin-ghluasadach, dreachan seann-fhasanta de leabharlannan agus leabharlannan anns a bheil so-leòntachd aithnichte a chomharrachadh, agus casg a chuir air togail ma lorgar fìor dhuilgheadasan.

Sgrùdadh eisimeileachd OWASP

Gus deuchainn agus sealltainn mar a tha Sgrùdadh Dependency ag obair, bidh sinn a’ cleachdadh an stòr-dàta seo eisimeileachd-seic-eisimpleir.

Gus an aithisg HTML fhaicinn, feumaidh tu am frithealaiche lìn nginx a rèiteachadh air an ruitheadair gitlab agad.

Eisimpleir de cho-dhealbhadh nginx as ìsle:

server {
    listen       9999;
    listen       [::]:9999;
    server_name  _;
    root         /home/gitlab-runner/builds;

    location / {
        autoindex on;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}

Aig deireadh a’ cho-chruinneachaidh chì thu an dealbh seo:

A’ cleachdadh an sganair so-leòntachd airson leabharlannan cleachdte Dependency-Check ann an GitlabCI

Lean an ceangal agus faic an aithisg Sgrùdadh Dependency.

Is e a’ chiad dealbh-sgrìn am pàirt as àirde den aithisg le geàrr-chunntas.

A’ cleachdadh an sganair so-leòntachd airson leabharlannan cleachdte Dependency-Check ann an GitlabCI

Mion-fhiosrachadh an dàrna dealbh-sgrìn CVE-2017-5638. An seo chì sinn ìre CVE agus ceanglaichean gu cleachdaidhean.

A’ cleachdadh an sganair so-leòntachd airson leabharlannan cleachdte Dependency-Check ann an GitlabCI

Is e an treas dealbh mion-fhiosrachadh mu log4j-api-2.7.jar. Chì sinn gur e ìrean CVE 7.5 agus 9.8.

A’ cleachdadh an sganair so-leòntachd airson leabharlannan cleachdte Dependency-Check ann an GitlabCI

Is e an ceathramh dealbh-sgrìn mion-fhiosrachadh commons-fileupload-1.3.2.jar. Chì sinn gur e ìrean CVE 7.5 agus 9.8.

A’ cleachdadh an sganair so-leòntachd airson leabharlannan cleachdte Dependency-Check ann an GitlabCI

Ma tha thu airson duilleagan gitlab a chleachdadh, chan obraich e - cha chruthaich gnìomh a thuit artifact.

Eisimpleir an seo https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

Tog toradh: chan eil artifacts ann, chan eil mi a’ faicinn an aithisg html. Bu chòir dhut feuchainn Artifact: an-còmhnaidh

https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages/-/jobs/400004246

A’ cleachdadh an sganair so-leòntachd airson leabharlannan cleachdte Dependency-Check ann an GitlabCI

A’ riaghladh ìre so-leòntachd CVE

An loidhne as cudromaiche san fhaidhle gitlab-ci.yaml:

mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7

Le paramadair failBuildOnCVSS faodaidh tu an ìre de chugallachd CVE atharrachadh ris am feum thu freagairt.

A’ luchdachadh sìos Stòr-dàta So-leòntachd NIST (NVD) bhon eadar-lìn

An do mhothaich thu gu bheil NIST an-còmhnaidh a’ luchdachadh sìos stòran-dàta so-leòntachd NIST (NVD) bhon eadar-lìn:

A’ cleachdadh an sganair so-leòntachd airson leabharlannan cleachdte Dependency-Check ann an GitlabCI

Gus luchdachadh sìos, faodaidh tu an goireas a chleachdadh nist_data_sgàthan_golang

Leig leinn a stàladh agus a chuir air bhog.

yum -y install yum-plugin-copr
yum copr enable antonpatsev/nist_data_mirror_golang
yum -y install nist-data-mirror
systemctl start nist-data-mirror

Bidh Nist-data-mirror a’ luchdachadh suas an NIST JSON CVE gu /var/www/repos/nist-data-mirror/ nuair a thòisicheas iad agus ag ùrachadh an dàta gach 24 uair.

Gus CVE JSON NIST a luchdachadh sìos, feumaidh tu am frithealaiche lìn nginx a rèiteachadh (mar eisimpleir, air do gitlab-runner).

Eisimpleir de cho-dhealbhadh nginx as ìsle:

server {
    listen       12345;
    listen       [::]:12345;
    server_name  _;
    root         /var/www/repos/nist-data-mirror/;

    location / {
        autoindex on;
    }

    error_page 404 /404.html;
        location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }

}

Gus nach dèan sinn loidhne fhada far an tèid mvn a chur air bhog, gluaisidh sinn na paramadairean gu caochladair air leth DEPENDENCY_OPTS.

Seallaidh an rèiteachadh as lugha mu dheireadh .gitlab-ci.yml mar seo:

variables:
  MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
  MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
  DEPENDENCY_OPTS: "-DfailBuildOnCVSS=7 -DcveUrlModified=http://localhost:12345/nvdcve-1.1-modified.json.gz -DcveUrlBase=http://localhost:12345/nvdcve-1.1-%d.json.gz"

cache:
  paths:
    - .m2/repository

verify:
  stage: test
  script:
    - set +e
    - mvn $MAVEN_CLI_OPTS install org.owasp:dependency-check-maven:check $DEPENDENCY_OPTS || EXIT_CODE=$?
    - export PATH_WITHOUT_HOME=$(pwd | sed -e "s//home/gitlab-runner/builds//g")
    - echo "************************* URL Dependency-check-report.html *************************"
    - echo "http://$HOSTNAME:9999$PATH_WITHOUT_HOME/target/dependency-check-report.html"
    - set -e
    - exit ${EXIT_CODE}
  tags:
    - shell

Còmhradh teileagram mu DevOps agus Tèarainteachd
Sianal Telegram DevSecOps / SSDLC - Leasachadh tèarainte

Source: www.habr.com

Cuir beachd ann