Ahultasunen kudeaketaren zati garrantzitsu bat sistema modernoak osatzen dituzten software osagaien hornikuntza-katea ondo ulertzea eta ziurtatzea da. Agile eta DevOps taldeek kode irekiko liburutegiak eta esparruak erabiltzen dituzte garapen denbora eta kostua murrizteko. Baina domina honek alde txarra ere badu: besteen akatsak eta ahultasunak heredatzeko aukera.
Jakina, taldeak bere aplikazioetan kode irekiko osagaiak zeintzuk diren jakitea ziurtatu behar du, bermatu behar du ezagutzen diren bertsio fidagarriak iturri fidagarri ezagunetatik deskargatzen direla eta aurkitu berri diren ahuleziak adabaki ondoren osagaien bertsio eguneratuak deskargatu behar direla.
Argitalpen honetan, OWASP Dependency Check erabiltzea aztertuko dugu eraikuntza bat bertan behera uzteko, zure kodearekin arazo larriak hautematen baditu.
βProiektu arinetan garapenaren segurtasunaβ liburuan honela deskribatzen da. OWASP Dependency Check doako eskaner bat da, aplikazio batean erabiltzen diren kode irekiko osagai guztiak katalogatzen dituena eta haiek dituzten ahultasunak erakusten dituena. Java, .NET, Ruby (gemspec), PHP (composer), Node.js eta Python bertsioak daude, baita C/C++ proiektu batzuetarako ere. Dependency Check ohiko eraikuntza-tresnekin integratzen da, Ant, Maven eta Gradle barne, eta Jenkins bezalako etengabeko integrazio zerbitzariekin.
Dependency Check NISTen National Vulnerability Database (NVD) ahultasun ezagunak dituzten osagai guztien berri ematen du eta NVD albiste-jarioetako datuekin eguneratzen da.
Zorionez, hori guztia automatikoki egin daiteke OWASP Dependency Check proiektua bezalako tresnak edo bezalako programa komertzialak erabiliz.
Tresna hauek kode irekiko mendekotasunak automatikoki inbentariatzeko, ahultasun ezagunak dituzten liburutegi eta liburutegien bertsio zaharkituak identifikatzeko eta eraikuntzak abortatzeko, arazo larriak hautematen badira, tresna hauek sar daitezke.
OWASP mendekotasun egiaztapena
Dependency Check nola funtzionatzen duen probatzeko eta erakusteko, biltegi hau erabiltzen dugu
HTML txostena ikusteko, nginx web zerbitzaria konfiguratu behar duzu zure gitlab-runner-en.
Gutxieneko nginx konfigurazioaren adibidea:
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 {
}
}
Muntaiaren amaieran argazki hau ikus dezakezue:
Jarraitu esteka eta ikusi Dependentzia Egiaztapenaren txostena.
Lehenengo pantaila-argazkia txostenaren goiko zatia da, laburpen batekin.
Bigarren pantaila-argazkiaren xehetasunak CVE-2017-5638. Hemen CVE maila eta esplotazioetarako estekak ikusten ditugu.
Hirugarren pantaila-argazkia log4j-api-2.7.jar-ren xehetasunak dira. CVE mailak 7.5 eta 9.8 direla ikusten dugu.
Laugarren pantaila-argazkia commons-fileupload-1.3.2.jar-en xehetasunak dira. CVE mailak 7.5 eta 9.8 direla ikusten dugu.
Gitlab orriak erabili nahi badituzu, orduan ez du funtzionatuko - eroritako zeregin batek ez du artefaktu bat sortuko.
Adibidea hemen
Eraiki irteera: artefakturik ez, ez dut html txostena ikusten. Artifact: beti probatu beharko zenuke
CVE ahultasunen maila erregulatzea
Gitlab-ci.yaml fitxategiko lerro garrantzitsuena:
mvn $MAVEN_CLI_OPTS test org.owasp:dependency-check-maven:check -DfailBuildOnCVSS=7
failBuildOnCVSS parametroarekin erantzun behar diozun CVE ahultasunen maila doi dezakezu.
NIST Vulnerability Database (NVD) Internetetik deskargatzea
Konturatu al zara NISTek etengabe deskargatzen dituela NIST ahultasun datu-baseak (NVD) Internetetik:
Deskargatzeko, utilitatea erabil dezakezu
Instalatu eta abiarazi dezagun.
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-ek NIST JSON CVE kargatzen du /var/www/repos/nist-data-mirror/ abiaraztean eta datuak 24 orduz behin eguneratzen ditu.
CVE JSON NIST deskargatzeko, nginx web zerbitzaria konfiguratu behar duzu (adibidez, zure gitlab-runner-en).
Gutxieneko nginx konfigurazioaren adibidea:
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 {
}
}
Mvn abiarazten den lerro luzerik ez egiteko, parametroak DEPENDENCY_OPTS aldagai bereizi batera eramango ditugu.
Azken konfigurazio minimoa .gitlab-ci.yml itxura hau izango du:
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
Iturria: www.habr.com