рдЬреЛрдЦрд┐рдо рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирдХреЛ рдПрдЙрдЯрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рднрд╛рдЧ рднрдиреЗрдХреЛ рдЖрдзреБрдирд┐рдХ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдмрдирд╛рдЙрдиреЗ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдХреЛ рдЖрдкреВрд░реНрддрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛рд▓рд╛рдИ рд░рд╛рдореНрд░рд░реА рдмреБрдЭреНрди рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдЧрд░реНрдиреБ рд╣реЛред Agile рд░ DevOps рдЯреЛрд▓реАрд╣рд░реВрд▓реЗ рд╡рд┐рдХрд╛рд╕ рд╕рдордп рд░ рд▓рд╛рдЧрдд рдХрдо рдЧрд░реНрди рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рд░ рдлреНрд░реЗрдорд╡рд░реНрдХрд╣рд░реВрдХреЛ рд╡реНрдпрд╛рдкрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреНред рддрд░ рдпреЛ рдкрджрдХрдХреЛ рдкрдирд┐ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдЫ: рдЕрд░реВ рдорд╛рдирд┐рд╕рд╣рд░реВрдХрд╛ рдЧрд▓реНрддреАрд╣рд░реВ рд░ рдХрдордЬреЛрд░реАрд╣рд░реВрд▓рд╛рдИ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдмрдирд╛рдЙрдиреЗ рдЕрд╡рд╕рд░ред
рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛, рдЯреЛрд▓реАрд▓реЗ рдЖрдлреНрдиреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рдХреБрди рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН рднрдиреЗрд░ рдЬрд╛рдиреНрди рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрдиреБрдкрд░реНрджрдЫ, рдЬреНрдЮрд╛рдд рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдЬреНрдЮрд╛рдд рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрд░реЛрддрд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рднрд░реНрдЦрд░реИ рдкрддреНрддрд╛ рд▓рд╛рдЧреЗрдХреЛ рдХрдордЬреЛрд░реАрд╣рд░реВ рдкреНрдпрд╛рдЪ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдХреЛ рдЕрдкрдбреЗрдЯ рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдпрд╕ рдкреЛрд╖реНрдЯрдорд╛, рд╣рд╛рдореА рдирд┐рд░реНрдорд╛рдг рд░рджреНрдж рдЧрд░реНрди OWASP рдирд┐рд░реНрднрд░рддрд╛ рдЬрд╛рдБрдЪ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВ рдпрджрд┐ рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рдХреЛрдбрдорд╛ рдЧрдореНрднреАрд░ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдпреЛ рднрдиреЗред
"рдПрдЬрд╛рдЗрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдорд╛ рд╡рд┐рдХрд╛рд╕ рд╕реБрд░рдХреНрд╖рд╛" рдкреБрд╕реНрддрдХрдорд╛ рдпрд╕рд▓рд╛рдИ рдирд┐рдореНрди рд░реВрдкрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫред OWASP рдирд┐рд░реНрднрд░рддрд╛ рдЬрд╛рдБрдЪ рдПрдХ рдирд┐: рд╢реБрд▓реНрдХ рд╕реНрдХреНрдпрд╛рдирд░ рд╣реЛ рдЬрд╕рд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХрд╛ рд╕рдмреИ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╕реВрдЪреАрдХреГрдд рдЧрд░реНрджрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрдорд╛ рд░рд╣реЗрдХрд╛ рдХрдордЬреЛрд░реАрд╣рд░реВ рджреЗрдЦрд╛рдЙрдБрджрдЫред рддреНрдпрд╣рд╛рдБ Java, .NET, Ruby (gemspec), PHP (рдХрдореНрдкреЛрдЬрд░), Node.js рд░ Python, рд╕рд╛рдереИ рдХреЗрд╣реА C/C++ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдЫрдиреНред рдбрд┐рдкреЗрдиреНрдбреЗрдиреНрд╕реА рдЪреЗрдХ рдПрдиреНрдЯ, рдорд╛рднреЗрди рд░ рдЧреНрд░реЗрдбрд▓, рд░ рдЬреЗрдирдХрд┐рдиреНрд╕ рдЬрд╕реНрддрд╛ рдирд┐рд░рдиреНрддрд░ рдПрдХреАрдХрд░рдг рд╕рд░реНрднрд░рд╣рд░реВ рд╕рд╣рд┐рдд рд╕рд╛рдЭрд╛ рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдгрд╣рд░реВрд╕рдБрдЧ рдПрдХреАрдХреГрдд рд╣реБрдиреНрдЫред
рдирд┐рд░реНрднрд░рддрд╛ рдЬрд╛рдБрдЪрд▓реЗ NIST рдХреЛ рд░рд╛рд╖реНрдЯреНрд░рд┐рдп рдЬреЛрдЦрд┐рдо рдбрд╛рдЯрд╛рдмреЗрд╕ (NVD) рдмрд╛рдЯ рдЬреНрдЮрд╛рдд рдХрдордЬреЛрд░реАрд╣рд░реВ рднрдПрдХрд╛ рд╕рдмреИ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрджрдЫ рд░ NVD рд╕рдорд╛рдЪрд╛рд░ рдлрд┐рдбрд╣рд░реВрдмрд╛рдЯ рдбрд╛рдЯрд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫред
рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐, рдпреЛ рд╕рдмреИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ OWASP рдирд┐рд░реНрднрд░рддрд╛ рдЬрд╛рдБрдЪ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд╛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВ рдЬрд╕реНрддреИред
рдпреА рдЙрдкрдХрд░рдгрд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдЗрдиреНрднреЗрдиреНрдЯрд░реА рдЧрд░реНрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдирд╣рд░реВ рдирд┐рд░реНрдорд╛рдгрдорд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рд░ рдЬреНрдЮрд╛рдд рдХрдордЬреЛрд░реАрд╣рд░реВ рднрдПрдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рдкреБрд░рд╛рдиреЛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди, рд░ рдЧрдореНрднреАрд░ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрддреНрддрд╛ рд▓рд╛рдЧреЗрдорд╛ рдирд┐рд░реНрдорд╛рдг рд░рджреНрдж рдЧрд░реНрдиреБрд╣реЛрд╕реНред
OWASP рдирд┐рд░реНрднрд░рддрд╛ рдЬрд╛рдБрдЪ
рдирд┐рд░реНрднрд░рддрд╛ рдЬрд╛рдБрдЪ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрджрдЫ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рд░ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди, рд╣рд╛рдореА рдпреЛ рднрдгреНрдбрд╛рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВ
HTML рд░рд┐рдкреЛрд░реНрдЯ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ рдЖрдлреНрдиреЛ gitlab-runner рдорд╛ nginx рд╡реЗрдм рд╕рд░реНрднрд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
рдиреНрдпреВрдирддрдо 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 рд░рд┐рдкреЛрд░реНрдЯ рджреЗрдЦреНрджрд┐рдиред рддрдкрд╛рдИрдВрд▓реЗ рдХрд▓рд╛рдХреГрддрд┐ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрдкрд░реНрдЫ: рд╕рдзреИрдВ
CVE рдХрдордЬреЛрд░реАрд╣рд░реВрдХреЛ рд╕реНрддрд░ рд╡рд┐рдирд┐рдпрдорд┐рдд рдЧрд░реНрджреИ
gitlab-ci.yaml рдлрд╛рдЗрд▓рдорд╛ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реЗрдЦрд╛:
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7
FailBuildOnCVSS рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рдХреЛ рд╕рд╛рде рддрдкрд╛рдИрдВрд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ CVE рдХрдордЬреЛрд░реАрд╣рд░реВрдХреЛ рд╕реНрддрд░ рд╕рдорд╛рдпреЛрдЬрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
рдЗрдиреНрдЯрд░рдиреЗрдЯрдмрд╛рдЯ NIST Vulnerability Database (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/ рдорд╛ рдЕрдкрд▓реЛрдб рдЧрд░реНрдЫ рд░ рд╣рд░реЗрдХ реирек рдШрдгреНрдЯрд╛рдорд╛ рдбрд╛рдЯрд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдЫред
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