Bagian penting tina manajemén kerentanan nyaéta ngartos sareng ngamankeun ranté suplai komponén parangkat lunak anu ngawangun sistem modéren. Tim Agile sareng DevOps ngagunakeun éksténsif perpustakaan open source sareng kerangka pikeun ngirangan waktos sareng biaya pangwangunan. Tapi medali ieu ogé boga downside a: kasempetan pikeun inherit kasalahan jeung vulnerabilities batur urang.
Jelas, tim kedah yakin terang komponén open source mana anu kalebet dina aplikasina, mastikeun yén versi anu dipercaya diunduh tina sumber anu tiasa dipercaya, sareng unduh vérsi komponén anu diropéa saatos kerentanan anu nembe kapendak ditambal.
Dina postingan ieu, urang bakal ningali ngagunakeun OWASP Dependency Check pikeun ngabatalkeun ngawangun upami éta ngadeteksi masalah serius sareng kode anjeun.
Dina buku "Development Security in Agile Projects" dijelaskeun kieu. OWASP Dependency Check mangrupikeun scanner gratis anu katalog sadaya komponén open source anu dianggo dina aplikasi sareng nunjukkeun kerentanan anu dikandungna. Aya versi pikeun Java, .NET, Ruby (gemspec), PHP (komposer), Node.js jeung Python, kitu ogé pikeun sababaraha proyék C / C ++. Dependency Check integrates sareng alat ngawangun umum, kalebet Ant, Maven sareng Gradle, sareng server integrasi kontinyu sapertos Jenkins.
Dependency Check ngalaporkeun sadaya komponén anu gaduh kerentanan anu dipikanyaho ti NIST's National Vulnerability Database (NVD) sareng diropéa nganggo data tina feed warta NVD.
Kabeneran, sadayana ieu tiasa dilakukeun sacara otomatis nganggo alat sapertos proyék OWASP Dependency Check atanapi program komérsial sapertos
Alat-alat ieu tiasa dilebetkeun dina ngawangun saluran pipa pikeun otomatis ngainventarisasi katergantungan sumber terbuka, ngaidentipikasi vérsi perpustakaan sareng perpustakaan kuno anu ngandung kerentanan anu dipikanyaho, sareng ngabatalkeun ngawangun upami aya masalah anu serius.
Cék Depéndénsi OWASP
Pikeun nguji sareng nunjukkeun kumaha Depéndency Check jalan, kami nganggo gudang ieu
Pikeun ningali laporan HTML, anjeun kedah ngonpigurasikeun pangladén wéb nginx dina gitlab-runner anjeun.
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 {
}
}
Dina ahir assembly anjeun tiasa ningali gambar ieu:
Turutan tautan sareng tingali laporan Pamariksaan Dependency.
Potret layar kahiji nyaéta bagian luhur laporan kalayan kasimpulan.
Rincian screenshot kadua CVE-2017-5638. Di dieu urang ningali tingkat CVE sareng numbu ka eksploitasi.
Potret layar katilu nyaéta detil log4j-api-2.7.jar. Kami ningali yén tingkat CVE nyaéta 7.5 sareng 9.8.
Potret layar kaopat nyaéta detil ngeunaan commons-fileupload-1.3.2.jar. Kami ningali yén tingkat CVE nyaéta 7.5 sareng 9.8.
Upami anjeun hoyong nganggo halaman gitlab, maka éta moal jalan - tugas anu murag moal nyiptakeun artefak.
Contona di dieu
Ngawangun kaluaran: euweuh artefak, abdi teu ningali laporan html. Anjeun kedah nyobian Artefak: salawasna
Ngatur tingkat kerentanan CVE
Garis anu paling penting dina file gitlab-ci.yaml:
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7
Kalayan parameter failBuildOnCVSS anjeun tiasa nyaluyukeun tingkat kerentanan CVE anu anjeun kedah réspon.
Ngundeur NIST Vulnerability Database (NVD) tina Internét
Naha anjeun perhatikeun yén NIST terus-terusan ngaunduh database kerentanan NIST (NVD) tina Internét:
Pikeun ngundeur, anjeun tiasa nganggo utiliti
Hayu urang pasang sareng jalankeunana.
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 unggah NIST JSON CVE ka /var/www/repos/nist-data-mirror/ dina ngamimitian sareng ngapdet data unggal 24 jam.
Pikeun ngundeur CVE JSON NIST, anjeun kedah ngonpigurasikeun pangladén wéb nginx (contona, dina gitlab-runner anjeun).
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 {
}
}
Dina raraga teu nyieun garis panjang dimana mvn dibuka, urang bakal mindahkeun parameter kana variabel misah DEPENDENCY_OPTS.
Konfigurasi minimal final .gitlab-ci.yml bakal siga kieu:
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
sumber: www.habr.com