Sèvi ak eskanè vilnerabilite pou bibliyotèk yo itilize Dependency-Check nan GitlabCI

Yon pati enpòtan nan jesyon vilnerabilite se byen konprann ak sekirize chèn ekipman pou konpozan lojisyèl ki fòme sistèm modèn yo. Ekip ajil ak DevOps fè anpil itilizasyon bibliyotèk ak kad sous ouvè pou diminye tan ak pri devlopman. Men, meday sa a tou gen yon dezavantaj: opòtinite pou eritye erè ak vilnerabilite lòt moun.

Li evidan, ekip la ta dwe asire w ke ou konnen ki konpozan sous louvri yo enkli nan aplikasyon li yo, asire ke li te ye vèsyon serye yo telechaje soti nan sous li te ye serye, epi telechaje vèsyon mete ajou nan eleman apre frajilite ki fèk dekouvri yo patched.

Nan pòs sa a, nou pral gade lè l sèvi avèk OWASP Dependency Check pou abandone yon bati si li detekte pwoblèm grav ak kòd ou a.

Nan liv "Devlopman Sekirite nan Pwojè Agile" li dekri jan sa a. OWASP Dependency Check se yon eskanè gratis ki katalòg tout konpozan sous louvri yo itilize nan yon aplikasyon epi montre frajilite yo genyen. Gen vèsyon pou Java, .NET, Ruby (gemspec), PHP (konpozitè), Node.js ak Python, osi byen ke pou kèk pwojè C/C++. Dependency Check entegre ak zouti konstriksyon komen, tankou Ant, Maven ak Gradle, ak sèvè entegrasyon kontinyèl tankou Jenkins.

Dependency Check rapòte tout eleman ki gen frajilite li te ye nan baz done nasyonal vilnerabilite (NVD) NIST la epi li mete ajou ak done ki sòti nan nouvèl NVD yo.

Erezman, tout bagay sa yo ka fè otomatikman lè l sèvi avèk zouti tankou pwojè OWASP Dependency Check oswa pwogram komèsyal tankou Nwa kanna, JFrog Xray, Snyk, Sik lavi Nexus Sonatype oswa SourceClear.

Zouti sa yo ka enkli nan konstriksyon pipelines otomatikman envantè depandans sous louvri, idantifye vèsyon demode nan bibliyotèk ak bibliyotèk ki gen frajilite li te ye, ak avòte bati si yo detekte pwoblèm grav.

Tcheke Depandans OWASP

Pou teste ak demontre kijan Dependency Check fonksyone, nou itilize depo sa a depandans-chèk-egzanp.

Pou wè rapò HTML la, ou bezwen konfigirasyon sèvè entènèt nginx sou gitlab-runner ou a.

Egzanp yon konfigirasyon nginx minim:

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 {
    }
}

Nan fen asanble a ou ka wè foto sa a:

Sèvi ak eskanè vilnerabilite pou bibliyotèk yo itilize Dependency-Check nan GitlabCI

Swiv lyen an epi gade rapò Tcheke Depandans lan.

Premye ekran an se pati anlè rapò a ak yon rezime.

Sèvi ak eskanè vilnerabilite pou bibliyotèk yo itilize Dependency-Check nan GitlabCI

Dezyèm Ekran detay CVE-2017-5638. Isit la nou wè nivo CVE ak lyen ki mennen nan eksplwa.

Sèvi ak eskanè vilnerabilite pou bibliyotèk yo itilize Dependency-Check nan GitlabCI

Twazyèm Ekran an se detay sou log4j-api-2.7.jar. Nou wè ke nivo CVE yo se 7.5 ak 9.8.

Sèvi ak eskanè vilnerabilite pou bibliyotèk yo itilize Dependency-Check nan GitlabCI

Ekran katriyèm lan se detay sou commons-fileupload-1.3.2.jar. Nou wè ke nivo CVE yo se 7.5 ak 9.8.

Sèvi ak eskanè vilnerabilite pou bibliyotèk yo itilize Dependency-Check nan GitlabCI

Si ou vle sèvi ak paj gitlab, Lè sa a, li pa pral travay - yon travay tonbe pa pral kreye yon asosye.

Egzanp isit la https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

Bati pwodiksyon: pa gen okenn zafè, mwen pa wè rapò html la. Ou ta dwe eseye Artifact: toujou

https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages/-/jobs/400004246

Sèvi ak eskanè vilnerabilite pou bibliyotèk yo itilize Dependency-Check nan GitlabCI

Regilasyon nivo vilnerabilite CVE yo

Liy ki pi enpòtan nan dosye gitlab-ci.yaml:

mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7

Avèk paramèt failBuildOnCVSS ou ka ajiste nivo vilnerabilite CVE ou bezwen reponn.

Telechaje NIST Vulnerability Database (NVD) sou Entènèt la

Èske w remake ke NIST toujou telechaje baz done vilnerabilite NIST yo (NVD) soti nan entènèt la:

Sèvi ak eskanè vilnerabilite pou bibliyotèk yo itilize Dependency-Check nan GitlabCI

Pou telechaje, ou ka itilize sèvis piblik la nist_data_mirror_golang

Ann enstale epi lanse li.

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 telechaje NIST JSON CVE nan /var/www/repos/nist-data-mirror/ sou demaraj epi mete ajou done yo chak 24 èdtan.

Pou telechaje CVE JSON NIST, ou bezwen konfigirasyon sèvè entènèt nginx (pa egzanp, sou gitlab-runner ou).

Egzanp yon konfigirasyon nginx minim:

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 {
    }

}

Pou nou pa fè yon liy long kote mvn lanse, nou pral deplase paramèt yo nan yon varyab separe DEPENDENCY_OPTS.

Final minim konfigirasyon .gitlab-ci.yml la pral sanble sa a:

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

Telegram chat sou DevOps ak Sekirite
Chanèl Telegram DevSecOps / SSDLC - Devlopman an sekirite

Sous: www.habr.com

Add nouvo kòmantè