Notkun varnarleysisskanna fyrir notuð bókasöfn Dependency-Check í GitlabCI

Mikilvægur hluti af varnarleysisstjórnun er að skilja til hlítar og tryggja aðfangakeðju þeirra hugbúnaðarhluta sem mynda nútíma kerfi. Agile og DevOps teymi nota víðtæka notkun opinn uppspretta bókasöfn og ramma til að draga úr þróunartíma og kostnaði. En þessi medalía hefur líka galla: tækifærið til að erfa mistök og veikleika annarra.

Augljóslega ætti teymið að vera viss um að vita hvaða opinn uppspretta íhlutir eru innifalinn í forritum þess, tryggja að þekktum áreiðanlegum útgáfum sé hlaðið niður frá þekktum áreiðanlegum heimildum og hlaða niður uppfærðum útgáfum af íhlutum eftir að nýuppgötvuðum veikleikum hefur verið lagfært.

Í þessari færslu munum við skoða notkun OWASP Dependency Check til að hætta við byggingu ef hún finnur alvarleg vandamál með kóðann þinn.

Í bókinni „Þróunaröryggi í lipur verkefnum“ er því lýst sem hér segir. OWASP Dependency Check er ókeypis skanni sem skráir alla opna íhluti sem notaðir eru í forriti og sýnir veikleikana sem þeir innihalda. Það eru útgáfur fyrir Java, .NET, Ruby (gemspec), PHP (tónskáld), Node.js og Python, sem og fyrir sum C/C++ verkefni. Dependency Check er samþætt við algeng byggingarverkfæri, þar á meðal Ant, Maven og Gradle, og samfellda samþættingarþjóna eins og Jenkins.

Dependency Check greinir frá öllum íhlutum með þekkta veikleika úr National Vulnerability Database (NVD) NIST og er uppfærður með gögnum frá NVD fréttastraumum.

Sem betur fer er allt þetta hægt að gera sjálfkrafa með því að nota verkfæri eins og OWASP Dependency Check verkefnið eða viðskiptaforrit eins og Svartur önd, JFrog röntgenmynd, Snyk, Lífsferill Nexus Sónatýpa eða SourceClear.

Þessi verkfæri geta verið innifalin í smíðisleiðslum til að skrá sjálfkrafa opinn uppspretta ósjálfstæði, bera kennsl á gamaldags útgáfur af bókasöfnum og bókasöfnum sem innihalda þekkta veikleika og hætta við smíði ef alvarleg vandamál finnast.

OWASP ósjálfstæði

Til að prófa og sýna fram á hvernig Dependency Check virkar notum við þessa geymslu ávanaeftirlitsdæmi.

Til að skoða HTML skýrsluna þarftu að stilla nginx vefþjóninn á gitlab-runnerinn þinn.

Dæmi um lágmarks nginx stillingar:

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

Í lok þingsins má sjá þessa mynd:

Notkun varnarleysisskanna fyrir notuð bókasöfn Dependency-Check í GitlabCI

Fylgdu hlekknum og sjáðu skýrsluna um ósjálfstæði.

Fyrsta skjáskotið er efsti hluti skýrslunnar með samantekt.

Notkun varnarleysisskanna fyrir notuð bókasöfn Dependency-Check í GitlabCI

Önnur skjámynd upplýsingar CVE-2017-5638. Hér sjáum við CVE stigið og tengla á hetjudáð.

Notkun varnarleysisskanna fyrir notuð bókasöfn Dependency-Check í GitlabCI

Þriðja skjáskotið er upplýsingar um log4j-api-2.7.jar. Við sjáum að CVE stigin eru 7.5 og 9.8.

Notkun varnarleysisskanna fyrir notuð bókasöfn Dependency-Check í GitlabCI

Fjórða skjáskotið er upplýsingar um commons-fileupload-1.3.2.jar. Við sjáum að CVE stigin eru 7.5 og 9.8.

Notkun varnarleysisskanna fyrir notuð bókasöfn Dependency-Check í GitlabCI

Ef þú vilt nota gitlab síður, þá mun það ekki virka - fallið verkefni mun ekki búa til artifact.

Dæmi hér https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

Byggja framleiðsla: engir gripir, ég sé ekki html skýrsluna. Þú ættir að prófa Artifact: alltaf

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

Notkun varnarleysisskanna fyrir notuð bókasöfn Dependency-Check í GitlabCI

Að stjórna stigi CVE varnarleysis

Mikilvægasta línan í gitlab-ci.yaml skránni:

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

Með failBuildOnCVSS færibreytunni geturðu stillt magn CVE veikleika sem þú þarft að bregðast við.

Að hlaða niður NIST Vulnerability Database (NVD) af netinu

Hefur þú tekið eftir því að NIST halar stöðugt niður NIST varnarleysisgagnagrunnum (NVD) af netinu:

Notkun varnarleysisskanna fyrir notuð bókasöfn Dependency-Check í GitlabCI

Til að hlaða niður geturðu notað tólið nist_data_mirror_golang

Við skulum setja það upp og ræsa það.

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

Nist-data-mirror hleður upp NIST JSON CVE á /var/www/repos/nist-data-mirror/ við ræsingu og uppfærir gögnin á 24 klukkustunda fresti.

Til að hlaða niður CVE JSON NIST þarftu að stilla nginx vefþjóninn (til dæmis á gitlab-runnerinn þinn).

Dæmi um lágmarks nginx stillingar:

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

}

Til þess að gera ekki langa línu þar sem mvn er ræst, munum við færa færibreyturnar í sérstaka breytu DEPENDENCY_OPTS.

Síðasta lágmarksstillingin .gitlab-ci.yml mun líta svona út:

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 spjall um DevOps og öryggi
Telegram rás DevSecOps / SSDLC - Örugg þróun

Heimild: www.habr.com

Bæta við athugasemd