La graveco de analizo de triaj programaraj komponantoj (Software Composition Analysis - SCA) en la evoluprocezo kreskas kun la publikigo de jaraj raportoj pri la vundeblecoj de malfermfontaj bibliotekoj, kiuj estas publikigitaj de Synopsys, Sonatype, Snyk kaj White Source. . Laŭ la raporto
Unu el la plej ilustraj kazoj
Ĉi tiu artikolo diskutos la aferon elekti ilon por fari SCA el la vidpunkto de la kvalito de la analizrezultoj. Funkcia komparo de la iloj ankaŭ estos disponigita. La procezo de integriĝo en CI/KD kaj integriĝkapabloj restos por postaj publikaĵoj. Vasta gamo da iloj estis prezentita fare de OWASP
Kiel ĝi funkcias
Ni rigardu kiel aspektas CPE:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- parto: Indiko ke la komponanto rilatas al la aplikaĵo (a), operaciumo (o), aparataro (h) (Bezonata)
- Vendisto: Produkta Produktanto Nomo (Bezonata)
- produkto: Produkta Nomo (Bezonata)
- versio: Komponanta versio (Malnoviĝinta ero)
- ĝisdatigo: Paka ĝisdatigo
- eldono: Heredaĵa versio (malrekomendita ero)
- lingvo: Lingvo difinita en RFC-5646
- SW Eldono: Versio de programaro
- Celo SW: Softvarmedio en kiu la produkto funkcias
- Celo HW: La aparatara medio en kiu la produkto funkcias
- Alia: Informoj pri Provizanto aŭ Produkto
Ekzemplo CPE aspektas jene:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
La linio signifas, ke CPE-versio 2.3 priskribas la aplikaĵon de la fabrikanto pivotal_software
kun la titolo spring_framework
versio 3.0.0. Se ni malfermas vundeblecon
La URL ankaŭ estas uzata de SCA-iloj. La paka URL-formato estas jena:
scheme:type/namespace/name@version?qualifiers#subpath
- Skemo: Ĉiam estos 'pkg' indikante, ke ĉi tio estas pakaĵa URL (Bezonata)
- tipo: La "tipo" de la pakaĵo aŭ la "protokolo" de la pakaĵo, kiel ekzemple maven, npm, nuget, gem, pypi, ktp. (Bezonata objekto)
- Nomspaco: Iu nomprefikso, kiel Maven-grupidentigilo, Docker-bildposedanto, GitHub-uzanto aŭ organizo. Laŭvola kaj dependas de la tipo.
- nomo: Nomo de pakaĵo (Bezonata)
- versio: Paka versio
- Kvalifikiĝintoj: Pliaj kvalifikaj datumoj por la pakaĵo, kiel OS, arkitekturo, distribuo, ktp. Laŭvola kaj tipspecifa.
- Subvojo: Plia vojo en la pakaĵo rilate al la paka radiko
Ekzemple:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
Ekzemplo de kia BOM povus aspekti en XML-formato:
<?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 povas esti uzata ne nur kiel enigo-parametroj por Dependency Track, sed ankaŭ por inventari softvarkomponentojn en la provizoĉeno, ekzemple, por disponigado de softvaro al kliento. En 2014, leĝo estis eĉ proponita en Usono
Revenante al SCA, Dependency Track havas pretajn integriĝojn kun Sciigo-Platformoj kiel Slack, vundeblaj mastrumaj sistemoj kiel Kenna Security. Ankaŭ indas diri, ke Dependency Track, interalie, identigas malmodernajn versiojn de pakaĵoj kaj provizas informojn pri permesiloj (pro SPDX-subteno).
Se ni parolas specife pri la kvalito de SCA, tiam estas fundamenta diferenco.
Dependeca Trako ne akceptas la projekton kiel enigaĵon, sed prefere la BOM. Ĉi tio signifas, ke se ni volas testi la projekton, ni unue devas generi bom.xml, ekzemple uzante CycloneDX. Tiel, Dependency Track estas rekte dependa de CycloneDX. Samtempe ĝi permesas personigon. Jen kion skribis la teamo OZON
Ni resumu kelkajn el la funkciaj trajtoj, kaj ankaŭ konsideru la subtenatajn lingvojn por analizo:
Lingvo
Nexus IQ
Dependeco Kontrolo
Dependeco-Trako
java
+
+
+
C / C ++
+
+
-
C#
+
+
-
.Net
+
+
+
erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
python
+
+
+
Rubeno
+
+
+
Perl
-
-
-
Scala
+
+
+
Objektivo C
+
+
-
Swift
+
+
-
R
+
-
-
Go
+
+
+
Funcionalidad
Funcionalidad
Nexus IQ
Dependeco Kontrolo
Dependeco-Trako
La kapablo certigi, ke komponantoj uzitaj en la fontkodo estas kontrolitaj por licencita pureco
+
-
+
Kapablo skani kaj analizi por vundeblecoj kaj permesila pureco por Docker-bildoj
+ Integriĝo kun Clair
-
-
Kapablo agordi sekurecpolitikojn por uzi malfermfontajn bibliotekojn
+
-
-
Kapablo skani malfermfontajn deponejojn por vundeblaj komponantoj
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Havebleco de faka esplorgrupo
+
-
-
Fermita buklo operacio
+
+
+
Uzante triajn datumbazojn
+ Fermita Sonatype-datumbazo
+ Sonatype OSS, NPM Publikaj Konsilistoj
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, subteno por sia propra vundebla datumbazo
Kapablo filtri malfermfontajn komponantojn kiam vi provas ŝargi en la disvolvan buklon laŭ agorditaj politikoj
+
-
-
Rekomendoj por ripari vundeblecojn, havebleco de ligiloj al korektoj
+
+- (dependas de la priskribo en publikaj datumbazoj)
+- (dependas de la priskribo en publikaj datumbazoj)
Rango de detektitaj vundeblecoj laŭ severeco
+
+
+
Rol-bazita alirmodelo
+
-
+
CLI-subteno
+
+
+- (nur por CycloneDX)
Specimenado/ordigo de vundeblecoj laŭ difinitaj kriterioj
+
-
+
Panelo laŭ stato de la aplikaĵo
+
-
+
Generado de raportoj en formato PDF
+
-
-
Generante raportojn en formato JSONCSV
+
+
-
Ruslingva subteno
-
-
-
Integrigaj kapabloj
Integriĝo
Nexus IQ
Dependeco Kontrolo
Dependeco-Trako
Integriĝo de LDAP/Active Directory
+
-
+
Integriĝo kun kontinua integriga sistemo Bambuo
+
-
-
Integriĝo kun kontinua integriga sistemo TeamCity
+
-
-
Integriĝo kun kontinua integriga sistemo GitLab
+
+- (kiel kromaĵo por GitLab)
+
Integriĝo kun kontinua integriga sistemo Jenkins
+
+
+
Havebleco de kromaĵoj por IDE
+ IntelliJ, Eclipse, Visual Studio
-
-
Subteno por kutima integriĝo per retservoj (API) de la ilo
+
-
+
Dependeco Kontrolo
Unua komenco
Ni rulu Dependecan Kontrolon sur intence vundebla aplikaĵo
Por tio ni uzos
mvn org.owasp:dependency-check-maven:check
Kiel rezulto, dependency-check-report.html aperos en la cela dosierujo.
Ni malfermu la dosieron. Post resumaj informoj pri la totala nombro da vundeblecoj, ni povas vidi informojn pri vundeblecoj kun alta nivelo de Severeco kaj Konfido, indikante la pakaĵon, CPE kaj nombron da CVE-oj.
Poste venas pli detalaj informoj, precipe la bazo sur kiu la decido estis farita (pruvo), tio estas, certa BOM.
Poste venas la priskribo de CPE, PURL kaj CVE. Cetere, rekomendoj por korekto ne estas inkluzivitaj pro ilia foresto en la NVD-datumbazo.
Por sisteme vidi skanajn rezultojn, vi povas agordi Nginx kun minimumaj agordoj, aŭ sendi la rezultajn difektojn al difekta administra sistemo, kiu subtenas konektilojn al Dependeca Kontrolo. Ekzemple, Defect Doĵo.
Dependeco-Trako
fikso
Dependency Track, siavice, estas ret-bazita platformo kun montraj grafikaĵoj, do la urĝa problemo pri stokado de difektoj en triaparta solvo ne aperas ĉi tie.
La subtenataj skriptoj por instalado estas: Docker, WAR, Executable WAR.
Unua komenco
Ni iras al la URL de la funkcianta servo. Ni ensalutas per administranto/administranto, ŝanĝas la ensaluton kaj pasvorton, kaj poste venas al la Panelo. La sekva afero, kiun ni faros, estas krei projekton por testa aplikaĵo en Java en Hejmo/Projektoj → Krei Projekton . Ni prenu la DVJA kiel ekzemplon.
Ĉar Dependeca Trako povas nur akcepti BOM kiel enigaĵon, ĉi tiu BOM devas esti prenita. Ni profitu
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Ni ricevas bom.xml kaj ŝarĝas la dosieron en la kreita projekto DVJA → Dependecoj → Alŝutu BOM.
Ni iru al Administrado → Analiziloj. Ni komprenas, ke ni nur havas Internan Analizilon ebligita, kiu inkluzivas NVD. Ni ankaŭ konektu Sonatype OSS Index.
Tiel, ni ricevas la sekvan bildon por nia projekto:
Ankaŭ en la listo vi povas trovi unu vundeblecon aplikeblan al Sonatype OSS:
La ĉefa seniluziiĝo estis, ke Dependency Track ne plu akceptas Dependecan Kontrolon xml-raportojn. La plej novaj subtenataj versioj de la Dependeca Kontrolo-integriĝo estis 1.0.0 - 4.0.2, dum mi provis 5.3.2.
tie
Nexus IQ
Unua komenco
Instalado de Nexus IQ venas de la arkivoj de
Post ensaluti en la konzolon, vi devas krei Organizon kaj Aplikon.
Kiel vi povas vidi, la aranĝo en la kazo de IQ estas iom pli komplika, ĉar ni ankaŭ bezonas krei politikojn, kiuj estas aplikeblaj por malsamaj "stadioj" (dev, build, stage, release). Ĉi tio estas necesa por bloki vundeblajn komponantojn kiam ili moviĝas tra la dukto pli proksime al produktado, aŭ bloki ilin tuj kiam ili eniras la Nexus Repo kiam elŝutite de programistoj.
Por senti la diferencon inter malferma fonto kaj entrepreno, ni faru la saman skanadon per Nexus IQ sammaniere tra 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>
Sekvu la URL al la generita raporto en la retinterfaco de IQ:
Ĉi tie vi povas vidi ĉiujn politikajn malobservojn indikante malsamajn signifonivelojn (de Informoj ĝis Sekureca Kritika). La litero D apud la komponento signifas ke la komponento estas Rekta Dependeco, kaj la litero T apud la komponento signifas ke la komponento estas Transitiva Dependeco, tio estas, ĝi estas transitiva.
Cetere, la raporto
Se ni malfermas unu el la malobservoj de la politiko de Nexus IQ, ni povas vidi priskribon de la komponanto, kaj ankaŭ Versio-Grafikon, kiu montras la lokon de la nuna versio en la tempografiko, kaj ankaŭ en kiu punkto la vundebleco ĉesas. esti vundebla. La alteco de la kandeloj sur la grafikaĵo montras la popularecon uzi ĉi tiun komponanton.
Se vi iras al la sekcio de vundeblecoj kaj vastigas la CVE, vi povas legi priskribon de ĉi tiu vundebleco, rekomendojn por forigo, kaj ankaŭ la kialon, kial ĉi tiu komponanto estis malobservita, tio estas, la ĉeesto de la klaso. DiskFileitem.class
.
Ni resumu nur tiujn rilatajn al triaj Java-komponentoj, forigante la js-komponentojn. En krampoj ni indikas la nombron da vundeblecoj, kiuj estis trovitaj ekster NVD.
Tuta Nexus IQ:
- Dependecoj Skanitaj: 62
- Vundeblaj Dependecoj: 16
- Vundeblecoj Trovitaj: 42 (8 sonatip db)
Tuta Dependeca Kontrolo:
- Dependecoj Skanitaj: 47
- Vundeblaj Dependecoj: 13
- Vundeblecoj Trovitaj: 91 (14 sonatipoj)
Totala Dependeca Vojo:
- Dependecoj Skanitaj: 59
- Vundeblaj Dependecoj: 10
- Vundeblecoj Trovitaj: 51 (1 sonatipoj)
En la sekvaj paŝoj, ni analizos la rezultojn akiritajn kaj eltrovos, kiu el ĉi tiuj vundeblecoj estas vera difekto kaj kiu estas falsa pozitivo.
Malgarantio
Ĉi tiu recenzo ne estas nediskutebla vero. La aŭtoro ne havis celon reliefigi apartan instrumenton kontraŭ la fono de aliaj. La celo de la revizio estis montri la mekanismojn de funkciado de SCA-iloj kaj manierojn kontroli iliajn rezultojn.
Komparo de rezultoj
Kondiĉoj:
Malvera pozitivo por triapartaj komponent vundeblecoj estas:
- CVE miskongruo al identigita komponento
- Ekzemple, se vundebleco estas identigita en la kadro struts2, kaj la ilo montras al komponento de la kadro struts-kaheloj, al kiu ĉi tiu vundebleco ne validas, tiam ĉi tio estas falsa pozitivo.
- CVE miskongruo al la identigita versio de la komponento
- Ekzemple, la vundebleco estas ligita al python-versio > 3.5 kaj la ilo markas version 2.7 kiel vundebla - ĉi tio estas falsa pozitivo, ĉar fakte la vundebleco nur validas por la produkta branĉo 3.x.
- Duobligi CVE
- Ekzemple, se la SCA precizigas CVE kiu ebligas RCE, tiam la SCA precizigas CVE por tiu sama komponento kiu validas por Cisco-produktoj trafitaj per tiu RCE. En ĉi tiu kazo ĝi estos falsa pozitiva.
- Ekzemple, CVE estis trovita en printempa-retkomponento, post kiu SCA montras al la sama CVE en aliaj komponentoj de la Printempa Kadro, dum la CVE havas nenion farendaĵo kun aliaj komponentoj. En ĉi tiu kazo ĝi estos falsa pozitiva.
La celo de la studo estis la Open Source projekto DVJA. La studo implikis nur javajn komponantojn (sen js).
Resumaj rezultoj
Ni iru rekte al la rezultoj de mana revizio de identigitaj vundeblecoj. La plena raporto por ĉiu CVE troveblas en la Apendico.
Resumaj rezultoj por ĉiuj vundeblecoj:
Parametro
Nexus IQ
Dependeco Kontrolo
Dependeco-Trako
Totalaj vundeblecoj identigitaj
42
91
51
Malĝuste identigitaj vundeblecoj (malvere pozitivaj)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Neniuj rilataj vundeblecoj trovitaj (malvera negativa)
10
20
27
Resumaj rezultoj laŭ komponantoj:
Parametro
Nexus IQ
Dependeco Kontrolo
Dependeco-Trako
Totalaj komponantoj identigitaj
62
47
59
Totalaj vundeblaj komponantoj
16
13
10
Malĝuste identigitaj vundeblaj komponantoj (malvere pozitivaj)
1
5
0
Malĝuste identigitaj vundeblaj komponantoj (malvere pozitivaj)
0
6
6
Ni konstruu vidajn grafikaĵojn por taksi la rilatumon de falsa pozitiva kaj falsa negativa al la totala nombro da vundeblecoj. Komponantoj estas markitaj horizontale, kaj vundeblecoj identigitaj en ili estas markitaj vertikale.
Por komparo, simila studo estis farita de la Sonatype-teamo testanta projekton de 1531 komponentoj uzante OWASP Dependency Check. Kiel ni povas vidi, la proporcio de bruo al ĝustaj respondoj estas komparebla al niaj rezultoj.
fonto:
Ni rigardu kelkajn CVE-ojn el niaj skanaj rezultoj por kompreni la kialon de ĉi tiuj rezultoj.
Legi pli
NeXX
Ni unue rigardu kelkajn interesajn punktojn pri la Sonatype Nexus IQ.
Nexus IQ atentigas problemon kun deserialigo kun la kapablo plenumi RCE en la Printempa Kadro plurfoje. CVE-2016-1000027 en spring-web:3.0.5 unuafoje, kaj CVE-2011-2894 en spring-context:3.0.5 kaj spring-core:3.0.5. Komence, ŝajnas, ke ekzistas duobligo de vundebleco tra pluraj CVEoj. Ĉar, se vi rigardas CVE-2016-1000027 kaj CVE-2011-2894 en la datumbazo NVD, ŝajnas, ke ĉio estas evidenta
Komponanto
Vundebleco
printempo-retejo:3.0.5
CVE-2016-1000027
printempo-kunteksto:3.0.5
CVE-2011-2894
printempo-kerno:3.0.5
CVE-2011-2894
Priskribo
Priskribo
CVE-2011-2894 mem estas sufiĉe fama. En la raporto RemoteInvocationSerializingExporter
en CVE-2011-2894, la vundebleco estas observita en HttpInvokerServiceExporter
. Jen kion Nexus IQ diras al ni:
Tamen, estas nenio tia en NVD, tial Dependeco-Kontrolo kaj Dependeco-Spuro ĉiu ricevas falsan negativon.
Ankaŭ el la priskribo de CVE-2011-2894 oni povas kompreni, ke la vundebleco ja ĉeestas kaj spring-context:3.0.5 kaj spring-core:3.0.5. Konfirmo de tio troveblas en artikolo de la persono kiu trovis ĉi tiun vundeblecon.
NeXX
Komponanto
Vundebleco
rezulto
struts2-kerno:2.3.30
CVE-2016-4003
FALSA
Se ni studas la vundeblecon CVE-2016-4003, ni komprenos, ke ĝi estis riparita en versio 2.3.28, tamen, Nexus IQ raportas ĝin al ni. Estas noto en la priskribo de la vundebleco:
Tio estas, la vundebleco ekzistas nur kune kun malmoderna versio de la JRE, pri kiu ili decidis averti nin. Tamen, ni konsideras ĉi tiun Falsan Pozitivan, kvankam ne la plej malbona.
Numero 3
Komponanto
Vundebleco
rezulto
xwork-kerno:2.3.30
CVE-2017-9804
VERA
xwork-kerno:2.3.30
CVE-2017-7672
FALSA
Se ni rigardas la priskribojn de CVE-2017-9804 kaj CVE-2017-7672, ni komprenos, ke la problemo estas URLValidator class
, kun CVE-2017-9804 devenanta de CVE-2017-7672. La ĉeesto de la dua vundebleco ne portas ajnan utilan ŝarĝon krom la fakto, ke ĝia severeco pliiĝis al Alta, do ni povas konsideri ĝin nenecesa bruo.
Ĝenerale, neniuj aliaj falsaj pozitivoj estis trovitaj por Nexus IQ.
NeXX
Estas pluraj aferoj, kiuj elstaras IQ de aliaj solvoj.
Komponanto
Vundebleco
rezulto
printempo-retejo:3.0.5
CVE-2020-5398
VERA
La CVE en la NVD deklaras, ke ĝi nur validas por versioj 5.2.x antaŭ 5.2.3, 5.1.x antaŭ 5.1.13, kaj versioj 5.0.x antaŭ 5.0.16, tamen, se ni rigardas la CVE-priskribon en Nexus IQ , tiam ni vidos la jenon:
Konsila Devio-Avizo: La Sonatype-sekureca esplorteamo malkovris, ke ĉi tiu vundebleco estis enkondukita en versio 3.0.2.RELEASE kaj ne 5.0.x kiel dirite en la konsilo.
Ĉi tio estas sekvata de PoC por ĉi tiu vundebleco, kiu deklaras, ke ĝi ĉeestas en versio 3.0.5.
Falsa negativo estas sendita al Dependeca Kontrolo kaj Dependeco-Spuro.
NeXX
Ni rigardu falsan pozitivon por Dependeca Kontrolo kaj Dependeco-Spuro.
Dependeca Kontrolo elstaras pro tio, ke ĝi reflektas tiujn CVE-ojn kiuj validas por la tuta kadro en NVD al tiuj komponentoj al kiuj ĉi tiuj CVE-oj ne validas. Ĉi tio koncernas CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, kiu dependas de kontrolo. ” al struts-taglib:1.3.8 kaj struts-tiles-1.3.8. Ĉi tiuj komponantoj havas nenion komunan kun tio, kio estas priskribita en la CVE - pettraktado, paĝvalidigo ktp. Ĉi tio estas pro la fakto, ke tio, kion ĉi tiuj CVE-oj kaj komponantoj havas komune, estas nur la kadro, tial Dependency Check konsideris ĝin vundebleco.
La sama situacio estas kun spring-tx:3.0.5, kaj simila situacio kun struts-core:1.3.8. Por struts-kerno, Dependeca Kontrolo kaj Dependeca Vojo trovis multajn vundeblecojn, kiuj efektive aplikeblas al struts2-kerno, kiu estas esence aparta kadro. En ĉi tiu kazo, Nexus IQ ĝuste komprenis la bildon kaj en la CVE-oj kiujn ĝi elsendis, ĝi indikis, ke struts-kerno atingis la finon de vivo kaj necesas moviĝi al struts2-kerno.
NeXX
En iuj situacioj, estas maljuste interpreti evidentan eraron pri Dependeco-Kontrolo kaj Dependeco-Spuro. Precipe CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, kiuj estas Dependeca Kontrolo kaj Dependeco. Trako atribuita al spring-core:3.0.5 fakte apartenas al spring-web:3.0.5. Samtempe, iuj el ĉi tiuj CVE-oj ankaŭ estis trovitaj de Nexus IQ, tamen, IQ ĝuste identigis ilin al alia komponento. Ĉar ĉi tiuj vundeblecoj ne estis trovitaj en printempo-kerno, oni ne povas argumenti, ke ili principe ne estas en la kadro kaj malfermfontaj iloj ĝuste atentigis ĉi tiujn vundeblecojn (ili nur maltrafis).
trovoj
Kiel ni povas vidi, determini la fidindecon de identigitaj vundeblecoj per mana revizio ne donas malambiguajn rezultojn, tial polemikaj aferoj aperas. La rezultoj estas, ke la solvo Nexus IQ havas la plej malaltan malveran pozitivan indicon kaj la plej altan precizecon.
Antaŭ ĉio, ĉi tio estas pro la fakto, ke la Sonatype-teamo vastigis la priskribon por ĉiu vundebleco de CVE de NVD en siaj datumbazoj, indikante la vundeblecojn por aparta versio de la komponantoj ĝis la klaso aŭ funkcio, farante plian esploradon (ekzemple. , kontrolante vundeblecojn sur pli malnovaj softvarversioj).
Gravan influon sur la rezultoj ankaŭ ludas tiuj vundeblecoj, kiuj ne estis inkluditaj en NVD, sed tamen ĉeestas en la datumbazo Sonatype kun la marko SONATYPE. Laŭ la raporto
Kiel rezulto, Dependeca Kontrolo produktas multe da bruo, mankas iuj vundeblaj komponantoj. Dependeca Vojo produktas malpli da bruo kaj detektas grandan nombron da komponantoj, kio ne videble vundas la okulojn en la interreta interfaco.
Tamen, praktiko montras, ke malferma fonto devus fariĝi la unuaj paŝoj al matura DevSecOps. La unua afero, pri kiu vi devus pensi, kiam vi integrigas SCA en evoluon, estas procezoj, nome, pensi kune kun administrado kaj rilataj fakoj pri kiaj idealaj procezoj devus aspekti en via organizo. Povas rezulti, ke por via organizo, komence, Dependeco-Kontrolo aŭ Dependeco-Trako kovros ĉiujn komercajn bezonojn, kaj Enterprise-solvoj estos logika daŭrigo pro la kreskanta komplekseco de la evoluantaj aplikaĵoj.
Apendico A: Komponantaj Rezultoj
Legendo:
- Alta—altaj kaj kritikaj nivelaj vundeblecoj en la komponanto
- Meza — Vundeblecoj de meza kritikeca nivelo en la komponento
- VERA — Vera pozitiva afero
- FALSA — Falsa pozitiva afero
Komponanto
Nexus IQ
Dependeco Kontrolo
Dependeco-Trako
rezulto
dom4j: 1.6.1
alta
alta
alta
VERA
log4j-kerno: 2.3
alta
alta
alta
VERA
log4j: 1.2.14
alta
alta
-
VERA
komunaj kolektoj:3.1
alta
alta
alta
VERA
commons-dosieralŝuto:1.3.2
alta
alta
alta
VERA
commons-beanutils:1.7.0
alta
alta
alta
VERA
commons-codec:1:10
mediumo
-
-
VERA
mysql-connector-java:5.1.42
alta
alta
alta
VERA
printempa esprimo:3.0.5
alta
komponanto ne trovita
VERA
printempo-retejo:3.0.5
alta
komponanto ne trovita
alta
VERA
printempo-kunteksto:3.0.5
mediumo
komponanto ne trovita
-
VERA
printempo-kerno:3.0.5
mediumo
alta
alta
VERA
struts2-config-browser-plugin:2.3.30
mediumo
-
-
VERA
printempo-tx:3.0.5
-
alta
-
FALSA
struts-kerno:1.3.8
alta
alta
alta
VERA
xwork-kerno: 2.3.30
alta
-
-
VERA
struts2-kerno: 2.3.30
alta
alta
alta
VERA
struts-taglib:1.3.8
-
alta
-
FALSA
apogtraboj-kaheloj-1.3.8
-
alta
-
FALSA
Apendico B: Vulnerability Rezultoj
Legendo:
- Alta—altaj kaj kritikaj nivelaj vundeblecoj en la komponanto
- Meza — Vundeblecoj de meza kritikeca nivelo en la komponento
- VERA — Vera pozitiva afero
- FALSA — Falsa pozitiva afero
Komponanto
Nexus IQ
Dependeco Kontrolo
Dependeco-Trako
Severity
rezulto
komento
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
alta
VERA
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
alta
VERA
log4j-kerno: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
alta
VERA
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
malalte
VERA
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
alta
VERA
-
CVE-2020-9488
-
malalte
VERA
SONATYPE-2010-0053
-
-
alta
VERA
komunaj kolektoj:3.1
-
CVE-2015-6420
CVE-2015-6420
alta
FALSA
Duoblaj RCE(OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
alta
FALSA
Duoblaj RCE(OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
alta
VERA
commons-dosieralŝuto:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
alta
VERA
SONATYPE-2014-0173
-
-
mediumo
VERA
commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
alta
VERA
-
CVE-2019-10086
CVE-2019-10086
alta
FALSA
La vundebleco validas nur por versioj 1.9.2+
commons-codec:1:10
SONATYPE-2012-0050
-
-
mediumo
VERA
mysql-connector-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
alta
VERA
CVE-2019-2692
CVE-2019-2692
-
mediumo
VERA
-
CVE-2020-2875
-
mediumo
FALSA
La sama vundebleco kiel CVE-2019-2692, sed kun la noto "atakoj povas signife influi pliajn produktojn"
-
CVE-2017-15945
-
alta
FALSA
Ne rilata al mysql-connector-java
-
CVE-2020-2933
-
malalte
FALSA
Duplikato de CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
mediumo
VERA
printempa esprimo:3.0.5
CVE-2018-1270
komponanto ne trovita
-
alta
VERA
CVE-2018-1257
-
-
mediumo
VERA
printempo-retejo:3.0.5
CVE-2016-1000027
komponanto ne trovita
-
alta
VERA
CVE-2014-0225
-
CVE-2014-0225
alta
VERA
CVE-2011-2730
-
-
alta
VERA
-
-
CVE-2013-4152
mediumo
VERA
CVE-2018-1272
-
-
alta
VERA
CVE-2020-5398
-
-
alta
VERA
Ilustra ekzemplo favore al IQ: "La Sonatype-sekureca esplorteamo malkovris, ke ĉi tiu vundebleco estis enkondukita en versio 3.0.2.RELEASE kaj ne 5.0.x kiel dirite en la konsilo."
CVE-2013-6429
-
-
mediumo
VERA
CVE-2014-0054
-
CVE-2014-0054
mediumo
VERA
CVE-2013-6430
-
-
mediumo
VERA
printempo-kunteksto:3.0.5
CVE-2011-2894
komponanto ne trovita
-
mediumo
VERA
printempo-kerno:3.0.5
-
CVE-2011-2730
CVE-2011-2730
alta
VERA
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
mediumo
VERA
-
-
CVE-2013-4152
mediumo
FALSA
Duplikato de la sama vundebleco en printempo-retejo
-
CVE-2013-4152
-
mediumo
FALSA
La vundebleco rilatas al la printempa-reteja komponanto
-
CVE-2013-6429
CVE-2013-6429
mediumo
FALSA
La vundebleco rilatas al la printempa-reteja komponanto
-
CVE-2013-6430
-
mediumo
FALSA
La vundebleco rilatas al la printempa-reteja komponanto
-
CVE-2013-7315
CVE-2013-7315
mediumo
FALSA
DIVIDE el CVE-2013-4152. + La vundebleco rilatas al la printempa retejo
-
CVE-2014-0054
CVE-2014-0054
mediumo
FALSA
La vundebleco rilatas al la printempa-reteja komponanto
-
CVE-2014-0225
-
alta
FALSA
La vundebleco rilatas al la printempa-reteja komponanto
-
-
CVE-2014-0225
alta
FALSA
Duplikato de la sama vundebleco en printempo-retejo
-
CVE-2014-1904
CVE-2014-1904
mediumo
FALSA
La vundebleco rilatas al la komponanto spring-web-mvc
-
CVE-2014-3625
CVE-2014-3625
mediumo
FALSA
La vundebleco rilatas al la komponanto spring-web-mvc
-
CVE-2016-9878
CVE-2016-9878
alta
FALSA
La vundebleco rilatas al la komponanto spring-web-mvc
-
CVE-2018-1270
CVE-2018-1270
alta
FALSA
Por printempa-esprimo/printempaj-mesaĝoj
-
CVE-2018-1271
CVE-2018-1271
mediumo
FALSA
La vundebleco rilatas al la komponanto spring-web-mvc
-
CVE-2018-1272
CVE-2018-1272
alta
VERA
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
mediumo
VERA
SONATYPE-2015-0327
-
-
malalte
VERA
struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
mediumo
VERA
printempo-tx:3.0.5
-
CVE-2011-2730
-
alta
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2011-2894
-
alta
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2013-4152
-
mediumo
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2013-6429
-
mediumo
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2013-6430
-
mediumo
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2013-7315
-
mediumo
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2014-0054
-
mediumo
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2014-0225
-
alta
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2014-1904
-
mediumo
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2014-3625
-
mediumo
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2016-9878
-
alta
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2018-1270
-
alta
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2018-1271
-
mediumo
FALSA
La vundebleco ne estas specifa por spring-tx
-
CVE-2018-1272
-
mediumo
FALSA
La vundebleco ne estas specifa por spring-tx
struts-kerno:1.3.8
-
CVE-2011-5057 (OSSINDEX)
mediumo
FASLE
Vundebleco al Struts 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
alta
FALSA
Vundebleco al Struts 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
mediumo
FALSA
Vundebleco al Struts 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
alta
FALSA
Vundebleco al Struts 2
CVE-2016-1182
3VE-2016-1182
-
alta
VERA
-
-
CVE-2011-5057
mediumo
FALSA
Vundebleco al Struts 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
alta
FALSA
Vundebleco al Struts 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
mediumo
FALSA
Vundebleco al Struts 2
CVE-2015-0899
CVE-2015-0899
-
alta
VERA
-
CVE-2012-0394
CVE-2012-0394
mediumo
FALSA
Vundebleco al Struts 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
alta
FALSA
Vundebleco al Struts 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
alta
FALSA
Vundebleco al Struts 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
alta
FASLE
Vundebleco al Struts 2
-
CVE-2013-2115
CVE-2013-2115
alta
FASLE
Vundebleco al Struts 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
alta
FASLE
Vundebleco al Struts 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
alta
FASLE
Vundebleco al Struts 2
CVE-2014-0114
CVE-2014-0114
-
alta
VERA
-
CVE-2015-2992
CVE-2015-2992
mediumo
FALSA
Vundebleco al Struts 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
alta
FALSA
Vundebleco al Struts 2
CVE-2016-1181
CVE-2016-1181
-
alta
VERA
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
alta
FALSA
Vundebleco al Struts 2
xwork-kerno:2.3.30
CVE-2017-9804
-
-
alta
VERA
SONATYPE-2017-0173
-
-
alta
VERA
CVE-2017-7672
-
-
alta
FALSA
Duplikato de CVE-2017-9804
SONATYPE-2016-0127
-
-
alta
VERA
struts2-kerno:2.3.30
-
CVE-2016-6795
CVE-2016-6795
alta
VERA
-
CVE-2017-9787
CVE-2017-9787
alta
VERA
-
CVE-2017-9791
CVE-2017-9791
alta
VERA
-
CVE-2017-9793
-
alta
FALSA
Duplikato de CVE-2018-1327
-
CVE-2017-9804
-
alta
VERA
-
CVE-2017-9805
CVE-2017-9805
alta
VERA
CVE-2016-4003
-
-
mediumo
FALSA
Aplikebla al Apache Struts 2.x ĝis 2.3.28, kiu estas versio 2.3.30. Tamen, surbaze de la priskribo, la CVE validas por iu ajn versio de Struts 2 se JRE 1.7 aŭ malpli estas uzata. Ŝajne ili decidis reasekurigi nin ĉi tie, sed ĝi aspektas pli kiel FALSA
-
CVE-2018-1327
CVE-2018-1327
alta
VERA
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
alta
VERA
La sama vundebleco, kiun Equifax-piratoj ekspluatis en 2017
CVE-2017-12611
CVE-2017-12611
-
alta
VERA
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
alta
VERA
struts-taglib:1.3.8
-
CVE-2012-0394
-
mediumo
FALSA
Por struts2-kerno
-
CVE-2013-2115
-
alta
FALSA
Por struts2-kerno
-
CVE-2014-0114
-
alta
FALSA
Por commons-beanutils
-
CVE-2015-0899
-
alta
FALSA
Ne validas por taglib
-
CVE-2015-2992
-
mediumo
FALSA
Rilatas al struts2-kerno
-
CVE-2016-1181
-
alta
FALSA
Ne validas por taglib
-
CVE-2016-1182
-
alta
FALSA
Ne validas por taglib
apogtraboj-kaheloj-1.3.8
-
CVE-2012-0394
-
mediumo
FALSA
Por struts2-kerno
-
CVE-2013-2115
-
alta
FALSA
Por struts2-kerno
-
CVE-2014-0114
-
alta
FALSA
Sub commons-beanutils
-
CVE-2015-0899
-
alta
FALSA
Ne validas por kaheloj
-
CVE-2015-2992
-
mediumo
FALSA
Por struts2-kerno
-
CVE-2016-1181
-
alta
FALSA
Ne validas por taglib
-
CVE-2016-1182
-
alta
FALSA
Ne validas por taglib
fonto: www.habr.com