Gigamit ang vulnerability scanner alang sa gigamit nga mga librarya Dependency-Check sa GitlabCI

Usa ka hinungdanon nga bahin sa pagdumala sa pagkahuyang mao ang hingpit nga pagsabut ug pagsiguro sa kadena sa suplay sa mga sangkap sa software nga naglangkob sa mga modernong sistema. Ang mga grupo sa Agile ug DevOps kay naggamit sa mga open source nga librarya ug mga frameworks aron makunhuran ang oras ug gasto sa pag-uswag. Apan kini nga medalya usab adunay usa ka kalisud: ang oportunidad nga makapanunod sa mga kasaypanan ug kahuyang sa ubang mga tawo.

Dayag nga, ang team kinahanglan nga sigurado nga mahibal-an kung unsang mga bukas nga gigikanan nga mga sangkap ang gilakip sa mga aplikasyon niini, pagsiguro nga ang nahibal-an nga kasaligan nga mga bersyon ma-download gikan sa nahibal-an nga kasaligan nga mga gigikanan, ug mag-download sa mga bag-ong bersyon sa mga sangkap pagkahuman natambalan ang bag-ong nadiskubre nga mga kahuyangan.

Sa kini nga post, atong tan-awon ang paggamit sa OWASP Dependency Check aron i-abort ang usa ka pagtukod kung kini makamatikod sa mga seryoso nga problema sa imong code.

Sa libro nga "Development Security in Agile Projects" gihulagway kini sa mosunod. Ang OWASP Dependency Check usa ka libre nga scanner nga naglista sa tanan nga bukas nga gigikanan nga sangkap nga gigamit sa usa ka aplikasyon ug gipakita ang mga kahuyangan nga naa niini. Adunay mga bersyon alang sa Java, .NET, Ruby (gemspec), PHP (composer), Node.js ug Python, ingon man sa pipila ka mga proyekto sa C/C++. Ang Dependency Check nag-uban sa komon nga mga himan sa pagtukod, lakip ang Ant, Maven ug Gradle, ug padayon nga integration server sama sa Jenkins.

Gi-report sa Dependency Check ang tanan nga mga sangkap nga adunay nahibal-an nga mga kahuyangan gikan sa NIST's National Vulnerability Database (NVD) ug gi-update sa datos gikan sa mga feed sa balita sa NVD.

Maayo na lang, kining tanan mahimo nga awtomatiko gamit ang mga himan sama sa OWASP Dependency Check nga proyekto o komersyal nga mga programa sama Itom nga Itik, JFrog Xray, Snyk, Siklo sa Kinabuhi sa Nexus Sonatype o TinubdanClear.

Kini nga mga himan mahimong iapil sa pagtukod sa mga linya sa tubo aron awtomatiko nga mag-imbentaryo sa mga dependency sa bukas nga gigikanan, mahibal-an ang mga karaan nga bersyon sa mga librarya ug librarya nga adunay nahibal-an nga mga kahuyangan, ug i-abort ang mga pagtukod kung makit-an ang mga seryoso nga problema.

OWASP Dependency Check

Aron sulayan ug ipakita kung giunsa ang Pagsusi sa Dependency, gigamit namon kini nga repository dependency-check-example.

Aron matan-aw ang HTML nga report, kinahanglan nimo nga i-configure ang nginx web server sa imong gitlab-runner.

Pananglitan sa gamay nga nginx config:

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 {
    }
}

Sa katapusan sa asembliya imong makita kini nga hulagway:

Gigamit ang vulnerability scanner alang sa gigamit nga mga librarya Dependency-Check sa GitlabCI

Sunda ang link ug tan-awa ang Dependency Check report.

Ang unang screenshot mao ang pinakataas nga bahin sa report nga adunay summary.

Gigamit ang vulnerability scanner alang sa gigamit nga mga librarya Dependency-Check sa GitlabCI

Ikaduha nga mga detalye sa screenshot CVE-2017-5638. Dinhi atong makita ang lebel sa CVE ug mga link sa mga pagpahimulos.

Gigamit ang vulnerability scanner alang sa gigamit nga mga librarya Dependency-Check sa GitlabCI

Ang ikatulo nga screenshot mao ang mga detalye sa log4j-api-2.7.jar. Nakita namon nga ang lebel sa CVE 7.5 ug 9.8.

Gigamit ang vulnerability scanner alang sa gigamit nga mga librarya Dependency-Check sa GitlabCI

Ang ikaupat nga screenshot mao ang mga detalye sa commons-fileupload-1.3.2.jar. Nakita namon nga ang lebel sa CVE 7.5 ug 9.8.

Gigamit ang vulnerability scanner alang sa gigamit nga mga librarya Dependency-Check sa GitlabCI

Kung gusto nimo gamiton ang mga panid sa gitlab, nan dili kini molihok - ang usa ka nahulog nga buluhaton dili maghimo usa ka artifact.

Pananglitan dinhi https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

Pagtukod og output: walay artifact, wala nako makita ang html nga report. Kinahanglan nimong sulayan ang Artifact: kanunay

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

Gigamit ang vulnerability scanner alang sa gigamit nga mga librarya Dependency-Check sa GitlabCI

Pag-regulate sa lebel sa mga kahuyangan sa CVE

Ang labing importante nga linya sa gitlab-ci.yaml file:

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

Uban sa failBuildOnCVSS parameter mahimo nimong i-adjust ang lebel sa mga kahuyangan sa CVE diin kinahanglan nimo nga tubagon.

Pag-download sa NIST Vulnerability Database (NVD) gikan sa Internet

Namatikdan ba nimo nga ang NIST kanunay nga nag-download sa NIST vulnerability databases (NVD) gikan sa Internet:

Gigamit ang vulnerability scanner alang sa gigamit nga mga librarya Dependency-Check sa GitlabCI

Aron ma-download, mahimo nimong gamiton ang utility nist_data_mirror_golang

Atong i-install ug ilunsad kini.

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

Gi-upload sa Nist-data-mirror ang NIST JSON CVE sa /var/www/repos/nist-data-mirror/ sa pagsugod ug gi-update ang datos matag 24 oras.

Aron ma-download ang CVE JSON NIST, kinahanglan nimo nga i-configure ang nginx web server (pananglitan, sa imong gitlab-runner).

Pananglitan sa gamay nga nginx config:

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 {
    }

}

Aron dili makahimo ug taas nga linya diin ang mvn gilusad, atong ibalhin ang mga parametro ngadto sa lain nga variable DEPENDENCY_OPTS.

Ang katapusang minimal nga config .gitlab-ci.yml mahimong sama niini:

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

Telegram chat bahin sa DevOps ug Security
Telegram channel DevSecOps / SSDLC - Luwas nga pag-uswag

Source: www.habr.com

Idugang sa usa ka comment