Mampiasa ny scanner vulnerability ho an'ny tranomboky ampiasaina Dependency-Check ao amin'ny GitlabCI

Ny ampahany manan-danja amin'ny fitantanana ny vulnerable dia ny fahatakarana tsara sy ny fiarovana ny rojo famatsiana ireo singa rindrambaiko izay mandrafitra ny rafitra maoderina. Ny ekipan'ny Agile sy DevOps dia mampiasa be dia be ny tranomboky sy rafitra misokatra mba hampihenana ny fotoana sy ny vidiny. Saingy manana lafy ratsiny ihany koa ity medaly ity: ny fahafahana mandova ny fahadisoan'ny hafa sy ny fahalemeny.

Mazava ho azy fa tokony ho azo antoka ny ekipa hahafantatra hoe iza amin'ireo singa loharano misokatra no ampidirina ao amin'ny fampiharana azy, miantoka fa ny dikan-teny azo antoka dia alaina avy amin'ny loharano azo antoka fantatra, ary misintona ny dikan-teny nohavaozina taorian'ny fametahana ny vulnerabilité vao haingana.

Ato amin'ity lahatsoratra ity dia hijery ny fampiasana OWASP Dependency Check hanakanana ny fananganana raha mahita olana goavana amin'ny kaody anao.

Ao amin'ny boky "Development Security in Agile Projects" dia voalaza toy izao manaraka izao. OWASP Dependency Check dia scanner maimaim-poana izay mitanisa ireo singa loharano misokatra rehetra ampiasaina amin'ny fampiharana iray ary mampiseho ny vulnerability ao anatiny. Misy dikan-teny Java, .NET, Ruby (gemspec), PHP (composer), Node.js ary Python, ary koa ho an'ny tetikasa C/C++ sasany. Ny Dependency Check dia mitambatra amin'ny fitaovana fananganana mahazatra, ao anatin'izany ny Ant, Maven ary Gradle, ary ireo lohamilina fampidirana mitohy toa an'i Jenkins.

Ny Dependency Check dia mitatitra ireo singa rehetra manana fahalemena fantatra avy amin'ny National Vulnerability Database (NVD) an'ny NIST ary havaozina miaraka amin'ny angona avy amin'ny fahana vaovao NVD.

Soa ihany fa izany rehetra izany dia azo atao mandeha ho azy amin'ny fampiasana fitaovana toy ny tetikasa OWASP Dependency Check na programa ara-barotra toy ny Gana mainty, JFrog Xray, Snyk, Nexus Lifecycle Sonatype na SourceClear.

Ireo fitaovana ireo dia azo ampidirina amin'ny fananganana fantsona mba hanoratana ho azy ny fiankinan-doha amin'ny loharano misokatra, hamantatra ny dikan-teny lany amin'ny tranomboky sy tranomboky misy vulnerabilities fantatra, ary manafoana ny fananganana raha misy olana lehibe hita.

OWASP fanaraha-maso miankina

Mba hitsapana sy hanehoana ny fomba fiasan'ny Dependency Check dia mampiasa ity tahiry ity izahay dependency-check-ohatra.

Raha hijery ny tatitra HTML dia mila manamboatra ny mpizara tranonkala nginx amin'ny gitlab-runner anao ianao.

Ohatra amin'ny config nginx kely indrindra:

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

Any amin'ny faran'ny fivoriambe dia azonao jerena ity sary ity:

Mampiasa ny scanner vulnerability ho an'ny tranomboky ampiasaina Dependency-Check ao amin'ny GitlabCI

Araho ny rohy ary jereo ny tatitra momba ny Dependency Check.

Ny pikantsary voalohany dia ny tapany ambony amin'ny tatitra misy famintinana.

Mampiasa ny scanner vulnerability ho an'ny tranomboky ampiasaina Dependency-Check ao amin'ny GitlabCI

Ny antsipirian'ny pikantsary faharoa CVE-2017-5638. Eto isika dia mahita ny haavon'ny CVE sy ny rohy mankany amin'ny fitrandrahana.

Mampiasa ny scanner vulnerability ho an'ny tranomboky ampiasaina Dependency-Check ao amin'ny GitlabCI

Ny pikantsary fahatelo dia ny antsipirian'ny log4j-api-2.7.jar. Hitantsika fa ny haavon'ny CVE dia 7.5 sy 9.8.

Mampiasa ny scanner vulnerability ho an'ny tranomboky ampiasaina Dependency-Check ao amin'ny GitlabCI

Ny pikantsary fahefatra dia ny antsipirian'ny commons-fileupload-1.3.2.jar. Hitantsika fa ny haavon'ny CVE dia 7.5 sy 9.8.

Mampiasa ny scanner vulnerability ho an'ny tranomboky ampiasaina Dependency-Check ao amin'ny GitlabCI

Raha te hampiasa pejy gitlab ianao dia tsy mandeha izany - ny asa lavo dia tsy hamorona artifact.

Ohatra eto https://gitlab.com/anton_patsev/dependency-check-example-gitlab-pages.

Manangana vokatra: tsy misy artifact, tsy hitako ny tatitra html. Tokony hanandrana Artifact: foana ianao

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

Mampiasa ny scanner vulnerability ho an'ny tranomboky ampiasaina Dependency-Check ao amin'ny GitlabCI

Mandrindra ny haavon'ny vulnerability CVE

Ny tsipika manan-danja indrindra amin'ny rakitra gitlab-ci.yaml:

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

Miaraka amin'ny parameter failBuildOnCVSS dia azonao atao ny manitsy ny haavon'ny vulnerabilities CVE izay ilainao hamaliana.

Misintona ny NIST Vulnerability Database (NVD) avy amin'ny Internet

Voamarikao ve fa ny NIST dia misintona tsy tapaka ny angona vulnerability (NVD) NIST avy amin'ny Internet:

Mampiasa ny scanner vulnerability ho an'ny tranomboky ampiasaina Dependency-Check ao amin'ny GitlabCI

Mba hisintonana dia azonao ampiasaina ny utility nist_data_mirror_golang

Aleo apetraka sy atomboka izany.

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 dia mampiakatra ny NIST JSON CVE mankany /var/www/repos/nist-data-mirror/ amin'ny fanombohana ary manavao ny angona isaky ny 24 ora.

Mba hisintonana ny CVE JSON NIST dia mila manamboatra ny mpizara tranonkala nginx ianao (ohatra, amin'ny gitlab-runner anao).

Ohatra amin'ny config nginx kely indrindra:

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

}

Mba tsy hisian'ny tsipika lava izay atomboka ny mvn, dia hamindra ny masontsivana amin'ny fari-pitsipika samihafa DEPENDENCY_OPTS.

Ny config farany indrindra .gitlab-ci.yml dia ho toy izao:

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 momba ny DevOps sy Security
Fantsona Telegram DevSecOps / SSDLC - Fampandrosoana azo antoka

Source: www.habr.com

Add a comment