Hirugarrenen software-osagaien (Software Composition Analysis - SCA) analisiaren garrantzia garapen-prozesuan hazten ari da kode irekiko liburutegien ahultasunei buruzko urteko txostenak kaleratzearekin batera, eta horiek Synopsys, Sonatype, Snyk eta White Source-k argitaratzen dituzte. . Txostenaren arabera
Kasurik adierazgarrienetako bat
Artikulu honetan SCA egiteko tresna bat aukeratzearen gaia eztabaidatuko da analisiaren emaitzen kalitatearen ikuspuntutik. Tresnen konparaketa funtzionala ere emango da. CI/CDan integratzeko prozesua eta integrazio gaitasunak ondorengo argitalpenetarako utziko dira. Tresna sorta zabala aurkeztu zuen OWASPek
Eragiketa printzipioa
Ikus dezagun nolakoa den CPE:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- zatia: Osagaiak aplikazioarekin (a), sistema eragilearekin (o), hardwarearekin (h) (Derrigorrezkoa) zerikusia duela adieraztea.
- Saltzailearen: Produktuaren fabrikatzailearen izena (beharrezkoa)
- Produktua: Produktuaren izena (beharrezkoa)
- Bertsioa: Osagaien bertsioa (elementu zaharkitua)
- Eguneratu: Pakete eguneratzea
- edizioa: Oinarrizko bertsioa (zaharkitutako elementua)
- Hizkuntza: RFC-5646-n definitutako hizkuntza
- SW edizioa: Softwarearen bertsioa
- Helburua SW: Produktuak funtzionatzen duen software ingurunea
- Helburua HW: Produktuak funtzionatzen duen hardware-ingurunea
- Beste batzuk: Hornitzaileen edo produktuaren informazioa
CPE adibide bat honelakoa da:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Lerroak esan nahi du CPE 2.3 bertsioak fabrikatzailearen aplikazio osagaia deskribatzen duela pivotal_software
izenburuarekin spring_framework
3.0.0 bertsioa. Ahultasun bat irekitzen badugu
URLa SCA tresnek ere erabiltzen dute. Paketearen URL formatua hau da:
scheme:type/namespace/name@version?qualifiers#subpath
- Eskema: Beti egongo da 'pkg' hau paketearen URLa dela adierazten duena (Derrigorrezkoa)
- Mota: Paketearen "mota" edo paketearen "protokoloa", hala nola, maven, npm, nuget, gem, pypi, etab. (Derrigorrezko elementua)
- Izen-gunea: Izen-aurrizki batzuk, adibidez, Maven taldearen IDa, Docker irudiaren jabea, GitHub erabiltzailea edo erakundea. Aukerakoa eta motaren araberakoa da.
- Izena: Paketearen izena (Derrigorrezkoa)
- Bertsioa: Paketearen bertsioa
- Sailkatze: Paketearen kualifikazio-datu osagarriak, hala nola OS, arkitektura, banaketa, etab. Aukerakoa eta motaren araberakoa.
- Azpibidea: Paketearen bide gehigarria paketearen erroarekiko
Adibidez:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
BOM bat XML formatuan izan daitekeenaren adibide bat:
<?xml version="1.0" encoding="UTF-8"?>
<bom xmlns="http://cyclonedx.org/schema/bom/1.2" serialNumber="urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79" version="1">
<components>
<component type="library">
<publisher>Apache</publisher>
<group>org.apache.tomcat</group>
<name>tomcat-catalina</name>
<version>9.0.14</version>
<hashes>
<hash alg="MD5">3942447fac867ae5cdb3229b658f4d48</hash>
<hash alg="SHA-1">e6b1000b94e835ffd37f4c6dcbdad43f4b48a02a</hash>
<hash alg="SHA-256">f498a8ff2dd007e29c2074f5e4b01a9a01775c3ff3aeaf6906ea503bc5791b7b</hash>
<hash alg="SHA-512">e8f33e424f3f4ed6db76a482fde1a5298970e442c531729119e37991884bdffab4f9426b7ee11fccd074eeda0634d71697d6f88a460dce0ac8d627a29f7d1282</hash>
</hashes>
<licenses>
<license>
<id>Apache-2.0</id>
</license>
</licenses>
<purl>pkg:maven/org.apache.tomcat/[email protected]</purl>
</component>
<!-- More components here -->
</components>
</bom>
BOM Dependency Track-rako sarrera-parametro gisa ez ezik, hornikuntza-kateko software-osagaiak inbentariatzeko ere erabil daiteke, adibidez, bezero bati softwarea emateko. 2014an, Estatu Batuetan lege bat ere proposatu zuten
SCAra itzuliz, Dependency Track-ek Slack bezalako jakinarazpen-plataformekin eta Kenna Security bezalako ahultasunak kudeatzeko sistemekin prestatutako integrazioak ditu. Esan beharra dago Dependency Track, besteak beste, paketeen bertsio zaharkituak identifikatzen dituela eta lizentziei buruzko informazioa ematen duela (SPDX euskarria dela eta).
SCAren kalitateari buruz zehazki hitz egiten badugu, orduan funtsezko aldea dago.
Dependency Track-ek ez du proiektua sarrera gisa onartzen, BOM-a baizik. Horrek esan nahi du proiektua probatu nahi badugu, lehenik bom.xml sortu behar dugula, adibidez CycloneDX erabiliz. Horrela, Dependency Track CycloneDXren menpe dago zuzenean. Aldi berean, pertsonalizazioa ahalbidetzen du. Hau da OZON taldeak idatzi duena
Laburtu ditzagun ezaugarri funtzional batzuk, eta azter ditzagun onartzen diren hizkuntzak aztertzeko:
Hizkuntzen
Nexus IQ
Mendekotasun egiaztapena
Mendekotasun-pista
Java
+
+
+
C / C ++
+
+
-
C#
+
+
-
.Net
+
+
+
erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Python
+
+
+
Ruby
+
+
+
Perl
-
-
-
Eskala
+
+
+
C helburua
+
+
-
Swift
+
+
-
R
+
-
-
Go
+
+
+
funtzionalitate
funtzionalitate
Nexus IQ
Mendekotasun egiaztapena
Mendekotasun-pista
Iturburu-kodean erabiltzen diren osagaiak lizentziadun garbitasuna egiaztatzen dutela ziurtatzeko gaitasuna
+
-
+
Docker irudien ahultasunak eta lizentzia garbitasuna eskaneatzeko eta aztertzeko gaitasuna
+ Clair-ekin integrazioa
-
-
Kode irekiko liburutegiak erabiltzeko segurtasun politikak konfiguratzeko gaitasuna
+
-
-
Kode irekiko biltegiak eskaneatzeko gaitasuna osagai zaurgarrien bila
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Ikerketa talde espezializatu baten erabilgarritasuna
+
-
-
Begizta itxiko funtzionamendua
+
+
+
Hirugarrenen datu-baseak erabiltzea
+ Sonatype datu-base itxia
+ Sonatype OSS, NPM Advisors Publikoak
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, bere ahultasun datu-baserako laguntza
Iturburu irekiko osagaiak iragazteko gaitasuna garapen-begizta kargatzen saiatzean konfiguratutako politiken arabera
+
-
-
Ahultasunak konpontzeko gomendioak, konponketetarako esteken erabilgarritasuna
+
+- (datu-base publikoetako deskribapenaren araberakoa da)
+- (datu-base publikoetako deskribapenaren araberakoa da)
Detektaturiko ahultasunen sailkapena larritasunaren arabera
+
+
+
Roletan oinarritutako sarbide-eredua
+
-
+
CLI euskarria
+
+
+- (CycloneDX-rako soilik)
Ahultasunak lagintzea/ordenatzea, zehaztutako irizpideen arabera
+
-
+
Aginte-panela aplikazioaren egoeraren arabera
+
-
+
Txostenak sortzea PDF formatuan
+
-
-
JSONCSV formatuan txostenak sortzea
+
+
-
Errusiar hizkuntzaren laguntza
-
-
-
Integrazio gaitasunak
Integrazioa
Nexus IQ
Mendekotasun egiaztapena
Mendekotasun-pista
LDAP/Active Directory integrazioa
+
-
+
Integrazioa Bamboo etengabeko integrazio sistemarekin
+
-
-
TeamCity etengabeko integrazio sistemarekin integratzea
+
-
-
GitLab etengabeko integrazio sistemarekin integratzea
+
+- (GitLab-erako plugin gisa)
+
Jenkins etengabeko integrazio sistemarekin integratzea
+
+
+
IDErako pluginen erabilgarritasuna
+ IntelliJ, Eclipse, Visual Studio
-
-
Tresnaren web-zerbitzuen (API) bidez pertsonalizatutako integraziorako laguntza
+
-
+
Mendekotasun egiaztapena
Lehenengo hasiera
Exekutatu dezagun Dependency Check nahita zaurgarria den aplikazio batean
Horretarako erabiliko dugu
mvn org.owasp:dependency-check-maven:check
Ondorioz, dependency-check-report.html xede-direktorioan agertuko da.
Ireki dezagun fitxategia. Ahulezien kopuru osoaren laburpenaren ondoren, Larritasun eta Konfiantza maila handiko ahultasunei buruzko informazioa ikus dezakegu, paketea, CPE eta CVE kopurua adieraziz.
Ondoren, informazio zehatzagoa dator, bereziki erabakia hartu den oinarria (froga), hau da, BOM jakin bat.
Ondoren, CPE, PURL eta CVE deskribapena dator. Bide batez, zuzentzeko gomendioak ez dira sartzen NVD datu-basean ez daudelako.
Eskaneatu emaitzak sistematikoki ikusteko, Nginx konfigura dezakezu gutxieneko ezarpenekin, edo ondoriozko akatsak Dependency Check-erako konektoreak onartzen dituen akatsak kudeatzeko sistema batera bidal ditzakezu. Adibidez, Defect Dojo.
Mendekotasun-pista
Instalazio-
Dependency Track, berriz, web-oinarritutako plataforma bat da bistaratzeko grafikoak dituena, beraz, akatsak hirugarrenen soluzio batean gordetzearen arazo larria ez da hemen sortzen.
Instalatzeko onartzen diren scriptak hauek dira: Docker, WAR, Executable WAR.
Lehenengo hasiera
Exekutatzen ari den zerbitzuaren URLra joaten gara. Admin/admin bidez hasten gara saioa, saio-hasiera eta pasahitza aldatzen dugu eta gero Arbelera iristen gara. Egingo dugun hurrengo gauza Javan probako aplikazio baterako proiektu bat sortzea da Hasiera/Proiektuak → Sortu proiektua . Har dezagun DVJA adibide gisa.
Dependency Track-ek BOM sarrera gisa soilik onartu dezakeenez, BOM hau berreskuratu behar da. Aprobetxa dezagun
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
bom.xml lortuko dugu eta fitxategia sortutako proiektuan kargatzen dugu DVJA → Mendekotasunak → Kargatu BOM.
Goazen Administrazio → Analizatzaileak. Ulertzen dugu Barne Analizatzailea soilik gaituta dugula, eta horrek NVD barne hartzen du. Konektatu dezagun Sonatype OSS Index ere.
Horrela, gure proiekturako hurrengo irudia lortuko dugu:
Era berean, zerrendan Sonatype OSS-ri aplikagarria den ahultasun bat aurki dezakezu:
Etsipen nagusia Dependency Track-ek jada ez ditu Dependency Check xml txostenak onartzen. Dependency Check integrazioaren onartzen diren azken bertsioak 1.0.0 - 4.0.2 izan ziren, 5.3.2 probatu nuen bitartean.
Hemen
Nexus IQ
Lehenengo hasiera
Nexus IQ-ren instalazioa artxiboetatik dator
Kontsolan saioa hasi ondoren, Erakunde eta Aplikazio bat sortu behar duzu.
Ikus dezakezunez, IQ-ren kasuan konfigurazioa zertxobait zailagoa da, "etapa" ezberdinetarako (garapena, eraikitzea, etapa, kaleratzea) aplikagarriak diren politikak ere sortu behar ditugulako. Hori beharrezkoa da osagai ahulak blokeatzeko kanalizaziotik produkziora hurbiltzen diren heinean, edo garatzaileek deskargatutakoan Nexus Repo-ra sartu bezain laster blokeatzeko.
Kode irekiaren eta enpresaren arteko aldea sentitzeko, egin dezagun eskaneatu Nexus IQ bidez modu berean. dvja-test-and-compare
:
mvn com.sonatype.clm:clm-maven-plugin:evaluate -Dclm.applicationId=dvja-test-and-compare -Dclm.serverUrl=<NEXUSIQIP> -Dclm.username=<USERNAME> -Dclm.password=<PASSWORD>
Jarraitu IQ web interfazean sortutako txostenaren URLa:
Hemen ikus ditzakezu politika-urraketa guztiak garrantzi-maila desberdinak adierazten dituztenak (Informaziotik Segurtasun Kritikora). Osagaiaren ondoan dagoen D hizkiak osagaia Zuzeneko Dependentzia dela esan nahi du, eta osagaiaren ondoan dagoen T hizkiak osagaia Mendekotasun Iragankorra dela, hau da, iragankorra dela.
Bide batez, txostena
Nexus IQ gidalerroen urratzeetako bat irekitzen badugu, osagaiaren deskribapen bat ikus dezakegu, baita Bertsio grafiko bat ere, zeinak uneko bertsioaren kokapena denbora grafikoan erakusten duen, baita ahultasuna zein puntutan gelditzen den ere. zaurgarria izan. Grafikoko kandelen altuerak osagai hau erabiltzearen ospea erakusten du.
Ahultasunen atalera joan eta CVE zabaltzen baduzu, ahultasun horren deskribapena, kentzeko gomendioak eta osagai hau urratu izanaren arrazoia irakur ditzakezu, hau da, klasearen presentzia. DiskFileitem.class
.
Labur ditzagun soilik hirugarrenen Java osagaiekin erlazionatutakoak, js osagaiak kenduz. Parentesi artean NVDtik kanpo aurkitu diren ahultasun kopurua adierazten dugu.
Nexus IQ osoa:
- Eskaneatutako mendekotasunak: 62
- Mendekotasun kalteberak: 16
- Aurkitutako ahultasunak: 42 (8 sonatype db)
Mendekotasun egiaztapen osoa:
- Eskaneatutako mendekotasunak: 47
- Mendekotasun kalteberak: 13
- Aurkitutako ahultasunak: 91 (14 sonatype oss)
Guztizko mendekotasunaren jarraipena:
- Eskaneatutako mendekotasunak: 59
- Mendekotasun kalteberak: 10
- Aurkitutako ahultasunak: 51 (1 sonatype oss)
Hurrengo urratsetan, lortutako emaitzak aztertuko ditugu eta ahultasun horietatik zein den benetako akatsa eta zein den positibo faltsua irudikatuko dugu.
Erantzukizuna
Berrikuspen hau ez da egia eztabaidaezina. Egileak ez zuen helbururik tresna bereizi bat nabarmentzeko besteen atzealdean. Berrikuspenaren helburua SCA tresnen funtzionamendu-mekanismoak eta haien emaitzak egiaztatzeko moduak erakustea zen.
Emaitzen konparaketa
Baldintzak eta egoerak:
Hirugarrenen osagaien ahultasunen positibo faltsu bat hau da:
- CVE desegokia identifikatutako osagaiarekin
- Adibidez, ahultasun bat struts2 esparruan identifikatzen bada, eta tresnak struts-tiles esparruko osagai bat seinalatzen badu, ahultasun hori aplikatzen ez zaiona, positibo faltsu bat da.
- CVE osagaiaren identifikatutako bertsioarekin bat ez datorrela
- Adibidez, ahultasuna python > 3.5 bertsioarekin lotuta dago eta tresnak 2.7 bertsioa ahul gisa markatzen du; positibo faltsu bat da, izan ere, ahultasuna 3.x produktuen adarrean soilik aplikatzen da.
- CVE bikoiztua
- Esate baterako, SCAk RCE bat gaitzen duen CVE bat zehazten badu, orduan SCAk RCE horrek kaltetutako Cisco produktuei aplikatzen zaien osagai horretarako CVE bat zehazten du. Kasu honetan positibo faltsua izango da.
- Esate baterako, CVE bat aurkitu da spring-web osagai batean, eta ondoren SCAk CVE bera seinalatzen du Spring Frameworkeko beste osagai batzuetan, CVEk beste osagaiekin zerikusirik ez duen bitartean. Kasu honetan positibo faltsua izango da.
Azterketaren xedea kode irekiko DVJA proiektua izan zen. Azterketak java osagaiak soilik hartu zituen parte (js gabe).
Emaitzen laburpena
Goazen zuzenean identifikatutako ahultasunen eskuzko berrikuspenaren emaitzetara. CVE bakoitzaren txosten osoa Eranskinean aurki daiteke.
Ahultasun guztien emaitzen laburpena:
Parametroa
Nexus IQ
Mendekotasun egiaztapena
Mendekotasun-pista
Antzemandako ahuleziak guztira
42
91
51
Gaizki identifikatutako ahultasunak (positibo faltsua)
2 (% 4.76)
62 (% 68,13)
29 (% 56.86)
Ez da ahultasun garrantzitsurik aurkitu (negatibo faltsurik)
10
20
27
Emaitzen laburpena osagaien arabera:
Parametroa
Nexus IQ
Mendekotasun egiaztapena
Mendekotasun-pista
Identifikatutako osagaiak guztira
62
47
59
Osagai ahulak guztira
16
13
10
Oker identifikatutako osagai ahulak (positibo faltsuak)
1
5
0
Oker identifikatutako osagai ahulak (positibo faltsuak)
0
6
6
Eraiki ditzagun grafiko bisualak positibo faltsuen eta negatibo faltsuen ahultasun kopuru osoaren arteko erlazioa ebaluatzeko. Osagaiak horizontalean markatzen dira, eta horietan identifikatutako ahultasunak bertikalean markatzen dira.
Konparazio baterako, Sonatype taldeak antzeko azterketa bat egin zuen 1531 osagaiko proiektu bat probatzen OWASP Dependency Check erabiliz. Ikus dezakegunez, zarataren eta erantzun zuzenen arteko erlazioa gure emaitzekin parekoa da.
Iturria:
Ikus ditzagun gure eskaneatu emaitzetako CVE batzuk emaitza horien zergatia ulertzeko.
Gehiago
№ 1
Ikus ditzagun lehenik Sonatype Nexus IQri buruzko puntu interesgarri batzuk.
Nexus IQ-k deserializazioaren arazo bat adierazten du Spring Framework-en RCE hainbat aldiz egiteko gaitasunarekin. CVE-2016-1000027 spring-web:3.0.5 lehen aldiz, eta CVE-2011-2894 spring-context:3.0.5 eta spring-core:3.0.5. Hasieran, badirudi ahultasuna bikoiztuta dagoela CVE askotan. Zeren eta, NVD datu-basean CVE-2016-1000027 eta CVE-2011-2894 begiratuz gero, badirudi dena begi-bistakoa dela.
osagai
Ahultasuna
udaberri-web:3.0.5
CVE-2016-1000027
udaberri-testuingurua:3.0.5
CVE-2011-2894
malguki-nukleoa:3.0.5
CVE-2011-2894
Description
Description
CVE-2011-2894 bera nahiko famatua da. Txostenean RemoteInvocationSerializingExporter
CVE-2011-2894n, ahultasuna urtean ikusten da HttpInvokerServiceExporter
. Hau da Nexus IQ-k esaten diguna:
Hala ere, NVDn ez dago horrelakorik, horregatik Dependency Check eta Dependency Track bakoitzak negatibo faltsua jasotzen dute.
CVE-2011-2894-ren deskribapenetik ere uler daiteke ahultasuna bai spring-context:3.0.5 eta spring-core:3.0.5-en dagoela. Horren berrespena ahultasun hori aurkitu duen pertsonaren artikulu batean aurki daiteke.
№ 2
osagai
Ahultasuna
Emaitza
struts2-nukleoa:2.3.30
CVE-2016-4003
FALSE
CVE-2016-4003 ahultasuna aztertzen badugu, 2.3.28 bertsioan konponduta zegoela ulertuko dugu, hala ere, Nexus IQ-k horren berri ematen digu. Ahultasunaren deskribapenean ohar bat dago:
Hau da, ahultasuna JREren bertsio zaharkitu batekin batera bakarrik existitzen da, eta horri buruz ohartaraztea erabaki zuten. Hala ere, positibo faltsu hau jotzen dugu, okerrena ez den arren.
# 3
osagai
Ahultasuna
Emaitza
xwork-core:2.3.30
CVE-2017-9804
TRUE
xwork-core:2.3.30
CVE-2017-7672
FALSE
CVE-2017-9804 eta CVE-2017-7672 deskribapenei erreparatzen badiegu, arazoa dela ulertuko dugu. URLValidator class
, CVE-2017-9804 CVE-2017-7672-tik eratorritakoarekin. Bigarren ahultasunaren presentziak ez du karga baliagarririk bere larritasuna Handiraino igo izanak baino, beraz, alferrikako zarata kontsidera dezakegu.
Oro har, ez zen beste positibo faltsurik aurkitu Nexus IQ-rako.
№ 4
IQ beste irtenbideetatik bereizten duten hainbat gauza daude.
osagai
Ahultasuna
Emaitza
udaberri-web:3.0.5
CVE-2020-5398
TRUE
NVDko CVE-k dio 5.2 aurreko 5.2.3.x, 5.1 aurreko 5.1.13.x eta 5.0 aurreko 5.0.16.x bertsioetan soilik aplikatzen dela, hala ere, Nexus IQ-ko CVE deskribapenari erreparatzen badiogu. , orduan honako hau ikusiko dugu:
Aholku-desbideratze-oharra: Sonatype segurtasun-ikerketa taldeak ahultasun hau 3.0.2.RELEASE bertsioan sartu zela aurkitu zuen, eta ez 5.0.x, aholkuan adierazitako moduan.
Horren ondoren, ahultasun honen PoC bat dator, 3.0.5 bertsioan dagoela dioena.
Negatibo faltsuak Dependency Check eta Dependency Track-era bidaltzen dira.
№ 5
Ikus ditzagun positibo faltsuak Dependency Check eta Dependency Track-en.
Dependency Check nabarmentzen da NVDko esparru osoan aplikatzen diren CVE horiek islatzen dituelako CVE horiek aplikatzen ez zaizkien osagaiei. Hau CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, zeinaren araberakoa da. ” to struts-taglib:1.3.8 eta struts-tiles-1.3.8. Osagai hauek ez dute zerikusirik CVEan deskribatzen denarekin - eskaera prozesatzea, orrien baliozkotzea, etab. CVE eta osagai hauek komunean dutena markoa baino ez delako gertatzen da, horregatik Dependency Check ahultasuntzat jo zuen.
Egoera bera spring-tx:3.0.5-ekin, eta antzeko egoera struts-core-rekin:1.3.8. Struts-core-rako, Dependency Check eta Dependency Track-ek struts2-core-ri benetan aplikagarriak diren ahultasun asko aurkitu dituzte, funtsean marko bereizia dena. Kasu honetan, Nexus IQ-k ondo ulertu zuen argazkia eta kaleratutako CVE-etan, struts-core bizitzaren amaierara iritsi zela eta struts2-corera pasatzea beharrezkoa zela adierazten zuen.
№ 6
Zenbait egoeratan, bidegabea da mendekotasun-egiaztapena eta mendekotasunaren jarraipena errore agerikoa interpretatzea. Hain zuzen ere, CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, zein menpekotasunen jarraipena eta menpekotasunaren egiaztapena Spring-core-ri egotzita:3.0.5 benetan spring-web:3.0.5-ri dagokio. Aldi berean, CVE horietako batzuk Nexus IQ-k ere aurkitu zituen, hala ere, IQ-k behar bezala identifikatu zituen beste osagai batekin. Ahultasun hauek spring-core-n aurkitu ez direnez, ezin da argudiatu printzipioz esparruan ez daudenik eta kode irekiko tresnek ongi adierazi zituzten ahultasun horiek (apur bat galdu zuten).
Findings
Ikus dezakegunez, eskuzko berrikuspenaren bidez identifikatutako ahultasunen fidagarritasuna zehazteak ez du emaitza anbiguorik ematen, eta horregatik sortzen dira arazo polemikoak. Emaitzak dira Nexus IQ irtenbideak positibo faltsu baxuena eta zehaztasun handiena duela.
Lehenik eta behin, Sonatype taldeak NVD-ren CVE ahultasun bakoitzaren deskribapena zabaldu zuelako bere datu-baseetan, osagaien bertsio jakin baten ahuleziak adieraziz klase edo funtziora arte, ikerketa osagarriak eginez (adibidez. , software bertsio zaharretako ahultasunak egiaztatzea).
Emaitzetan eragin handia dute NVDn sartu ez ziren baina, hala ere, SONATYPE marka duen Sonatype datu-basean dauden ahultasunek ere. Txostenaren arabera
Ondorioz, Dependency Check-ek zarata asko sortzen du, osagai zaurgarri batzuk faltaz. Dependency Track-ek zarata gutxiago sortzen du eta osagai kopuru handia detektatzen du, eta horrek ez ditu begiak bisualki minik egiten web-interfazean.
Hala ere, praktikak erakusten du kode irekia DevSecOps helduetarako lehen urratsak bihurtu behar direla. SCA garapenean integratzean pentsatu behar duzun lehenengo gauza prozesuak dira, hau da, zuzendaritzarekin eta erlazionatutako sailekin batera pentsatzea prozesu idealak nolakoak izan behar duten zure erakundean. Baliteke zure erakundearentzat, hasieran, Dependency Check edo Dependency Track-k negozio-behar guztiak estaliko dituela, eta Enterprise soluzioak jarraipen logikoa izatea, garatzen ari diren aplikazioen gero eta konplexutasuna dela eta.
A eranskina: Osagaien emaitzak
Sinboloak:
- Goi-maila handiko eta kritikoko ahultasunak osagaian
- Ertaina — Osagaian kritikotasun ertaineko ahultasunak
- EGIA — Benetako gai positiboa
- GEZURRA — Gai positibo faltsua
osagai
Nexus IQ
Mendekotasun egiaztapena
Mendekotasun-pista
Emaitza
dom4j: 1.6.1
High
High
High
TRUE
log4j-nukleoa: 2.3
High
High
High
TRUE
log4j: 1.2.14
High
High
-
TRUE
komun-bilduma:3.1
High
High
High
TRUE
commons-fileupload:1.3.2
High
High
High
TRUE
commons-beanutils:1.7.0
High
High
High
TRUE
commons-codec: 1:10
Ertaina
-
-
TRUE
mysql-connector-java:5.1.42
High
High
High
TRUE
udaberri-adierazpena:3.0.5
High
osagaia ez da aurkitu
TRUE
udaberri-web:3.0.5
High
osagaia ez da aurkitu
High
TRUE
udaberri-testuingurua:3.0.5
Ertaina
osagaia ez da aurkitu
-
TRUE
malguki-nukleoa:3.0.5
Ertaina
High
High
TRUE
struts2-config-browser-plugin:2.3.30
Ertaina
-
-
TRUE
udaberria-tx:3.0.5
-
High
-
FALSE
struts-nukleoa:1.3.8
High
High
High
TRUE
xwork-core: 2.3.30
High
-
-
TRUE
struts2-nukleoa: 2.3.30
High
High
High
TRUE
struts-taglib:1.3.8
-
High
-
FALSE
zutoin-teilak-1.3.8
-
High
-
FALSE
B eranskina: Ahultasun-emaitzak
Sinboloak:
- Goi-maila handiko eta kritikoko ahultasunak osagaian
- Ertaina — Osagaian kritikotasun ertaineko ahultasunak
- EGIA — Benetako gai positiboa
- GEZURRA — Gai positibo faltsua
osagai
Nexus IQ
Mendekotasun egiaztapena
Mendekotasun-pista
Larritasuna
Emaitza
Comment
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
High
TRUE
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
High
TRUE
log4j-nukleoa: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
High
TRUE
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
Behe-
TRUE
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
High
TRUE
-
CVE-2020-9488
-
Behe-
TRUE
SONATYPE-2010-0053
-
-
High
TRUE
komun-bilduma:3.1
-
CVE-2015-6420
CVE-2015-6420
High
FALSE
RCE bikoiztuak (OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
High
FALSE
RCE bikoiztuak (OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
High
TRUE
commons-fileupload:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
High
TRUE
SONATYPE-2014-0173
-
-
Ertaina
TRUE
commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
High
TRUE
-
CVE-2019-10086
CVE-2019-10086
High
FALSE
Ahultasuna 1.9.2+ bertsioetan soilik aplikatzen da
commons-codec: 1:10
SONATYPE-2012-0050
-
-
Ertaina
TRUE
mysql-connector-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
High
TRUE
CVE-2019-2692
CVE-2019-2692
-
Ertaina
TRUE
-
CVE-2020-2875
-
Ertaina
FALSE
CVE-2019-2692ren ahultasun bera, baina ohar batekin "erasoek produktu gehigarrietan eragin handia izan dezakete"
-
CVE-2017-15945
-
High
FALSE
Ez da garrantzitsua mysql-connector-java-rekin
-
CVE-2020-2933
-
Behe-
FALSE
CVE-2020-2934 kopia
CVE-2020-2934
CVE-2020-2934
-
Ertaina
TRUE
udaberri-adierazpena:3.0.5
CVE-2018-1270
osagaia ez da aurkitu
-
High
TRUE
CVE-2018-1257
-
-
Ertaina
TRUE
udaberri-web:3.0.5
CVE-2016-1000027
osagaia ez da aurkitu
-
High
TRUE
CVE-2014-0225
-
CVE-2014-0225
High
TRUE
CVE-2011-2730
-
-
High
TRUE
-
-
CVE-2013-4152
Ertaina
TRUE
CVE-2018-1272
-
-
High
TRUE
CVE-2020-5398
-
-
High
TRUE
IQ-ren aldeko adibide argigarri bat: "Sonatype segurtasun-ikerketa taldeak ahultasun hori 3.0.2.RELEASE bertsioan sartu zela deskubritu zuen eta ez 5.0.x aholkuan adierazitako moduan".
CVE-2013-6429
-
-
Ertaina
TRUE
CVE-2014-0054
-
CVE-2014-0054
Ertaina
TRUE
CVE-2013-6430
-
-
Ertaina
TRUE
udaberri-testuingurua:3.0.5
CVE-2011-2894
osagaia ez da aurkitu
-
Ertaina
TRUE
malguki-nukleoa:3.0.5
-
CVE-2011-2730
CVE-2011-2730
High
TRUE
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Ertaina
TRUE
-
-
CVE-2013-4152
Ertaina
FALSE
Spring-web-en ahultasun beraren bikoiztua
-
CVE-2013-4152
-
Ertaina
FALSE
Zaurgarritasuna spring-web osagaiari dagokio
-
CVE-2013-6429
CVE-2013-6429
Ertaina
FALSE
Zaurgarritasuna spring-web osagaiari dagokio
-
CVE-2013-6430
-
Ertaina
FALSE
Zaurgarritasuna spring-web osagaiari dagokio
-
CVE-2013-7315
CVE-2013-7315
Ertaina
FALSE
CVE-2013-4152tik ZATITU. + Zaurgarritasuna spring-web osagaiari dagokio
-
CVE-2014-0054
CVE-2014-0054
Ertaina
FALSE
Zaurgarritasuna spring-web osagaiari dagokio
-
CVE-2014-0225
-
High
FALSE
Zaurgarritasuna spring-web osagaiari dagokio
-
-
CVE-2014-0225
High
FALSE
Spring-web-en ahultasun beraren bikoiztua
-
CVE-2014-1904
CVE-2014-1904
Ertaina
FALSE
Zaurgarritasuna spring-web-mvc osagaiari dagokio
-
CVE-2014-3625
CVE-2014-3625
Ertaina
FALSE
Zaurgarritasuna spring-web-mvc osagaiari dagokio
-
CVE-2016-9878
CVE-2016-9878
High
FALSE
Zaurgarritasuna spring-web-mvc osagaiari dagokio
-
CVE-2018-1270
CVE-2018-1270
High
FALSE
Udaberri-espresioa/udaberriko-mezuetarako
-
CVE-2018-1271
CVE-2018-1271
Ertaina
FALSE
Zaurgarritasuna spring-web-mvc osagaiari dagokio
-
CVE-2018-1272
CVE-2018-1272
High
TRUE
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
Ertaina
TRUE
SONATYPE-2015-0327
-
-
Behe-
TRUE
struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
Ertaina
TRUE
udaberria-tx:3.0.5
-
CVE-2011-2730
-
High
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2011-2894
-
High
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2013-4152
-
Ertaina
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2013-6429
-
Ertaina
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2013-6430
-
Ertaina
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2013-7315
-
Ertaina
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2014-0054
-
Ertaina
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2014-0225
-
High
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2014-1904
-
Ertaina
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2014-3625
-
Ertaina
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2016-9878
-
High
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2018-1270
-
High
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2018-1271
-
Ertaina
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
-
CVE-2018-1272
-
Ertaina
FALSE
Ahultasuna ez da spring-tx-en espezifikoa
struts-nukleoa:1.3.8
-
CVE-2011-5057 (OSSINDEX)
Ertaina
FASLE
Strutsekiko ahultasuna 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
High
FALSE
Strutsekiko ahultasuna 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
Ertaina
FALSE
Strutsekiko ahultasuna 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
High
FALSE
Strutsekiko ahultasuna 2
CVE-2016-1182
3VE-2016-1182
-
High
TRUE
-
-
CVE-2011-5057
Ertaina
FALSE
Strutsekiko ahultasuna 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
High
FALSE
Strutsekiko ahultasuna 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
Ertaina
FALSE
Strutsekiko ahultasuna 2
CVE-2015-0899
CVE-2015-0899
-
High
TRUE
-
CVE-2012-0394
CVE-2012-0394
Ertaina
FALSE
Strutsekiko ahultasuna 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
High
FALSE
Strutsekiko ahultasuna 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
High
FALSE
Strutsekiko ahultasuna 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
High
FASLE
Strutsekiko ahultasuna 2
-
CVE-2013-2115
CVE-2013-2115
High
FASLE
Strutsekiko ahultasuna 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
High
FASLE
Strutsekiko ahultasuna 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
High
FASLE
Strutsekiko ahultasuna 2
CVE-2014-0114
CVE-2014-0114
-
High
TRUE
-
CVE-2015-2992
CVE-2015-2992
Ertaina
FALSE
Strutsekiko ahultasuna 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
High
FALSE
Strutsekiko ahultasuna 2
CVE-2016-1181
CVE-2016-1181
-
High
TRUE
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
High
FALSE
Strutsekiko ahultasuna 2
xwork-core:2.3.30
CVE-2017-9804
-
-
High
TRUE
SONATYPE-2017-0173
-
-
High
TRUE
CVE-2017-7672
-
-
High
FALSE
CVE-2017-9804 kopia
SONATYPE-2016-0127
-
-
High
TRUE
struts2-nukleoa:2.3.30
-
CVE-2016-6795
CVE-2016-6795
High
TRUE
-
CVE-2017-9787
CVE-2017-9787
High
TRUE
-
CVE-2017-9791
CVE-2017-9791
High
TRUE
-
CVE-2017-9793
-
High
FALSE
CVE-2018-1327 kopia
-
CVE-2017-9804
-
High
TRUE
-
CVE-2017-9805
CVE-2017-9805
High
TRUE
CVE-2016-4003
-
-
Ertaina
FALSE
Apache Struts 2.x 2.3.28ra arte aplika daiteke, hau da, 2.3.30 bertsioa. Dena den, deskribapenean oinarrituta, CVE baliozkoa da Struts 2-ren edozein bertsiotarako JRE 1.7 edo gutxiago erabiltzen bada. Antza denez, hemen berreseguratzea erabaki zuten, baina GEZURRA dirudi
-
CVE-2018-1327
CVE-2018-1327
High
TRUE
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
High
TRUE
Equifax hacker-ek 2017an ustiatu zuten ahultasun bera
CVE-2017-12611
CVE-2017-12611
-
High
TRUE
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
High
TRUE
struts-taglib:1.3.8
-
CVE-2012-0394
-
Ertaina
FALSE
Struts2-nukleoetarako
-
CVE-2013-2115
-
High
FALSE
Struts2-nukleoetarako
-
CVE-2014-0114
-
High
FALSE
commons-beanutilsentzat
-
CVE-2015-0899
-
High
FALSE
Ez da taglib-i aplikatzen
-
CVE-2015-2992
-
Ertaina
FALSE
Struts2-coreri egiten dio erreferentzia
-
CVE-2016-1181
-
High
FALSE
Ez da taglib-i aplikatzen
-
CVE-2016-1182
-
High
FALSE
Ez da taglib-i aplikatzen
zutoin-teilak-1.3.8
-
CVE-2012-0394
-
Ertaina
FALSE
Struts2-nukleoetarako
-
CVE-2013-2115
-
High
FALSE
Struts2-nukleoetarako
-
CVE-2014-0114
-
High
FALSE
commons-beanutils azpian
-
CVE-2015-0899
-
High
FALSE
Ez da fitxetan aplikatzen
-
CVE-2015-2992
-
Ertaina
FALSE
Struts2-nukleoetarako
-
CVE-2016-1181
-
High
FALSE
Ez da taglib-i aplikatzen
-
CVE-2016-1182
-
High
FALSE
Ez da taglib-i aplikatzen
Iturria: www.habr.com