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
Þ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
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:
Fylgdu hlekknum og sjáðu skýrsluna um ósjálfstæði.
Fyrsta skjáskotið er efsti hluti skýrslunnar með samantekt.
Önnur skjámynd upplýsingar CVE-2017-5638. Hér sjáum við CVE stigið og tengla á hetjudáð.
Þ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.
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.
Ef þú vilt nota gitlab síður, þá mun það ekki virka - fallið verkefni mun ekki búa til artifact.
Dæmi hér
Byggja framleiðsla: engir gripir, ég sé ekki html skýrsluna. Þú ættir að prófa Artifact: alltaf
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:
Til að hlaða niður geturðu notað tólið
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
Heimild: www.habr.com