á¡á¬ážáááºážáá»áẠá á®áá¶ááá·áºááœá²ááŸá¯á á¡áá±ážááŒá®ážáá±á¬ á¡á áááºá¡ááá¯ááºážááŸá¬ áá±ááºáá®á áá áºáá»á¬áž áááºáá®ážáá¬ážááá·áº áá±á¬á·ááºáá²áẠá¡á áááºá¡ááá¯ááºážáá»á¬áž á áá±á¬ááºáá¶á·áá±ážááœááºážáááºááᯠá á±á·á á±á·á ááºá áẠáá¬ážáááºááŒá®áž áá¯á¶ááŒá¯á¶á á±ááẠááŒá áºáááºá Agile ááŸáá·áº DevOps á¡ááœá²á·áá»á¬ážááẠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡áá»áááºááŸáá·áº áá¯ááºáá»á ááááºááᯠáá»áŸá±á¬á·áá»áááºá¡ááœáẠopen source á á¬ááŒáá·áºááá¯ááºáá»á¬ážááŸáá·áº áá°áá±á¬ááºáá»á¬ážááᯠáá»ááºáá»ááºááŒáá·áºááŒáá·áº á¡áá¯á¶ážááŒá¯ááŒáááºá áá«áá±ááá·áº áá®áá¯áá¶ááááºááŸá¬áááºáž á¡á¬ážáááºážáá»ááºááŸááá«áááº- á¡ááŒá¬ážáá°ááœá±áá²á· á¡ááŸá¬ážááœá±áá²á· á¡á¬ážáááºážáá»ááºááœá±ááᯠá¡ááœá±áááºáá¶ááá¯á· á¡ááœáá·áºá¡áá±ážááŸááá«áááºá
áá±áá»á¬áááºááŸá¬á á¡ááœá²á·ááẠáááºážáá¡ááá®áá±ážááŸááºážáá»á¬ážááœáẠáááºááá·áº open source á¡á áááºá¡ááá¯ááºážáá»á¬ážáá«áááºáááºááᯠáá±áá»á¬áááá¬ážááá·áºááŒá®áž áá¯á¶ááŒááºá áááºáá»ááá±á¬ áá¬ážááŸááºážáá»á¬ážááᯠááááŸáááŒá®áž áá¯á¶ááŒááºá áááºáá»ááá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážá០áá±á«ááºážáá¯ááºáá¯ááºáᬠá¡áá áºááœá±á·ááŸááá¬ážááá·áº á¡á¬ážáááºážáá»ááºáá»á¬ážááᯠáá¬áá±ážááŒá®ážáá±á¬áẠá¡á áááºá¡ááá¯ááºážáá»á¬ážá ááœááºážáá¶áá¬ážáá±á¬áá¬ážááŸááºážáá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºááẠáá±áá»á¬á á±ááá·áºáááºá
á€ááá¯á·á áºááœááºá ááá·áºáá¯ááºááŸáá·áºáááºáááºáá±á¬ ááá¯ážááœá¬ážáá±á¬ááŒá¿áá¬áá»á¬ážááᯠááœá±á·ááŸááá«á áááºáá±á¬ááºááŸá¯áá áºáá¯áá»ááºáá áºááẠOWASP ááŸá®ááá¯á á áºáá±ážááŒááºážááᯠá¡áá¯á¶ážááŒá¯á ááŒáá·áºááŸá¯áá«áááºá
âááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯á¶ááŒá¯á¶áá±ážá¡ááœáẠááœááºáááºáá±á¬ááá±á¬áá»ááºáá»á¬ážâ á á¬á¡á¯ááºááœáẠá¡á±á¬ááºáá«á¡ááá¯ááºážáá±á¬áºááŒáá¬ážáááºá OWASP Dependency Check ááẠá¡ááá®áá±ážááŸááºážáá áºáá¯ááœáẠá¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ open source á¡á áááºá¡ááá¯ááºážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠáááºááá±á¬ááºá á¬áááºážááŒá¯á á¯ááŒá®áž áááºážááá¯á·ááœááºááŸááá±á¬ á¡á¬ážáááºážáá»ááºáá»á¬ážááá¯ááŒáááá·áº á¡ááá²á·á áááºáá¬áá áºáá¯ááŒá áºáááºá Javaá .NETá Ruby (gemspec), PHP (composer), Node.js ááŸáá·áº Python ááŸáá·áº C/C++ ááá±á¬áá»ááºá¡áá»áá¯á·á¡ááœáẠáá¬ážááŸááºážáá»á¬ážááŸááá«áááºá Dependency Check ááẠAntá Maven ááŸáá·áº Gradle ááŸáá·áº Jenkins áá²á·ááá¯á· á ááºáááºáááŒáẠáá±á«ááºážá ááºáá¬áá¬áá»á¬ážá¡áá«á¡ááẠáá¯á¶áááºáá±á¬ááºááŸá¯áááááá¬áá»á¬ážááŸáá·áº áá±á«ááºážá ááºáá¬ážáááºá
Dependency Check ááẠNIST á National Vulnerability Database (NVD) á០áááá¬ážááá·áº á¡á¬ážáááºážáá»ááºáá»á¬ážááŸáááá·áº á¡á áááºá¡ááá¯ááºážá¡á¬ážáá¯á¶ážááᯠá¡á á®áááºáá¶ááŒá®áž NVD ááááºážááááºáá»á¬ážá០áá±áá¬áá»á¬ážááŒáá·áº á¡ááºááááºáá¯ááºáá¬ážáááºá
áá¶áá±á¬ááºážá
áœá¬ááŒáá·áºá á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠOWASP ááŸá®ááá¯ááŸá¯á
á
áºáá±ážááŒááºážááá±á¬áá»áẠááá¯á·ááá¯áẠá
á®ážááœá¬ážááŒá
áºáááá¯ááááºáá²á·ááá¯á·áá±á¬ áááááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááá¯ááºáááºá
á€áááááá¬áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠá á¬áááºážááœáá·áºááẠá¡áááºážá¡ááŒá ẠááŸá®ááá¯ááŸá¯ááŒá¯áá¯ááºááẠááá¯ááºááá¯ááºážáá»á¬áž ááœáẠááá·áºááœááºážááá¯ááºááŒá®ážá ááááŒá®ážáá¬áž á¡á¬ážáááºážáá»ááºáá»á¬ážáá«ááŸááá±á¬ ááááºá¡á±á¬ááºáá±áá±á¬ ááááºááááºááŒá² á á¬ááŒáá·áºááá¯ááºáá»á¬ážááŸáá·áº á á¬ááŒáá·áºááá¯ááºáá»á¬ážá áá¬ážááŸááºážáá»á¬ážááᯠááœá²ááŒá¬ážáááºááŸááºááá¯ááºááŒá®áž ááŒá®ážáá±ážáá±á¬ ááŒá¿áá¬áá»á¬ážááᯠááœá±á·ááŸááá«á áááºáá±á¬ááºááŸá¯ááᯠáááºáá»ááºááá¯ááºáááºá
OWASP ááŸá®ááá¯ááŸá¯á á áºáá±ážááŒááºážá
ááŸá®ááá¯ááŸá¯á
á
áºáá±ážáááºážááᯠá
ááºážáááºááŒá®áž ááá¯ááºááŒáááºá áá»áœááºá¯ááºááá¯á·ááẠá€ááááºážáááºážááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
HTML á¡á á®áááºáá¶á á¬ááá¯ááŒáá·áºááŸá¯áááºá áááºáááºáááºá gitlab-runner ááœáẠnginx áááºáá¬áá¬ááᯠconfigure áá¯ááºáááºááá¯á¡ááºáááºá
á¡áááºážáá¯á¶áž 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 {
}
}
á ááºážáá±ážááœá²á¡áá¯á¶ážááœáẠá€áá¯á¶ááᯠáááºááŒááºááá¯ááºáááº-
ááá·áºááºááᯠááá¯ááºáá¬ááŒá®áž ááŸá®ááá¯ááŸá¯ á á áºáá±ážááŒááºáž á¡á á®áááºáá¶á á¬ááᯠááŒáá·áºáá«á
áááá ááááºááŸá±á¬á·áá¯á¶ááẠá¡áá»ááºážáá»á¯ááºááŸáá·áºá¡áá° á¡á á®áááºáá¶á á¬áááááºááá¯ááºážááŒá áºáááºá
áá¯ááá áááºáá¬ážááŒááºáá¬ááºáá¯á¶á¡áá±ážá ááẠCVE-2017-5638á á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠCVE á¡ááá·áºááŸáá·áº exploits áá»á¬ážáá®ááá¯á· ááá·áºááºáá»á¬ážááᯠááœá±á·áááºá
ááááá ááááºááŸá±á¬á·áá¯á¶ááẠlog4j-api-2.7.jar áá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááŒá áºáááºá CVE á¡ááá·áºáá»á¬ážááẠ7.5 ááŸáá·áº 9.8 ááŒá áºááẠá
á áá¯áá¹áá ááááºááŸá±á¬á·áá¯á¶ááẠcommons-fileupload-1.3.2.jar áá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááŒá áºáááºá CVE á¡ááá·áºáá»á¬ážááẠ7.5 ááŸáá·áº 9.8 ááŒá áºááẠá
á¡áááºá áááºááẠgitlab á á¬áá»ááºááŸá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯áá«á áááºážááẠá¡áá¯ááºáááŒá áºáá« - áá»áááºážááœá¬ážáá±á¬ áá¯ááºáá±á¬ááºá áá¬ááẠáááºáá¬áá áºáá¯ááᯠáááºáá®ážáááºááá¯ááºáá«á
á¥ááᬠáá®ááŸá¬
áá¯ááºáá±ážááŸá¯áááºáá±á¬ááºááŒááºáž- ááŸá±ážáá±á¬ááºážáá á¹á ááºážáá»á¬ážáááŸááá«á html á¡á á®áááºáá¶á á¬ááᯠáá»áœááºá¯ááºáááœá±á·áá«á Artifact- á¡ááŒá²ááŒáá¯ážá á¬ážááá·áºáááºá
CVE á¡á¬ážáááºážáá»ááºáá»á¬áž á¡ááá·áºááᯠááááºážááŸáááŒááºážá
gitlab-ci.yaml ááá¯ááºááŸá á¡áá±ážááŒá®ážáá¯á¶ážá á¬ááŒá±á¬ááºáž
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7
failBuildOnCVSS parameter ááŒáá·áº áááºáá¯á¶á·ááŒááºáááºááá¯á¡ááºááá·áº CVE á¡á¬ážáááºážáá»ááºá¡ááá·áºááᯠáá»áááºááŸáááá¯ááºáááºá
NIST Vulnerability Database (NVD) ááᯠá¡ááºáá¬áááºá០áá±á«ááºážáá¯ááºáá¯ááºáá±áááºá
NIST ááẠNIST vulnerability databases (NVD) ááᯠá¡ááºáá¬áááºá០á¡áááºáááŒáẠáá±á«ááºážáá¯ááºáá¯ááºáááºááᯠáááááŒá¯áááá«ááá¬ážá
áá±á«ááºážáá¯ááºáá¯ááºáááºá áááºááẠutility ááá¯áá¯á¶ážááá¯ááºáááºá
ááá·áºááœááºážááŒá®áž á áááºááá¯ááºáá¡á±á¬ááºá
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 ááẠNIST JSON CVE ááᯠ/var/www/repos/nist-data-mirror/ ááá¯á· ááœáŸáá·áºáááºááŒá®áž 24 áá¬áá®ááá¯ááºáž áá±áá¬ááᯠá¡ááºááááºáá¯ááºáá«áááºá
CVE JSON NIST ááá¯áá±á«ááºážáá¯ááºáá¯ááºáááºá áááºááẠnginx áááºáá¬áᬠ(á¥ááá¬á áááºá gitlab-runner) ááᯠconfigure áá¯ááºááẠááá¯á¡ááºáááºá
á¡áááºážáá¯á¶áž 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 {
}
}
mvn á áááºááá·áºáá±áá¬ááœáẠááŸááºáá»á¬ážáá±á¬áá»ááºážááᯠáááŒá¯áá¯ááºáááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠááá·áºáááºáá»ááºáá»á¬ážááᯠáá®ážááŒá¬ážááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ DEPENDENCY_OPTS ááá¯á· ááœáŸá±á·áá«áááºá
áá±á¬ááºáá¯á¶ážá¡áá±ážáá¯á¶áž config .gitlab-ci.yml ááẠá€áá²á·ááá¯á·ááŒá áºáá±áááá·áºáááº-
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