ΠΠ°ΠΆΠ½Π° ΡΠ°ΡΡ ΠΎΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π΅ Π·Π°Π΄ΡΠ»Π±ΠΎΡΠ΅Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈ Π·Π°ΡΠΈΡΠ° Π½Π° Π²Π΅ΡΠΈΠ³Π°ΡΠ° Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Ρ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠΊΠΈΠΏΠΈΡΠ΅ Π½Π° Agile ΠΈ DevOps ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΈΡΠΎΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΠ°ΠΌΠΊΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΡΡ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΈ ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠΎ ΡΠΎΠ·ΠΈ ΠΌΠ΅Π΄Π°Π» ΠΈΠΌΠ° ΠΈ ΠΎΠ±ΡΠ°ΡΠ½Π° ΡΡΡΠ°Π½Π°: Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° Π½Π°ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈ Ρ ΠΎΡΠ°.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ Π΅ΠΊΠΈΠΏΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π΅ ΡΠΈΠ³ΡΡΠ΅Π½, ΡΠ΅ Π·Π½Π°Π΅ ΠΊΠΎΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈΡΠ΅ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ ΡΠ° ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½ΠΈ ΠΎΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ ΠΈ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π½ΠΎΠ²ΠΎΠΎΡΠΊΡΠΈΡΠΈΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π±ΡΠ΄Π°Ρ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΈ.
Π ΡΠ°Π·ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° OWASP Dependency Check Π·Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, Π°ΠΊΠΎ ΠΎΡΠΊΡΠΈΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ Π²Π°ΡΠΈΡ ΠΊΠΎΠ΄.
Π ΠΊΠ½ΠΈΠ³Π°ΡΠ° βΠ‘ΠΈΠ³ΡΡΠ½ΠΎΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π² Π³ΡΠ²ΠΊΠ°Π²ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈβ ΡΠΎΠ²Π° Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½. OWASP Dependency Check Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ ΡΠΊΠ΅Π½Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈΠ·ΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ. ΠΠΌΠ° Π²Π΅ΡΡΠΈΠΈ Π·Π° Java, .NET, Ruby (gemspec), PHP (ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΎΡ), Node.js ΠΈ Python, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π·Π° Π½ΡΠΊΠΎΠΈ C/C++ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° Ρ ΠΎΠ±ΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Ant, Maven ΠΈ Gradle, ΠΈ ΡΡΡΠ²ΡΡΠΈ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ ΠΊΠ°ΡΠΎ Jenkins.
ΠΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° ΠΎΡΡΠΈΡΠ° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΠ°ΡΠΈΠΎΠ½Π°Π»Π½Π°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ (NVD) Π½Π° NIST ΠΈ ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Ρ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π΅ΠΌΠΈΡΠΈΠΈΡΠ΅ Ρ Π½ΠΎΠ²ΠΈΠ½ΠΈ Π½Π° NVD.
ΠΠ° ΡΠ°ΡΡΠΈΠ΅, Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° OWASP Dependency Check ΠΈΠ»ΠΈ ΡΡΡΠ³ΠΎΠ²ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΊΠ°ΡΠΎ
Π’Π΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈΠ½Π²Π΅Π½ΡΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΠΈ, Π°ΠΊΠΎ Π±ΡΠ΄Π°Ρ ΠΎΡΠΊΡΠΈΡΠΈ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ OWASP
ΠΠ° Π΄Π° ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΠΈ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ°, Π½ΠΈΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠΎΠ²Π° Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅
ΠΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ HTML ΠΎΡΡΠ΅ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ΅Π± ΡΡΡΠ²ΡΡΠ° nginx Π½Π° Π²Π°ΡΠΈΡ gitlab-runner.
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° nginx:
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 ΠΈ Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ ΠΏΠΎΠ΄Π²ΠΈΠ·ΠΈ.
Π’ΡΠ΅ΡΠ°ΡΠ° Π΅ΠΊΡΠ°Π½Π½Π° ΡΠ½ΠΈΠΌΠΊΠ° Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° 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 ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅Π³ΡΠ»ΠΈΡΠ°ΡΠ΅ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° CVE ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅, Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈΡΠ΅.
ΠΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π½Π° NIST (NVD) ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ
ΠΠ°Π±Π΅Π»ΡΠ·Π°Π»ΠΈ Π»ΠΈ ΡΡΠ΅, ΡΠ΅ NIST ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈΠ·ΡΠ΅Π³Π»Ρ Π±Π°Π·ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π½Π° NIST (NVD) ΠΎΡ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ:
ΠΠ° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°
ΠΠ΅ΠΊΠ° Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅.
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).
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° nginx:
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.
ΠΡΠ°ΠΉΠ½Π°ΡΠ° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ .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
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com