Yon pati enpòtan nan jesyon vilnerabilite se byen konprann ak sekirize chèn ekipman pou konpozan lojisyèl ki fòme sistèm modèn yo. Ekip ajil ak DevOps fè anpil itilizasyon bibliyotèk ak kad sous ouvè pou diminye tan ak pri devlopman. Men, meday sa a tou gen yon dezavantaj: opòtinite pou eritye erè ak vilnerabilite lòt moun.
Li evidan, ekip la ta dwe asire w ke ou konnen ki konpozan sous louvri yo enkli nan aplikasyon li yo, asire ke li te ye vèsyon serye yo telechaje soti nan sous li te ye serye, epi telechaje vèsyon mete ajou nan eleman apre frajilite ki fèk dekouvri yo patched.
Nan pòs sa a, nou pral gade lè l sèvi avèk OWASP Dependency Check pou abandone yon bati si li detekte pwoblèm grav ak kòd ou a.
Nan liv "Devlopman Sekirite nan Pwojè Agile" li dekri jan sa a. OWASP Dependency Check se yon eskanè gratis ki katalòg tout konpozan sous louvri yo itilize nan yon aplikasyon epi montre frajilite yo genyen. Gen vèsyon pou Java, .NET, Ruby (gemspec), PHP (konpozitè), Node.js ak Python, osi byen ke pou kèk pwojè C/C++. Dependency Check entegre ak zouti konstriksyon komen, tankou Ant, Maven ak Gradle, ak sèvè entegrasyon kontinyèl tankou Jenkins.
Dependency Check rapòte tout eleman ki gen frajilite li te ye nan baz done nasyonal vilnerabilite (NVD) NIST la epi li mete ajou ak done ki sòti nan nouvèl NVD yo.
Erezman, tout bagay sa yo ka fè otomatikman lè l sèvi avèk zouti tankou pwojè OWASP Dependency Check oswa pwogram komèsyal tankou
Zouti sa yo ka enkli nan konstriksyon pipelines otomatikman envantè depandans sous louvri, idantifye vèsyon demode nan bibliyotèk ak bibliyotèk ki gen frajilite li te ye, ak avòte bati si yo detekte pwoblèm grav.
Tcheke Depandans OWASP
Pou teste ak demontre kijan Dependency Check fonksyone, nou itilize depo sa a
Pou wè rapò HTML la, ou bezwen konfigirasyon sèvè entènèt nginx sou gitlab-runner ou a.
Egzanp yon konfigirasyon nginx minim:
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 {
}
}
Nan fen asanble a ou ka wè foto sa a:
Swiv lyen an epi gade rapò Tcheke Depandans lan.
Premye ekran an se pati anlè rapò a ak yon rezime.
Dezyèm Ekran detay CVE-2017-5638. Isit la nou wè nivo CVE ak lyen ki mennen nan eksplwa.
Twazyèm Ekran an se detay sou log4j-api-2.7.jar. Nou wè ke nivo CVE yo se 7.5 ak 9.8.
Ekran katriyèm lan se detay sou commons-fileupload-1.3.2.jar. Nou wè ke nivo CVE yo se 7.5 ak 9.8.
Si ou vle sèvi ak paj gitlab, Lè sa a, li pa pral travay - yon travay tonbe pa pral kreye yon asosye.
Egzanp isit la
Bati pwodiksyon: pa gen okenn zafè, mwen pa wè rapò html la. Ou ta dwe eseye Artifact: toujou
Regilasyon nivo vilnerabilite CVE yo
Liy ki pi enpòtan nan dosye gitlab-ci.yaml:
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7
Avèk paramèt failBuildOnCVSS ou ka ajiste nivo vilnerabilite CVE ou bezwen reponn.
Telechaje NIST Vulnerability Database (NVD) sou Entènèt la
Èske w remake ke NIST toujou telechaje baz done vilnerabilite NIST yo (NVD) soti nan entènèt la:
Pou telechaje, ou ka itilize sèvis piblik la
Ann enstale epi lanse li.
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 telechaje NIST JSON CVE nan /var/www/repos/nist-data-mirror/ sou demaraj epi mete ajou done yo chak 24 èdtan.
Pou telechaje CVE JSON NIST, ou bezwen konfigirasyon sèvè entènèt nginx (pa egzanp, sou gitlab-runner ou).
Egzanp yon konfigirasyon nginx minim:
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 {
}
}
Pou nou pa fè yon liy long kote mvn lanse, nou pral deplase paramèt yo nan yon varyab separe DEPENDENCY_OPTS.
Final minim konfigirasyon .gitlab-ci.yml la pral sanble sa a:
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
Sous: www.habr.com