RĂŒnnakute tuvastamise skanneri kasutamine sĂ”ltuvuste kontrollimiseks GitlabCI-s

Oluline osa haavatavuste haldamisest seisneb selles, et mĂ”ista ja tagada tarkvara komponentide tarneahela turvalisus, millest tĂ€napĂ€evased sĂŒsteemid koosnevad. Meeskonnad, kes praktiseerivad paindlikke meetodeid ja DevOps'i, kasutavad laialdaselt avatud lĂ€htekoodiga raamatukogusid ja raame, et vĂ€hendada arendamise aega ja kulusid. Kuid sellel medalil on ka tagumine pool: vĂ”imalus pĂ€rida teiste vigu ja haavatavusi.

Ilmselt peab meeskond kindlasti teadma, millised avatud lĂ€htekoodiga komponendid on nende rakendustes, jĂ€lgima, et usaldusvÀÀrsed versioonid laaditakse alla usaldusvÀÀrsetest allikatest, ning laadima ĂŒles vĂ€rskendatud versioonid komponentidest pĂ€rast Ă€sja avastatud haavatavuste parandamist.

Selles postituses vaatame, kuidas kasutada OWASP Dependency Check'i, et peatada kokkupanek, kui teie koodis avastatakse tÔsiseid probleeme.

Raamatust «Agile-projektide arenduse turvalisus» on selgitatud jÀrgmist. OWASP Dependency Check on tasuta skanner, mis katalogiseerib kÔik rakenduses kasutatud 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Ône C/C++ projekti jaoks. Dependency Check integreerub levinud kogu loomisvahenditega, sealhulgas Ant, Maven ja Gradle ning pideva integreerimise serveritega nagu Jenkins.

Dependency Check teatab kÔigist komponentidest, kus on teadaolevad haavatavused, USA Rahvusliku Haavatavuste Andmebaasi (NVD) NIST, ja see uuendatakse NVD uudiste kanalite andmete pÔhjal.

Õnneks saab seda kĂ”ike automaatselt teha selliste tööriistade abil nagu OWASP Dependency Check projekt vĂ”i kommertstooted, nĂ€iteks Black Duck, JFrog Xray, Snyk, Nexus Lifecycle Sonatype'i ettevĂ”tte vĂ”i SourceClear.

Need tööriistad saab integreerida kokkupaneku torustikesse, et automaatselt koostada avatud lÀhtekoodiga sÔltuvuste loetelu, tuvastada aegunud raamatukogude versioonid ja raamatukogud, mis sisaldavad teadaolevaid haavatavusi, ning peatada kokkupanek tÔsiste probleemide avastamisel.

OWASP Dependency Check

Dependency Check'i testimiseks ja demonstreerimiseks kasutame seda repositsiooni dependency-check-example.

HTML-aruande vaatamiseks tuleb seadistada nginx veebiserver teie gitlab-runner'is.

Nginx'i minimaalse konfiguratsiooni nÀide:

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

}

Kohe kogumise lÔpus nÀete sellist pilti:

RĂŒnnakute tuvastamise skanneri kasutamine sĂ”ltuvuste kontrollimiseks GitlabCI-s

Liigume lingile ja nÀeme Dependency Checki aruannet.

Esimene ekraanipilt on aruande ĂŒlemine osa koos lĂŒhikese sisuga.

RĂŒnnakute tuvastamise skanneri kasutamine sĂ”ltuvuste kontrollimiseks GitlabCI-s

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

RĂŒnnakute tuvastamise skanneri kasutamine sĂ”ltuvuste kontrollimiseks GitlabCI-s

Kolmas ekraanipilt toob vÀlja log4j-api-2.7.jar detailid. NÀeme, et CVE tasemed on 7.5 ja 9.8.

RĂŒnnakute tuvastamise skanneri kasutamine sĂ”ltuvuste kontrollimiseks GitlabCI-s

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

RĂŒnnakute tuvastamise skanneri kasutamine sĂ”ltuvuste kontrollimiseks GitlabCI-s

Kui soovite kasutada gitlab lehti, siis 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. Tuleb proovida Artifact: always

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

RĂŒnnakute tuvastamise skanneri kasutamine sĂ”ltuvuste kontrollimiseks 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 parameetriga saate reguleerida CVE haavatavuste taset, millele tuleb reageerida.

Veebi kaudu haavatavuste (NVD) NIST andmebaasi allalaadimine

Olete mÀrganud, et allalaaditakse pidevalt haavatavuste (NVD) NIST andmebaas:

RĂŒnnakute tuvastamise skanneri kasutamine sĂ”ltuvuste kontrollimiseks GitlabCI-s

Allalaadimiseks saab 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 andmed kausta /var/www/repos/nist-data-mirror/ kÀivitamisel ja vÀrskendab andmeid iga 24 tunni jÀrel.

CVE JSON NIST allalaadimiseks on vaja seadistada web-server nginx (nÀiteks teie gitlab-runneri peal).

Nginx'i minimaalse konfiguratsiooni nÀide:

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 ei soovi teha pikka rida, kus mvn kÀivitatakse, tÔstame parameetrid eraldi muutuja DEPENDENCY_OPTS.

LÔplik minimaalne konfi .gitlab-ci.yml nÀeb vÀlja selline:

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"

vahemÀlu:
  teed:
    - .m2/repository

kontrolli:
  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 DevOps ja turvalisuse kohta
Telegrami kanal DevSecOps / SSDLC - Turvaline arendus

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster