Benotzt de Schwachstelle Scanner fir benotzte Bibliothéiken Ofhängegkeet-Check am GitlabCI

E wichtege Bestanddeel vun der Schwachstellemanagement ass d'Versuergungskette vun de Softwarekomponenten déi modern Systemer ausmaachen grëndlech ze verstoen an ze sécheren. Agile an DevOps Teams maachen extensiv Notzung vun Open Source Bibliothéiken a Kaderen fir Entwécklungszäit a Käschten ze reduzéieren. Awer dës Medaille huet och en Nodeel: d'Méiglechkeet aner Leit hir Feeler a Schwachstelle ze ierwen.

Natierlech sollt d'Team sécher sinn ze wëssen wéi eng Open Source Komponenten a sengen Uwendungen abegraff sinn, sécherzestellen datt bekannte verlässlech Versioune vu bekannten zouverléissege Quellen erofgeluede ginn, an aktualiséiert Versioune vu Komponenten eroflueden nodeems nei entdeckte Schwachstelle gepatched sinn.

An dësem Post wäerte mir kucken op d'Benotzung vun OWASP Ofhängegkeet Check fir e Bau ofzebriechen wann et sérieux Probleemer mat Ärem Code erkennt.

Am Buch "Development Security in Agile Projects" gëtt et wéi follegt beschriwwen. OWASP Dependency Check ass e gratis Scanner, deen all Open Source Komponenten, déi an enger Applikatioun benotzt ginn, katalogiséiert an d'Schwächen weist, déi se enthalen. Et gi Versioune fir Java, .NET, Ruby (gemspec), PHP (Komponist), Node.js a Python, wéi och fir e puer C/C++ Projeten. Dependency Check integréiert mat gemeinsame Build Tools, dorënner Ant, Maven a Gradle, a kontinuéierlech Integratiounsserver wéi Jenkins.

Dependency Check bericht all Komponente mat bekannte Schwachstelle vun der NIST National Vulnerability Database (NVD) a gëtt mat Daten vun NVD Newsfeeds aktualiséiert.

Glécklecherweis kann dat alles automatesch gemaach ginn mat Tools wéi den OWASP Dependency Check Projet oder kommerziell Programmer wéi Schwaarzt Int, JFrog Röntgen, Snyk, Nexus Liewenszyklus Sonatyp bzw SourceClear.

Dës Tools kënnen a Pipelines gebaut ginn fir automatesch Open Source Ofhängegkeeten z'inventaréieren, al Versioune vu Bibliothéiken a Bibliothéiken z'identifizéieren déi bekannte Schwachstelle enthale sinn, a Bauen ofbriechen wann seriéis Probleemer festgestallt ginn.

OWASP Ofhängegkeet Check

Fir ze testen an ze demonstréieren wéi Ofhängegkeet Check funktionnéiert, benotze mir dëse Repository Ofhängegkeet-Check-Beispill.

Fir den HTML Bericht ze gesinn, musst Dir den nginx Webserver op Ärem gitlab-runner konfiguréieren.

Beispill vun enger minimaler nginx Config:

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

Um Enn vun der Assemblée kënnt Dir dëst Bild gesinn:

Benotzt de Schwachstelle Scanner fir benotzte Bibliothéiken Ofhängegkeet-Check am GitlabCI

Follegt de Link a kuckt de Dependency Check Bericht.

Den éischte Screenshot ass den ieweschten Deel vum Bericht mat engem Resumé.

Benotzt de Schwachstelle Scanner fir benotzte Bibliothéiken Ofhängegkeet-Check am GitlabCI

Zweet Screenshot Detailer CVE-2017-5638. Hei gesi mir den CVE Niveau a Linken op Ausnotzen.

Benotzt de Schwachstelle Scanner fir benotzte Bibliothéiken Ofhängegkeet-Check am GitlabCI

Den drëtten Screenshot ass Detailer vum log4j-api-2.7.jar. Mir gesinn datt CVE Niveauen 7.5 an 9.8 sinn.

Benotzt de Schwachstelle Scanner fir benotzte Bibliothéiken Ofhängegkeet-Check am GitlabCI

De véierte Screenshot ass d'Detailer vum Commons-fileupload-1.3.2.jar. Mir gesinn datt CVE Niveauen 7.5 an 9.8 sinn.

Benotzt de Schwachstelle Scanner fir benotzte Bibliothéiken Ofhängegkeet-Check am GitlabCI

Wann Dir Gitlab Säiten benotze wëllt, da funktionnéiert et net - eng gefall Aufgab erstellt keen Artefakt.

Beispill hei https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

Build Output: keng Artefakte, ech gesinn den HTML Bericht net. Dir sollt Artifact probéieren: ëmmer

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

Benotzt de Schwachstelle Scanner fir benotzte Bibliothéiken Ofhängegkeet-Check am GitlabCI

Reguléierung vum Niveau vun de CVE Schwachstelle

Déi wichtegst Linn an der gitlab-ci.yaml Datei:

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

Mat dem failBuildOnCVSS Parameter kënnt Dir den Niveau vun de CVE Schwachstelle upassen op déi Dir musst reagéieren.

Download vun der NIST Vulnerability Database (NVD) vum Internet

Hutt Dir gemierkt datt NIST stänneg d'NIST Vulnerabilitéitsdatenbanken (NVD) vum Internet erofluet:

Benotzt de Schwachstelle Scanner fir benotzte Bibliothéiken Ofhängegkeet-Check am GitlabCI

Fir erofzelueden, kënnt Dir den Utility benotzen nist_data_mirror_golang

Loosst eis et installéieren a starten.

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 lued den NIST JSON CVE op /var/www/repos/nist-data-mirror/ beim Startup erop an aktualiséiert d'Donnéeën all 24 Stonnen.

Fir CVE JSON NIST erofzelueden, musst Dir den nginx Webserver konfiguréieren (zum Beispill op Ärem gitlab-runner).

Beispill vun enger minimaler nginx Config:

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

}

Fir net eng laang Linn ze maachen wou mvn lancéiert gëtt, wäerte mir d'Parameteren an eng separat Variabel DEPENDENCY_OPTS réckelen.

Déi lescht minimal Config .gitlab-ci.yml wäert esou ausgesinn:

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 iwwer DevOps a Sécherheet
Telegram Channel DevSecOps / SSDLC - Séchert Entwécklung

Source: will.com

Kaaft zouverlässeg Hosting fir Site mat DDoS Schutz, VPS VDS Server 🔥 Kaaft zouverléissegt Websäithosting mat DDoS-Schutz, VPS VDS Server | ProHoster