Usa ka hinungdanon nga bahin sa pagdumala sa pagkahuyang mao ang hingpit nga pagsabut ug pagsiguro sa kadena sa suplay sa mga sangkap sa software nga naglangkob sa mga modernong sistema. Ang mga grupo sa Agile ug DevOps kay naggamit sa mga open source nga librarya ug mga frameworks aron makunhuran ang oras ug gasto sa pag-uswag. Apan kini nga medalya usab adunay usa ka kalisud: ang oportunidad nga makapanunod sa mga kasaypanan ug kahuyang sa ubang mga tawo.
Dayag nga, ang team kinahanglan nga sigurado nga mahibal-an kung unsang mga bukas nga gigikanan nga mga sangkap ang gilakip sa mga aplikasyon niini, pagsiguro nga ang nahibal-an nga kasaligan nga mga bersyon ma-download gikan sa nahibal-an nga kasaligan nga mga gigikanan, ug mag-download sa mga bag-ong bersyon sa mga sangkap pagkahuman natambalan ang bag-ong nadiskubre nga mga kahuyangan.
Sa kini nga post, atong tan-awon ang paggamit sa OWASP Dependency Check aron i-abort ang usa ka pagtukod kung kini makamatikod sa mga seryoso nga problema sa imong code.
Sa libro nga "Development Security in Agile Projects" gihulagway kini sa mosunod. Ang OWASP Dependency Check usa ka libre nga scanner nga naglista sa tanan nga bukas nga gigikanan nga sangkap nga gigamit sa usa ka aplikasyon ug gipakita ang mga kahuyangan nga naa niini. Adunay mga bersyon alang sa Java, .NET, Ruby (gemspec), PHP (composer), Node.js ug Python, ingon man sa pipila ka mga proyekto sa C/C++. Ang Dependency Check nag-uban sa komon nga mga himan sa pagtukod, lakip ang Ant, Maven ug Gradle, ug padayon nga integration server sama sa Jenkins.
Gi-report sa Dependency Check ang tanan nga mga sangkap nga adunay nahibal-an nga mga kahuyangan gikan sa NIST's National Vulnerability Database (NVD) ug gi-update sa datos gikan sa mga feed sa balita sa NVD.
Maayo na lang, kining tanan mahimo nga awtomatiko gamit ang mga himan sama sa OWASP Dependency Check nga proyekto o komersyal nga mga programa sama
Kini nga mga himan mahimong iapil sa pagtukod sa mga linya sa tubo aron awtomatiko nga mag-imbentaryo sa mga dependency sa bukas nga gigikanan, mahibal-an ang mga karaan nga bersyon sa mga librarya ug librarya nga adunay nahibal-an nga mga kahuyangan, ug i-abort ang mga pagtukod kung makit-an ang mga seryoso nga problema.
OWASP Dependency Check
Aron sulayan ug ipakita kung giunsa ang Pagsusi sa Dependency, gigamit namon kini nga repository
Aron matan-aw ang HTML nga report, kinahanglan nimo nga i-configure ang nginx web server sa imong gitlab-runner.
Pananglitan sa gamay nga nginx config:
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 {
}
}
Sa katapusan sa asembliya imong makita kini nga hulagway:
Sunda ang link ug tan-awa ang Dependency Check report.
Ang unang screenshot mao ang pinakataas nga bahin sa report nga adunay summary.
Ikaduha nga mga detalye sa screenshot CVE-2017-5638. Dinhi atong makita ang lebel sa CVE ug mga link sa mga pagpahimulos.
Ang ikatulo nga screenshot mao ang mga detalye sa log4j-api-2.7.jar. Nakita namon nga ang lebel sa CVE 7.5 ug 9.8.
Ang ikaupat nga screenshot mao ang mga detalye sa commons-fileupload-1.3.2.jar. Nakita namon nga ang lebel sa CVE 7.5 ug 9.8.
Kung gusto nimo gamiton ang mga panid sa gitlab, nan dili kini molihok - ang usa ka nahulog nga buluhaton dili maghimo usa ka artifact.
Pananglitan dinhi
Pagtukod og output: walay artifact, wala nako makita ang html nga report. Kinahanglan nimong sulayan ang Artifact: kanunay
Pag-regulate sa lebel sa mga kahuyangan sa CVE
Ang labing importante nga linya sa gitlab-ci.yaml file:
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7
Uban sa failBuildOnCVSS parameter mahimo nimong i-adjust ang lebel sa mga kahuyangan sa CVE diin kinahanglan nimo nga tubagon.
Pag-download sa NIST Vulnerability Database (NVD) gikan sa Internet
Namatikdan ba nimo nga ang NIST kanunay nga nag-download sa NIST vulnerability databases (NVD) gikan sa Internet:
Aron ma-download, mahimo nimong gamiton ang utility
Atong i-install ug ilunsad kini.
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
Gi-upload sa Nist-data-mirror ang NIST JSON CVE sa /var/www/repos/nist-data-mirror/ sa pagsugod ug gi-update ang datos matag 24 oras.
Aron ma-download ang CVE JSON NIST, kinahanglan nimo nga i-configure ang nginx web server (pananglitan, sa imong gitlab-runner).
Pananglitan sa gamay nga nginx config:
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 {
}
}
Aron dili makahimo ug taas nga linya diin ang mvn gilusad, atong ibalhin ang mga parametro ngadto sa lain nga variable DEPENDENCY_OPTS.
Ang katapusang minimal nga config .gitlab-ci.yml mahimong sama niini:
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