Parti importanti mill-ġestjoni tal-vulnerabbiltà hija li tifhem sewwa u tiżgura l-katina tal-provvista tal-komponenti tas-softwer li jiffurmaw is-sistemi moderni. Timijiet b'aġilità u DevOps jagħmlu użu estensiv ta' libreriji u oqfsa ta' sors miftuħ biex inaqqsu l-ħin u l-ispiża tal-iżvilupp. Iżda din il-midalja għandha wkoll żvantaġġ: l-opportunità li tirret l-iżbalji u l-vulnerabbiltajiet ta 'nies oħrajn.
Ovvjament, it-tim għandu jkun żgur li jkun jaf liema komponenti ta 'sors miftuħ huma inklużi fl-applikazzjonijiet tiegħu, jiżgura li verżjonijiet affidabbli magħrufa jitniżżlu minn sorsi affidabbli magħrufa, u tniżżel verżjonijiet aġġornati ta' komponenti wara li l-vulnerabbiltajiet li għadhom kif ġew skoperti jiġu patched.
F'din il-kariga, se nħarsu lejn l-użu tal-Kontroll tad-Dipendenza OWASP biex twaqqaf build jekk tiskopri problemi serji bil-kodiċi tiegħek.
Fil-ktieb "Sigurtà ta 'żvilupp fi Proġetti Aġili" huwa deskritt kif ġej. OWASP Dependency Check huwa skaner b'xejn li jikkataloga l-komponenti kollha ta' sors miftuħ użati f'applikazzjoni u juri l-vulnerabbiltajiet li fihom. Hemm verżjonijiet għal Java, .NET, Ruby (gemspec), PHP (kompożitur), Node.js u Python, kif ukoll għal xi proġetti C/C++. Il-Kontroll tad-Dipendenza jintegra ma' għodod ta' bini komuni, inklużi Ant, Maven u Gradle, u servers ta' integrazzjoni kontinwa bħal Jenkins.
Il-Kontroll tad-Dipendenza jirrapporta l-komponenti kollha b'vulnerabbiltajiet magħrufa mid-Database Nazzjonali tal-Vulnerabbiltà (NVD) tal-NIST u huwa aġġornat b'dejta minn aħbarijiet tal-NVD.
Fortunatament, dan kollu jista’ jsir awtomatikament bl-użu ta’ għodod bħall-proġett OWASP Dependency Check jew programmi kummerċjali bħal
Dawn l-għodod jistgħu jiġu inklużi fil-pipelines tal-bini biex awtomatikament inventarju tad-dipendenzi tas-sors miftuħ, jidentifika verżjonijiet skaduti ta 'libreriji u libreriji li jkun fihom vulnerabbiltajiet magħrufa, u abort builds jekk jinstabu problemi serji.
Kontroll tad-Dipendenza OWASP
Biex nittestjaw u nuru kif taħdem il-Kontroll tad-Dipendenza, nużaw dan ir-repożitorju
Biex tara r-rapport HTML, għandek bżonn tikkonfigura s-server tal-web nginx fuq il-gitlab-runner tiegħek.
Eżempju ta' konfigurazzjoni minima nginx:
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 {
}
}
Fl-aħħar tal-assemblaġġ tista 'tara din l-istampa:
Segwi l-link u ara r-rapport tal-Kontroll tad-Dipendenza.
L-ewwel screenshot hija l-parti ta 'fuq tar-rapport b'sommarju.
Dettalji tat-tieni screenshot CVE-2017-5638. Hawnhekk naraw il-livell CVE u links għall-isfruttamenti.
It-tielet screenshot hija dettalji ta 'log4j-api-2.7.jar. Naraw li l-livelli CVE huma 7.5 u 9.8.
Ir-raba 'screenshot hija d-dettalji ta' commons-fileupload-1.3.2.jar. Naraw li l-livelli CVE huma 7.5 u 9.8.
Jekk trid tuża paġni tal-gitlab, allura ma taħdimx - kompitu waqa 'ma joħloqx artifact.
Eżempju hawn
Ibni l-output: l-ebda artifacts, ma narax ir-rapport html. Għandek tipprova Artifact: dejjem
Ir-regolazzjoni tal-livell tal-vulnerabbiltajiet CVE
L-aktar linja importanti fil-fajl gitlab-ci.yaml:
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7
Bil-parametru failBuildOnCVSS tista' taġġusta l-livell ta' vulnerabbiltajiet CVE li trid tirrispondi għalihom.
Niżżel id-Database tal-Vulnerabbiltà NIST (NVD) mill-Internet
Innotajt li NIST kontinwament iniżżel id-databases tal-vulnerabbiltà NIST (NVD) mill-Internet:
Biex tniżżel, tista 'tuża l-utilità
Ejja ninstallawha u nnieduha.
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 itella n-NIST JSON CVE fuq /var/www/repos/nist-data-mirror/ mal-istartjar u jaġġorna d-dejta kull 24 siegħa.
Biex tniżżel CVE JSON NIST, trid tikkonfigura s-server tal-web nginx (per eżempju, fuq il-gitlab-runner tiegħek).
Eżempju ta' konfigurazzjoni minima nginx:
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 {
}
}
Sabiex ma nagħmlux linja twila fejn titnieda mvn, aħna se nimxu l-parametri f'varjabbli separata DEPENDENCY_OPTS.
Il-konfigurazzjoni minima finali .gitlab-ci.yml se tidher bħal din:
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
Sors: www.habr.com