Haavatavuste skannaatori kasutamine Dependency-Check raamatukogudes GitlabCI-s

Oluline osa haavatavuste juhtimisest on hĂ€sti mĂ”ista ja tagada tarkvara koostisosade tarnete ahela turvalisus, millest moodustuvad tĂ€napĂ€evased sĂŒsteemid. Agiilsed ja DevOps meetodeid praktiseerivad meeskonnad kasutavad laialdaselt avatud lĂ€htekoodiga raamatukogusid ja raame, et vĂ€hendada arendamise aega ja kulusid. Kuid sellel medalil on ka teine kĂŒlg: vĂ”imalus pĂ€rida teiste vigasid ja haavatavusi.

Ilmselt peab meeskond kindlasti teadma, millised avatud lÀhtekoodiga komponendid on nende rakendustes, jÀlgima, et usaldusvÀÀrsed versioonid allalaaditakse usaldusvÀÀrsetest allikatest, ning laadima vÀrskendatud versioonid komponente pÀrast hiljuti avastatud haavatavuste parendamist.

Selles postituses vaatleme OWASP Dependency Check kasutamist, et katkestada ehitamine, kui teie koodis tuvastatakse tÔsiseid probleeme.

Raamatus „Agile-projektide arendamise turvalisus” on see kirjas. OWASP Dependency Check on tasuta skanner, mis kataloogib kĂ”ik rakenduses kasutatavad avatud lĂ€htekoodiga komponendid ja nĂ€itab nende haavatavusi. Saadaval on versioonid Java, .NET, Ruby (gemspec), PHP (composer), Node.js ja Python jaoks, samuti mĂ”nede C/C++ projektide jaoks. Dependency Check integreerub laialdaselt kasutatavatesse ehitustööriistadesse, sealhulgas Ant, Maven ja Gradle, ning pideva integreerimise serveritesse nagu Jenkins.

Dependency Check teatab kÔigist komponentidest, millel on tuntud haavatavused, mis on kajastatud Rahvuslikus Haavatavuste Andmebaasis (NVD) NIST ja vÀrskendab andmeid NVD uudiste kanalite alusel.

Õnneks saab seda kĂ”ike automaatselt teha selliste tööriistade abil nagu OWASP Dependency Check projekt vĂ”i kaubanduslikud programmid tĂŒĂŒpi Black Duck, JFrog Xray, Snyk, Nexus Lifecycle Sonatype ettevĂ”tte poolt vĂ”i SourceClear.

Need tööriistad saab integreerida ehitustootmisse, et automaatselt koostada avatud lÀhtekoodiga sÔltuvuste loetelu, tuvastada vananenud raamatukogude versioone ja raamatukogusid, mis sisaldavad tuntud haavatavusi, ning peatada ehituse, kui avastatakse tÔsiseid probleeme.

OWASP Dependency Check

Kasutame selle repositooriumi Dependency Check'i testimiseks ja demonstreerimiseks dependency-check-example.

HTML-aruande vaatamiseks peate seadistama veebiserveri nginx oma gitlab-runner'is.

NĂ€ide minimaalsetest nginx-i seadistustest:

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

Kogumise lÔpus vÔite nÀha sellist pilti:

Haavatavuste skannaatori kasutamine Dependency-Check raamatukogudes GitlabCI-s

Minge lingile ja nÀete Dependency Check'i aruannet.

Esimene ekraanipilt — aruande ĂŒlemine osa kokkuvĂ”ttega.

Haavatavuste skannaatori kasutamine Dependency-Check raamatukogudes GitlabCI-s

Teine ekraanipilt CVE-2017-5638 detailidega. Siin nÀeme CVE taset ja linke eksploitidele.

Haavatavuste skannaatori kasutamine Dependency-Check raamatukogudes GitlabCI-s

Kolmas ekraanipilt log4j-api-2.7.jar detailidest. NĂ€eme, et CVE tasemed on 7.5 ja 9.8.

Haavatavuste skannaatori kasutamine Dependency-Check raamatukogudes GitlabCI-s

Neljas ekraanipilt commons-fileupload-1.3.2.jar detailidest. NĂ€eme, et CVE tasemed on 7.5 ja 9.8.

Haavatavuste skannaatori kasutamine Dependency-Check raamatukogudes GitlabCI-s

Kui soovite kasutada gitlab pages, siis see ei Ă”nnestu — ebaĂ”nnestunud ĂŒlesanne ei loo artefakti.

NĂ€ide siin https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

Kogumise vÀljund: artefakte pole, html aruannet ei nÀe. Peab proovima Artifact: always

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

Haavatavuste skannaatori kasutamine Dependency-Check raamatukogudes GitlabCI-s

CVE haavatavuste taseme reguleerimine

KÔige olulisem rida failis gitlab-ci.yaml:

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

FailBuildOnCVSS parameeteriga saate reguleerida CVE haavatavuste taset, millele tuleb reageerida.

Allalaadimine internetist haavatavuste andmebaasist (NVD) NIST

Olete mÀrganud, et allalaadite pidevalt haavatavuste andmebaase (NVD) NIST internetist:

Haavatavuste skannaatori kasutamine Dependency-Check raamatukogudes GitlabCI-s

Allalaadimiseks saate kasutada utiliiti nist_data_mirror_golang

Paigaldame ja kÀivitame selle.

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 laadib CVE JSON NIST alla /var/www/repos/nist-data-mirror/ kÀivitamisel ja uuendab andmeid iga 24 tunni jÀrel.

CVE JSON NIST allalaadimiseks on vaja seadistada web-server nginx (nt teie gitlab-runneris).

NĂ€ide minimaalsetest nginx-i seadistustest:

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

}

Kuna mvn kÀivitamiseks on pikk rida, siis viime parameetrid eraldi muutujasse DEPENDENCY_OPTS.

LÔplik minimaalne .gitlab-ci.yml konfiguratsioon saab olema jÀrgmine:

muutujad:
  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"

vahehoidla:
  teed:
    - .m2/repository

kontroll:
  etapp: test
  skript:
    - 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}
  sildid:
    - shell

Telegrami vestlus DevOpsi ja turvalisuse teemal
Telegrami kanal DevSecOps / SSDLC - Turvaline arendamine

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster