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

ΠΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΏΠΎ Π»ΠΈΠ½ΠΊΠ° ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΎΡΡΠ΅ΡΠ° Dependency Check.
ΠΡΡΠ²ΠΈΡΡ Π΅ΠΊΡΠ°Π½Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ β Π³ΠΎΡΠ½Π°ΡΠ° ΡΠ°ΡΡ Π½Π° ΠΎΡΡΠ΅ΡΠ° Ρ ΠΊΡΠ°ΡΠΊΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅.

ΠΡΠΎΡΠΈΡΡ Π΅ΠΊΡΠ°Π½Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° 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 pages, ΡΠΎΠ²Π° Π½ΡΠΌΠ° Π΄Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ β ΠΏΠ°Π΄Π½Π°Π»Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π½ΡΠΌΠ° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡ.
ΠΡΠΈΠΌΠ΅Ρ ΡΡΠΊ .
ΠΠ·Ρ ΠΎΠ΄ ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ°: Π°ΡΡΠ΅ΡΠ°ΠΊΡΠΈ Π½ΡΠΌΠ°, HTML ΠΎΡΡΠ΅ΡΠ° Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌ. Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠ±Π²Π°ΡΠ΅ Artifact: always

Π Π΅Π³ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ CVE
ΠΠ°ΠΉ-Π²Π°ΠΆΠ½Π°ΡΠ° Π»ΠΈΠ½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π° gitlab-ci.yaml:
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7Π‘ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° failBuildOnCVSS ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅Π³ΡΠ»ΠΈΡΠ°ΡΠ΅ Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° CVE ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅, Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅Π°Π³ΠΈΡΠ°ΡΠ΅.
Π‘Π²Π°Π»ΡΠ½Π΅ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ (NVD) NIST ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ
ΠΠ°Π±Π΅Π»ΡΠ·Π°Ρ ΡΠ΅ Π»ΠΈ, ΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ²Π°Π»Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ (NVD) NIST ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ:

ΠΠ° ΡΠ²Π°Π»ΡΠ½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΠ°
ΠΠ΅ΠΊΠ° Ρ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅.
yum -y install yum-plugin-copr
yum copr enable antonpatsev\/nist_data_mirror_golang
yum -y install nist-data-mirror
systemctl start nist-data-mirrorNist-data-mirror ΡΠ²Π°Π»Ρ CVE JSON NIST Π² \/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 ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ:
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"
ΠΊΠ΅Ρ:
ΠΏΡΡΠΈΡΠ°:
- .m2/repository
ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°:
Π΅ΡΠ°ΠΏ: ΡΠ΅ΡΡ
ΡΠΊΡΠΈΠΏΡ:
- 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}
ΡΠ°Π³ΠΎΠ²Π΅:
- shell
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
