Bagean penting saka manajemen kerentanan yaiku ngerti lan ngamanake rantai pasokan komponen piranti lunak sing nggawe sistem modern. Tim Agile lan DevOps nggunakake perpustakaan sumber terbuka lan kerangka kerja kanggo nyuda wektu lan biaya pangembangan. Nanging medali iki uga duwe kekurangan: kesempatan kanggo marisi kesalahan lan kerentanan wong liya.
Temenan, tim kudu ngerti komponen open source sing kalebu ing aplikasi kasebut, mesthekake yen versi sing dipercaya diundhuh saka sumber sing bisa dipercaya, lan ndownload versi komponen sing dianyari sawise kerentanan sing anyar ditemokake ditambal.
Ing kirim iki, kita bakal ndeleng nggunakake OWASP Dependency Check kanggo mbatalake mbangun yen ndeteksi masalah serius karo kode sampeyan.
Ing buku "Keamanan Pembangunan ing Proyek Agile" diterangake kaya ing ngisor iki. OWASP Dependency Check minangka scanner gratis sing menehi katalog kabeh komponen open source sing digunakake ing aplikasi lan nuduhake kerentanan sing ana. Ana versi Jawa, .NET, Ruby (gemspec), PHP (komposer), Node.js lan Python, uga kanggo sawetara proyek C/C ++. Dependency Check terintegrasi karo alat mbangun umum, kalebu Ant, Maven lan Gradle, lan server integrasi terus kaya Jenkins.
Dependency Check nglaporake kabeh komponen sing duwe kerentanan sing dikenal saka NIST's National Vulnerability Database (NVD) lan dianyari karo data saka feed warta NVD.
Untunge, kabeh iki bisa ditindakake kanthi otomatis nggunakake piranti kaya proyek OWASP Dependency Check utawa program komersial kaya
Piranti kasebut bisa dilebokake ing saluran pipa kanggo inventarisasi dependensi sumber terbuka kanthi otomatis, ngenali versi perpustakaan lan perpustakaan sing wis lawas sing ngemot kerentanan sing dikenal, lan mbatalake mbangun yen ana masalah serius.
Priksa Ketergantungan OWASP
Kanggo nyoba lan nduduhake cara kerjane Dependency Check, kita nggunakake gudang iki
Kanggo ndeleng laporan HTML, sampeyan kudu ngatur server web nginx ing gitlab-runner.
Conto konfigurasi nginx minimal:
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 {
}
}
Ing pungkasan perakitan sampeyan bisa ndeleng gambar iki:
Tindakake tautan lan deleng laporan Priksa Ketergantungan.
Gambar pisanan minangka bagean ndhuwur laporan kanthi ringkesan.
Rincian gambar kapindho CVE-2017-5638. Ing kene kita ndeleng level CVE lan pranala menyang eksploitasi.
Gambar katelu yaiku rincian log4j-api-2.7.jar. Kita weruh yen level CVE yaiku 7.5 lan 9.8.
Gambar kaping papat yaiku rincian commons-fileupload-1.3.2.jar. Kita weruh yen level CVE yaiku 7.5 lan 9.8.
Yen sampeyan pengin nggunakake kaca gitlab, mula ora bakal bisa - tugas sing tiba ora bakal nggawe artefak.
Tuladha ing kene
Mbangun output: ora ana artefak, aku ora weruh laporan html. Sampeyan kudu nyoba Artifact: tansah
Ngatur tingkat kerentanan CVE
Baris paling penting ing file gitlab-ci.yaml:
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7
Kanthi parameter failBuildOnCVSS sampeyan bisa nyetel tingkat kerentanan CVE sing sampeyan kudu nanggapi.
Ngundhuh NIST Vulnerability Database (NVD) saka Internet
Apa sampeyan ngerteni manawa NIST terus-terusan ndownload database kerentanan (NVD) NIST saka Internet:
Kanggo ngundhuh, sampeyan bisa nggunakake sarana
Ayo nginstal lan miwiti.
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 upload NIST JSON CVE menyang /var/www/repos/nist-data-mirror/ nalika wiwitan lan nganyari data saben 24 jam.
Kanggo ndownload CVE JSON NIST, sampeyan kudu ngatur server web nginx (contone, ing gitlab-runner).
Conto konfigurasi nginx minimal:
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 {
}
}
Supaya ora nggawe baris dawa ngendi mvn dibukak, kita bakal mindhah paramèter menyang variabel kapisah DEPENDENCY_OPTS.
Konfigurasi minimal pungkasan .gitlab-ci.yml bakal katon kaya iki:
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
Source: www.habr.com