L-użu tal-iskaner tal-vulnerabbiltà għal libreriji użati Dependency-Check f'GitlabCI

Parti importanti mill-ġestjoni tal-vulnerabbiltà hija li tifhem sewwa u tiżgura l-katina tal-provvista tal-komponenti tas-softwer li jiffurmaw is-sistemi moderni. Timijiet b'aġilità u DevOps jagħmlu użu estensiv ta' libreriji u oqfsa ta' sors miftuħ biex inaqqsu l-ħin u l-ispiża tal-iżvilupp. Iżda din il-midalja għandha wkoll żvantaġġ: l-opportunità li tirret l-iżbalji u l-vulnerabbiltajiet ta 'nies oħrajn.

Ovvjament, it-tim għandu jkun żgur li jkun jaf liema komponenti ta 'sors miftuħ huma inklużi fl-applikazzjonijiet tiegħu, jiżgura li verżjonijiet affidabbli magħrufa jitniżżlu minn sorsi affidabbli magħrufa, u tniżżel verżjonijiet aġġornati ta' komponenti wara li l-vulnerabbiltajiet li għadhom kif ġew skoperti jiġu patched.

F'din il-kariga, se nħarsu lejn l-użu tal-Kontroll tad-Dipendenza OWASP biex twaqqaf build jekk tiskopri problemi serji bil-kodiċi tiegħek.

Fil-ktieb "Sigurtà ta 'żvilupp fi Proġetti Aġili" huwa deskritt kif ġej. OWASP Dependency Check huwa skaner b'xejn li jikkataloga l-komponenti kollha ta' sors miftuħ użati f'applikazzjoni u juri l-vulnerabbiltajiet li fihom. Hemm verżjonijiet għal Java, .NET, Ruby (gemspec), PHP (kompożitur), Node.js u Python, kif ukoll għal xi proġetti C/C++. Il-Kontroll tad-Dipendenza jintegra ma' għodod ta' bini komuni, inklużi Ant, Maven u Gradle, u servers ta' integrazzjoni kontinwa bħal Jenkins.

Il-Kontroll tad-Dipendenza jirrapporta l-komponenti kollha b'vulnerabbiltajiet magħrufa mid-Database Nazzjonali tal-Vulnerabbiltà (NVD) tal-NIST u huwa aġġornat b'dejta minn aħbarijiet tal-NVD.

Fortunatament, dan kollu jista’ jsir awtomatikament bl-użu ta’ għodod bħall-proġett OWASP Dependency Check jew programmi kummerċjali bħal Papra sewda, JFrog Xray, Snyk, Nexus Lifecycle Sonatype jew SorsClear.

Dawn l-għodod jistgħu jiġu inklużi fil-pipelines tal-bini biex awtomatikament inventarju tad-dipendenzi tas-sors miftuħ, jidentifika verżjonijiet skaduti ta 'libreriji u libreriji li jkun fihom vulnerabbiltajiet magħrufa, u abort builds jekk jinstabu problemi serji.

Kontroll tad-Dipendenza OWASP

Biex nittestjaw u nuru kif taħdem il-Kontroll tad-Dipendenza, nużaw dan ir-repożitorju dipendenza-kontroll-eżempju.

Biex tara r-rapport HTML, għandek bżonn tikkonfigura s-server tal-web nginx fuq il-gitlab-runner tiegħek.

Eżempju ta' konfigurazzjoni minima 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 {
    }
}

Fl-aħħar tal-assemblaġġ tista 'tara din l-istampa:

L-użu tal-iskaner tal-vulnerabbiltà għal libreriji użati Dependency-Check f'GitlabCI

Segwi l-link u ara r-rapport tal-Kontroll tad-Dipendenza.

L-ewwel screenshot hija l-parti ta 'fuq tar-rapport b'sommarju.

L-użu tal-iskaner tal-vulnerabbiltà għal libreriji użati Dependency-Check f'GitlabCI

Dettalji tat-tieni screenshot CVE-2017-5638. Hawnhekk naraw il-livell CVE u links għall-isfruttamenti.

L-użu tal-iskaner tal-vulnerabbiltà għal libreriji użati Dependency-Check f'GitlabCI

It-tielet screenshot hija dettalji ta 'log4j-api-2.7.jar. Naraw li l-livelli CVE huma 7.5 u 9.8.

L-użu tal-iskaner tal-vulnerabbiltà għal libreriji użati Dependency-Check f'GitlabCI

Ir-raba 'screenshot hija d-dettalji ta' commons-fileupload-1.3.2.jar. Naraw li l-livelli CVE huma 7.5 u 9.8.

L-użu tal-iskaner tal-vulnerabbiltà għal libreriji użati Dependency-Check f'GitlabCI

Jekk trid tuża paġni tal-gitlab, allura ma taħdimx - kompitu waqa 'ma joħloqx artifact.

Eżempju hawn https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

Ibni l-output: l-ebda artifacts, ma narax ir-rapport html. Għandek tipprova Artifact: dejjem

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

L-użu tal-iskaner tal-vulnerabbiltà għal libreriji użati Dependency-Check f'GitlabCI

Ir-regolazzjoni tal-livell tal-vulnerabbiltajiet CVE

L-aktar linja importanti fil-fajl gitlab-ci.yaml:

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

Bil-parametru failBuildOnCVSS tista' taġġusta l-livell ta' vulnerabbiltajiet CVE li trid tirrispondi għalihom.

Niżżel id-Database tal-Vulnerabbiltà NIST (NVD) mill-Internet

Innotajt li NIST kontinwament iniżżel id-databases tal-vulnerabbiltà NIST (NVD) mill-Internet:

L-użu tal-iskaner tal-vulnerabbiltà għal libreriji użati Dependency-Check f'GitlabCI

Biex tniżżel, tista 'tuża l-utilità nist_data_mirror_golang

Ejja ninstallawha u nnieduha.

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 itella n-NIST JSON CVE fuq /var/www/repos/nist-data-mirror/ mal-istartjar u jaġġorna d-dejta kull 24 siegħa.

Biex tniżżel CVE JSON NIST, trid tikkonfigura s-server tal-web nginx (per eżempju, fuq il-gitlab-runner tiegħek).

Eżempju ta' konfigurazzjoni minima 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 {
    }

}

Sabiex ma nagħmlux linja twila fejn titnieda mvn, aħna se nimxu l-parametri f'varjabbli separata DEPENDENCY_OPTS.

Il-konfigurazzjoni minima finali .gitlab-ci.yml se tidher bħal din:

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 dwar DevOps u s-Sigurtà
Kanal Telegram DevSecOps / SSDLC - Żvilupp sigur

Sors: www.habr.com

Żid kumment