Význam analýzy softvérových komponentov tretích strán (Software Composition Analysis - SCA) v procese vývoja rastie s vydávaním výročných správ o zraniteľnosti open source knižníc, ktoré publikujú Synopsys, Sonatype, Snyk a White Source. . Podľa správy
Jeden z najnázornejších prípadov
Tento článok rozoberie problematiku výberu nástroja na vykonávanie SCA z pohľadu kvality výsledkov analýzy. Poskytne sa aj funkčné porovnanie nástrojov. Proces integrácie do CI/CD a integračné schopnosti budú ponechané na ďalšie publikácie. OWASP predstavil širokú škálu nástrojov
Princíp činnosti
Pozrime sa, ako CPE vyzerá:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- časť: Označenie, že komponent sa týka aplikácie (a), operačného systému (o), hardvéru (h) (povinné)
- Predávajúci: Názov výrobcu produktu (povinné)
- výrobok: Názov produktu (povinné)
- Verzia: Verzia komponentu (zastaraná položka)
- Update: Aktualizácia balíka
- Vydanie: Staršia verzia (zastaraná položka)
- Jazyk: Jazyk definovaný v RFC-5646
- Edícia SW: Verzia softvéru
- Cieľový SW: Softvérové prostredie, v ktorom produkt funguje
- Cieľový HW: Hardvérové prostredie, v ktorom produkt funguje
- Ostatné: Informácie o dodávateľovi alebo produkte
Príklad CPE vyzerá takto:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Riadok znamená, že CPE verzia 2.3 popisuje aplikačný komponent od výrobcu pivotal_software
s menom spring_framework
verzia 3.0.0. Ak otvoríme zraniteľnosť
Adresu URL používajú aj nástroje SCA. Formát adresy URL balíka je nasledujúci:
scheme:type/namespace/name@version?qualifiers#subpath
- schéma: Vždy tam bude 'pkg' označujúce, že toto je adresa URL balíka (povinné)
- Typ: „Typ“ balíka alebo „protokol“ balíka, ako napríklad maven, npm, nuget, gem, pypi atď. (Požadovaná položka)
- Menný priestor: Nejaká predpona názvu, napríklad ID skupiny Maven, vlastník obrázka Docker, používateľ GitHub alebo organizácia. Voliteľné a závisí od typu.
- Názov: Názov balíka (povinné)
- Verzia: Verzia balíka
- Kvalifikácia: Ďalšie kvalifikačné údaje pre balík, ako je OS, architektúra, distribúcia atď. Voliteľné a špecifické pre daný typ.
- Podcesta: Ďalšia cesta v balíku vzhľadom na koreň balíka
napríklad:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
Príklad toho, ako môže vyzerať kusovník vo formáte XML:
<?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>
Kusovník možno použiť nielen ako vstupné parametre pre Dependency Track, ale aj na inventarizáciu softvérových komponentov v dodávateľskom reťazci, napríklad na poskytovanie softvéru zákazníkovi. V roku 2014 bol dokonca v USA navrhnutý zákon
Vráťme sa k SCA, Dependency Track má hotové integrácie s platformami oznámení, ako je Slack, a systémami na správu zraniteľností, ako je Kenna Security. Za zmienku tiež stojí, že Dependency Track okrem iného identifikuje zastarané verzie balíkov a poskytuje informácie o licenciách (kvôli podpore SPDX).
Ak hovoríme konkrétne o kvalite SCA, tak je tu zásadný rozdiel.
Závislosť Track neakceptuje projekt ako vstup, ale skôr kusovník. To znamená, že ak chceme projekt otestovať, musíme najskôr vygenerovať bom.xml, napríklad pomocou CycloneDX. Závislosť Track je teda priamo závislá od CycloneDX. Zároveň umožňuje prispôsobenie. Toto napísal tím OZON
Poďme zhrnúť niektoré funkčné vlastnosti a tiež zvážiť podporované jazyky na analýzu:
Jazyk
Nexus IQ
Kontrola závislosti
Závislosť Track
Jáva
+
+
+
C / C ++
+
+
-
C#
+
+
-
.net
+
+
+
Erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Pytón
+
+
+
rubín
+
+
+
Perl
-
-
-
Scala
+
+
+
Cieľ C
+
+
-
Rýchly
+
+
-
R
+
-
-
Go
+
+
+
funkčnosť
funkčnosť
Nexus IQ
Kontrola závislosti
Závislosť Track
Schopnosť zabezpečiť, aby komponenty použité v zdrojovom kóde boli kontrolované na licencovanú čistotu
+
-
+
Schopnosť skenovať a analyzovať chyby zabezpečenia a čistotu licencií pre obrázky Docker
+ Integrácia s Clair
-
-
Schopnosť konfigurovať bezpečnostné politiky na používanie knižníc s otvoreným zdrojom
+
-
-
Schopnosť skenovať úložiská s otvoreným zdrojovým kódom na zraniteľné komponenty
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Dostupnosť špecializovanej výskumnej skupiny
+
-
-
Prevádzka s uzavretou slučkou
+
+
+
Používanie databáz tretích strán
+ Uzavretá databáza Sonatype
+ Sonatype OSS, Verejní poradcovia NPM
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, podpora vlastnej databázy zraniteľností
Schopnosť filtrovať komponenty open source pri pokuse o načítanie do vývojovej slučky podľa nakonfigurovaných zásad
+
-
-
Odporúčania na opravu slabých miest, dostupnosť odkazov na opravy
+
+- (závisí od popisu vo verejných databázach)
+- (závisí od popisu vo verejných databázach)
Zoradenie zistených zraniteľností podľa závažnosti
+
+
+
Model prístupu založený na rolách
+
-
+
podpora CLI
+
+
+- (iba pre CycloneDX)
Vzorkovanie/triedenie zraniteľností podľa definovaných kritérií
+
-
+
Dashboard podľa stavu aplikácie
+
-
+
Generovanie reportov vo formáte PDF
+
-
-
Generovanie správ vo formáte JSONCSV
+
+
-
Podpora ruského jazyka
-
-
-
Integračné schopnosti
integrácia
Nexus IQ
Kontrola závislosti
Závislosť Track
Integrácia LDAP/Active Directory
+
-
+
Integrácia s kontinuálnym integračným systémom Bamboo
+
-
-
Integrácia s priebežným integračným systémom TeamCity
+
-
-
Integrácia s kontinuálnym integračným systémom GitLab
+
+- (ako doplnok pre GitLab)
+
Integrácia s kontinuálnym integračným systémom Jenkins
+
+
+
Dostupnosť pluginov pre IDE
+ IntelliJ, Eclipse, Visual Studio
-
-
Podpora vlastnej integrácie prostredníctvom webových služieb (API) nástroja
+
-
+
Kontrola závislosti
Prvý štart
Spustite kontrolu závislosti na zámerne zraniteľnej aplikácii
Na to použijeme
mvn org.owasp:dependency-check-maven:check
V dôsledku toho sa v cieľovom adresári zobrazí dependency-check-report.html.
Otvorme súbor. Po súhrnných informáciách o celkovom počte zraniteľností môžeme vidieť informácie o zraniteľnostiach s vysokou úrovňou závažnosti a spoľahlivosti s uvedením balíka, CPE a počtu CVE.
Ďalej nasledujú podrobnejšie informácie, najmä podklad, na základe ktorého sa rozhodovalo (dôkaz), teda určitý kusovník.
Ďalej nasleduje popis CPE, PURL a CVE. Mimochodom, odporúčania na opravu nie sú zahrnuté kvôli ich absencii v databáze NVD.
Ak chcete systematicky zobraziť výsledky skenovania, môžete nakonfigurovať Nginx s minimálnymi nastaveniami alebo odoslať výsledné chyby do systému správy defektov, ktorý podporuje konektory na kontrolu závislostí. Napríklad Defect Dojo.
Závislosť Track
Inštalácia
Dependency Track je zase webová platforma so zobrazovanými grafmi, takže naliehavý problém ukladania defektov v riešení tretích strán tu nevzniká.
Podporované skripty na inštaláciu sú: Docker, WAR, Executable WAR.
Prvý štart
Ideme na adresu URL spustenej služby. Prihlásime sa cez admin/admin, zmeníme prihlasovacie meno a heslo a následne sa dostaneme na Dashboard. Ďalšia vec, ktorú urobíme, je vytvorenie projektu pre testovaciu aplikáciu v jazyku Java Domov/Projekty → Vytvoriť projekt . Vezmime si DVJA ako príklad.
Keďže sledovanie závislosti môže akceptovať iba kusovník ako vstup, tento kusovník sa musí získať. Využime to
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Získame bom.xml a načítame súbor vo vytvorenom projekte DVJA → Závislosti → Nahrať kusovník.
Poďme do Administrácie → Analyzátory. Chápeme, že máme povolený iba interný analyzátor, ktorý zahŕňa NVD. Pripojme tiež Sonatype OSS Index.
Takto získame nasledujúci obrázok pre náš projekt:
V zozname môžete nájsť aj jednu zraniteľnosť vzťahujúcu sa na Sonatype OSS:
Hlavným sklamaním bolo, že Dependency Track už neakceptuje XML správy Dependency Check. Najnovšie podporované verzie integrácie Kontrola závislosti boli 1.0.0 - 4.0.2, zatiaľ čo ja som testoval 5.3.2.
Tu
Nexus IQ
Prvý štart
Inštalácia Nexus IQ pochádza z archívov
Po prihlásení do konzoly je potrebné vytvoriť organizáciu a aplikáciu.
Ako vidíte, nastavenie v prípade IQ je o niečo komplikovanejšie, pretože potrebujeme vytvoriť aj politiky, ktoré sú použiteľné pre rôzne „fázy“ (dev, build, stage, release). Je to potrebné na zablokovanie zraniteľných komponentov, keď sa pohybujú potrubím bližšie k výrobe, alebo na ich zablokovanie hneď, ako sa dostanú do zariadenia Nexus Repo po stiahnutí vývojármi.
Aby sme pocítili rozdiel medzi otvoreným zdrojom a podnikom, vykonajte rovnaké skenovanie cez Nexus IQ rovnakým spôsobom 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>
Nasledujte URL na vygenerovaný prehľad vo webovom rozhraní IQ:
Tu môžete vidieť všetky porušenia pravidiel, ktoré označujú rôzne úrovne významnosti (od informácií po kritické z hľadiska bezpečnosti). Písmeno D vedľa komponentu znamená, že komponent je priama závislosť a písmeno T vedľa komponentu znamená, že komponent je tranzitívna závislosť, to znamená, že je tranzitívny.
Mimochodom, správa
Ak otvoríme jedno z porušení pravidiel Nexus IQ, môžeme vidieť popis komponentu, ako aj graf verzií, ktorý ukazuje umiestnenie aktuálnej verzie v časovom grafe, ako aj to, kedy sa zraniteľnosť prestane zobrazovať. byť zraniteľný. Výška sviečok na grafe ukazuje obľúbenosť používania tohto komponentu.
Ak prejdete do sekcie zraniteľnosti a rozbalíte CVE, môžete si prečítať popis tejto zraniteľnosti, odporúčania na odstránenie, ako aj dôvod, prečo bol tento komponent narušený, teda prítomnosť triedy DiskFileitem.class
.
Zhrňme len tie, ktoré súvisia s komponentmi Java tretích strán, pričom odstránime komponenty js. V zátvorkách uvádzame počet zraniteľností, ktoré boli nájdené mimo NVD.
Celkové IQ zariadenia Nexus:
- Naskenované závislosti: 62
- Zraniteľné závislosti: 16
- Nájdené chyby zabezpečenia: 42 (8 sonatype db)
Kontrola celkovej závislosti:
- Naskenované závislosti: 47
- Zraniteľné závislosti: 13
- Nájdené slabé miesta: 91 (14 sonatype oss)
Celková stopa závislosti:
- Naskenované závislosti: 59
- Zraniteľné závislosti: 10
- Nájdené slabé miesta: 51 (1 sonatype oss)
V ďalších krokoch analyzujeme získané výsledky a zistíme, ktorá z týchto zraniteľností je skutočným defektom a ktorá je falošne pozitívna.
Vylúčenie zodpovednosti
Táto recenzia nie je nespornou pravdou. Autor nemal za cieľ vyzdvihnúť samostatný nástroj na pozadí iných. Účelom prehľadu bolo ukázať mechanizmy fungovania nástrojov SCA a spôsoby kontroly ich výsledkov.
Porovnanie výsledkov
Podmienky:
Falošne pozitívny pre chyby zabezpečenia komponentov tretích strán je:
- CVE nesúlad s identifikovaným komponentom
- Ak je napríklad identifikovaná zraniteľnosť v rámci struts2 a nástroj ukazuje na komponent rámca struts-tiles, na ktorý sa táto zraniteľnosť nevzťahuje, ide o falošne pozitívny
- Nezhoda CVE s identifikovanou verziou komponentu
- Napríklad zraniteľnosť je viazaná na verziu pythonu > 3.5 a nástroj označuje verziu 2.7 ako zraniteľnú – ide o falošne pozitívny výsledok, pretože v skutočnosti sa zraniteľnosť vzťahuje iba na vetvu produktu 3.x.
- Duplicitné CVE
- Napríklad, ak SCA špecifikuje CVE, ktorý umožňuje RCE, potom SCA špecifikuje CVE pre ten istý komponent, ktorý platí pre produkty Cisco ovplyvnené týmto RCE. V tomto prípade bude falošne pozitívny.
- Napríklad CVE bol nájdený v komponente spring-web, po ktorom SCA ukazuje na rovnaký CVE v iných komponentoch Spring Framework, zatiaľ čo CVE nemá nič spoločné s inými komponentmi. V tomto prípade bude falošne pozitívny.
Predmetom štúdie bol Open Source projekt DVJA. Štúdia zahŕňala iba komponenty java (bez js).
Súhrnné výsledky
Poďme rovno k výsledkom manuálnej kontroly identifikovaných zraniteľností. Úplnú správu pre každý CVE nájdete v prílohe.
Súhrnné výsledky pre všetky chyby zabezpečenia:
Parameter
Nexus IQ
Kontrola závislosti
Závislosť Track
Celková zistená zraniteľnosť
42
91
51
Nesprávne identifikované slabé miesta (falošne pozitívne)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Nenašli sa žiadne relevantné chyby zabezpečenia (falošne negatívne)
10
20
27
Súhrnné výsledky podľa komponentov:
Parameter
Nexus IQ
Kontrola závislosti
Závislosť Track
Celkový počet identifikovaných komponentov
62
47
59
Celkom zraniteľné komponenty
16
13
10
Nesprávne identifikované zraniteľné komponenty (falošne pozitívne)
1
5
0
Nesprávne identifikované zraniteľné komponenty (falošne pozitívne)
0
6
6
Zostavme vizuálne grafy na vyhodnotenie pomeru falošne pozitívnych a falošne negatívnych k celkovému počtu zraniteľností. Komponenty sú označené horizontálne a zraniteľné miesta v nich identifikované sú označené vertikálne.
Pre porovnanie, podobnú štúdiu vykonal tím Sonatype, ktorý testoval projekt 1531 komponentov pomocou OWASP Dependency Check. Ako vidíme, pomer šumu k správnym odozvám je porovnateľný s našimi výsledkami.
Zdroj:
Pozrime sa na niektoré CVE z našich výsledkov skenovania, aby sme pochopili dôvod týchto výsledkov.
viac
№ 1
Najprv sa pozrime na niekoľko zaujímavých bodov o Sonatype Nexus IQ.
Nexus IQ poukazuje na problém s deserializáciou so schopnosťou vykonávať RCE v rámci Spring Framework viackrát. CVE-2016-1000027 v jarnom webe: 3.0.5 prvýkrát a CVE-2011-2894 v jarnom kontexte: 3.0.5 a jarnom jadre: 3.0.5. Najprv sa zdá, že existuje duplicita zraniteľnosti vo viacerých CVE. Pretože, ak sa pozriete na CVE-2016-1000027 a CVE-2011-2894 v databáze NVD, zdá sa, že všetko je zrejmé
komponentov
Zraniteľnosť
spring-web:3.0.5
CVE-2016 1000027,
jarný kontext:3.0.5
CVE-2011 2894,
jadro pružiny: 3.0.5
CVE-2011 2894,
Popis
Popis
Samotný CVE-2011-2894 je celkom známy. V správe RemoteInvocationSerializingExporter
v CVE-2011-2894 je zraniteľnosť pozorovaná v HttpInvokerServiceExporter
. Toto nám hovorí Nexus IQ:
V NVD však nič také neexistuje, a preto je kontrola závislosti a sledovanie závislosti falošne negatívne.
Z popisu CVE-2011-2894 je tiež zrejmé, že zraniteľnosť je skutočne prítomná v kontexte spring-context:3.0.5 a spring-core:3.0.5. Potvrdenie o tom možno nájsť v článku od osoby, ktorá túto chybu zabezpečenia našla.
№ 2
komponentov
Zraniteľnosť
Výsledok
vzpery2-jadro:2.3.30
CVE-2016 4003,
FALSE
Ak si preštudujeme zraniteľnosť CVE-2016-4003, pochopíme, že bola opravená vo verzii 2.3.28, Nexus IQ nám ju však hlási. V popise zraniteľnosti je poznámka:
To znamená, že zraniteľnosť existuje iba v spojení so zastaranou verziou JRE, na ktorú sa nás rozhodli varovať. Napriek tomu to považujeme za falošne pozitívne, aj keď nie za najhoršie.
Nie. 3
komponentov
Zraniteľnosť
Výsledok
xwork-core: 2.3.30
CVE-2017 9804,
TRUE
xwork-core: 2.3.30
CVE-2017 7672,
FALSE
Ak sa pozrieme na popisy CVE-2017-9804 a CVE-2017-7672, pochopíme, že problém je URLValidator class
, pričom CVE-2017-9804 pochádza z CVE-2017-7672. Prítomnosť druhej zraniteľnosti nenesie žiadnu užitočnú záťaž okrem toho, že jej závažnosť sa zvýšila na High, takže ju môžeme považovať za zbytočný hluk.
Celkovo sa pre Nexus IQ nenašli žiadne ďalšie falošne pozitívne výsledky.
№ 4
Existuje niekoľko vecí, vďaka ktorým sa IQ odlišuje od iných riešení.
komponentov
Zraniteľnosť
Výsledok
spring-web:3.0.5
CVE-2020 5398,
TRUE
CVE v NVD uvádza, že sa vzťahuje iba na verzie 5.2.x pred 5.2.3, 5.1.x pred 5.1.13 a verzie 5.0.x pred 5.0.16, ak sa však pozrieme na popis CVE v Nexus IQ , potom uvidíme nasledovné:
Upozornenie na odchýlku: Bezpečnostný výskumný tím Sonatype zistil, že táto chyba zabezpečenia bola zavedená vo verzii 3.0.2.RELEASE a nie vo verzii 5.0.x, ako je uvedené v odporúčaní.
Potom nasleduje PoC pre túto chybu zabezpečenia, v ktorom sa uvádza, že je prítomná vo verzii 3.0.5.
Falošne negatívne sa odošle do kontroly závislosti a sledovania závislosti.
№ 5
Pozrime sa na falošne pozitívne výsledky kontroly závislosti a sledovania závislosti.
Kontrola závislosti vyniká tým, že odráža tie CVE, ktoré sa vzťahujú na celý rámec v NVD, na tie komponenty, na ktoré sa tieto CVE nevzťahujú. Týka sa to CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, ktorá spôsobila kontrolu závislosti ” na struts-taglib:1.3.8 a struts-tiles-1.3.8. Tieto komponenty nemajú nič spoločné s tým, čo je popísané v CVE – spracovanie požiadaviek, validácia stránky atď. Je to spôsobené tým, že to, čo majú tieto CVE a komponenty spoločné, je iba rámec, a preto to Dependency Check považovala za zraniteľnosť.
Rovnaká situácia je s pružinou-tx:3.0.5 a podobná situácia s jadrom vzpery:1.3.8. Pre struts-core, Dependency Check a Dependency Track našli veľa zraniteľností, ktoré sú skutočne aplikovateľné na struts2-core, čo je v podstate samostatný rámec. V tomto prípade Nexus IQ správne pochopil obrázok a v CVE, ktoré vydal, uviedol, že struts-core dosiahlo koniec životnosti a je potrebné prejsť na struts2-core.
№ 6
V niektorých situáciách je nespravodlivé interpretovať zjavnú chybu kontroly závislosti a sledovania závislosti. Najmä CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, ktoré Kontrola závislosti pripisovaný spring-core:3.0.5 v skutočnosti patrí spring-web:3.0.5. Niektoré z týchto CVE boli zároveň nájdené aj Nexus IQ, avšak IQ ich správne identifikovalo s iným komponentom. Pretože tieto zraniteľnosti neboli nájdené v spring-core, nemožno tvrdiť, že v princípe nie sú v frameworku a open source nástroje na tieto zraniteľnosti správne poukázali (len im trochu chýbalo).
Závery
Ako vidíme, určenie spoľahlivosti identifikovaných zraniteľností manuálnou kontrolou nedáva jednoznačné výsledky, a preto vznikajú kontroverzné otázky. Výsledkom je, že riešenie Nexus IQ má najnižší počet falošných pozitívnych nálezov a najvyššiu presnosť.
V prvom rade je to spôsobené tým, že tím Sonatype rozšíril popis každej zraniteľnosti CVE z NVD vo svojich databázach, pričom uviedol zraniteľnosti pre konkrétnu verziu komponentov až po triedu alebo funkciu, pričom vykonal ďalší výskum (napr. , kontrola zraniteľností na starších verziách softvéru).
Dôležitý vplyv na výsledky majú aj tie zraniteľnosti, ktoré neboli zahrnuté v NVD, no napriek tomu sú prítomné v databáze Sonatype s označením SONATYPE. Podľa správy
Výsledkom je, že kontrola závislosti produkuje veľa hluku a chýbajú niektoré zraniteľné komponenty. Dependency Track produkuje menej hluku a detekuje veľké množstvo komponentov, z čoho vo webovom rozhraní vizuálne nebolí oči.
Prax však ukazuje, že open source by sa mal stať prvými krokmi k vyspelým DevSecOps. Prvá vec, na ktorú by ste mali myslieť pri integrácii SCA do vývoja, sú procesy, teda premýšľať spolu s manažmentom a súvisiacimi oddeleniami o tom, ako by mali vyzerať ideálne procesy vo vašej organizácii. Môže sa ukázať, že pre vašu organizáciu najskôr Dependency Check alebo Dependency Track pokryje všetky obchodné potreby a Enterprise riešenia budú logickým pokračovaním vzhľadom na rastúcu komplexnosť vyvíjaných aplikácií.
Príloha A: Výsledky komponentov
Symboly:
- Vysoká – vysoká a kritická úroveň zraniteľnosti v komponente
- Stredná — Slabé miesta so strednou kritickou úrovňou v komponente
- TRUE — Skutočne pozitívny problém
- FALSE — Falošne pozitívny problém
komponentov
Nexus IQ
Kontrola závislosti
Závislosť Track
Výsledok
dom4j: 1.6.1
vysoký
vysoký
vysoký
TRUE
log4j-core: 2.3
vysoký
vysoký
vysoký
TRUE
log4j: 1.2.14
vysoký
vysoký
-
TRUE
commons-collections:3.1
vysoký
vysoký
vysoký
TRUE
Commons-fileupload:1.3.2
vysoký
vysoký
vysoký
TRUE
commons-beanutils:1.7.0
vysoký
vysoký
vysoký
TRUE
commons-kodek:1:10
stredná
-
-
TRUE
mysql-connector-java: 5.1.42
vysoký
vysoký
vysoký
TRUE
pružina-výraz:3.0.5
vysoký
komponent sa nenašiel
TRUE
spring-web:3.0.5
vysoký
komponent sa nenašiel
vysoký
TRUE
jarný kontext:3.0.5
stredná
komponent sa nenašiel
-
TRUE
jadro pružiny: 3.0.5
stredná
vysoký
vysoký
TRUE
struts2-config-browser-plugin:2.3.30
stredná
-
-
TRUE
spring-tx: 3.0.5
-
vysoký
-
FALSE
vzpery-jadro:1.3.8
vysoký
vysoký
vysoký
TRUE
xwork-core: 2.3.30
vysoký
-
-
TRUE
vzpery2-jadro: 2.3.30
vysoký
vysoký
vysoký
TRUE
vzpery-taglib:1.3.8
-
vysoký
-
FALSE
vzpery-dlaždice-1.3.8
-
vysoký
-
FALSE
Príloha B: Výsledky zraniteľnosti
Symboly:
- Vysoká – vysoká a kritická úroveň zraniteľnosti v komponente
- Stredná — Slabé miesta so strednou kritickou úrovňou v komponente
- TRUE — Skutočne pozitívny problém
- FALSE — Falošne pozitívny problém
komponentov
Nexus IQ
Kontrola závislosti
Závislosť Track
Prísnosť
Výsledok
Komentár
dom4j: 1.6.1
CVE-2018 1000632,
CVE-2018 1000632,
CVE-2018 1000632,
vysoký
TRUE
CVE-2020 10683,
CVE-2020 10683,
CVE-2020 10683,
vysoký
TRUE
log4j-core: 2.3
CVE-2017 5645,
CVE-2017 5645,
CVE-2017 5645,
vysoký
TRUE
CVE-2020 9488,
CVE-2020 9488,
CVE-2020 9488,
Nízky
TRUE
log4j: 1.2.14
CVE-2019 17571,
CVE-2019 17571,
-
vysoký
TRUE
-
CVE-2020 9488,
-
Nízky
TRUE
SONATYPE-2010-0053
-
-
vysoký
TRUE
commons-collections:3.1
-
CVE-2015 6420,
CVE-2015 6420,
vysoký
FALSE
Duplikáty RCE(OSSINDEX)
-
CVE-2017 15708,
CVE-2017 15708,
vysoký
FALSE
Duplikáty RCE(OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
vysoký
TRUE
Commons-fileupload:1.3.2
CVE-2016 1000031,
CVE-2016 1000031,
CVE-2016 1000031,
vysoký
TRUE
SONATYPE-2014-0173
-
-
stredná
TRUE
commons-beanutils:1.7.0
CVE-2014 0114,
CVE-2014 0114,
CVE-2014 0114,
vysoký
TRUE
-
CVE-2019 10086,
CVE-2019 10086,
vysoký
FALSE
Táto chyba zabezpečenia sa týka iba verzií 1.9.2+
commons-kodek:1:10
SONATYPE-2012-0050
-
-
stredná
TRUE
mysql-connector-java: 5.1.42
CVE-2018 3258,
CVE-2018 3258,
CVE-2018 3258,
vysoký
TRUE
CVE-2019 2692,
CVE-2019 2692,
-
stredná
TRUE
-
CVE-2020 2875,
-
stredná
FALSE
Rovnaká zraniteľnosť ako CVE-2019-2692, ale s poznámkou „útoky môžu výrazne ovplyvniť ďalšie produkty“
-
CVE-2017 15945,
-
vysoký
FALSE
Netýka sa to mysql-connector-java
-
CVE-2020 2933,
-
Nízky
FALSE
Duplikát CVE-2020-2934
CVE-2020 2934,
CVE-2020 2934,
-
stredná
TRUE
pružina-výraz:3.0.5
CVE-2018 1270,
komponent sa nenašiel
-
vysoký
TRUE
CVE-2018 1257,
-
-
stredná
TRUE
spring-web:3.0.5
CVE-2016 1000027,
komponent sa nenašiel
-
vysoký
TRUE
CVE-2014 0225,
-
CVE-2014 0225,
vysoký
TRUE
CVE-2011 2730,
-
-
vysoký
TRUE
-
-
CVE-2013 4152,
stredná
TRUE
CVE-2018 1272,
-
-
vysoký
TRUE
CVE-2020 5398,
-
-
vysoký
TRUE
Názorný príklad v prospech IQ: „Bezpečnostný výskumný tím Sonatype zistil, že táto zraniteľnosť bola zavedená vo verzii 3.0.2.RELEASE a nie vo verzii 5.0.x, ako sa uvádza v odporúčaní.“
CVE-2013 6429,
-
-
stredná
TRUE
CVE-2014 0054,
-
CVE-2014 0054,
stredná
TRUE
CVE-2013 6430,
-
-
stredná
TRUE
jarný kontext:3.0.5
CVE-2011 2894,
komponent sa nenašiel
-
stredná
TRUE
jadro pružiny: 3.0.5
-
CVE-2011 2730,
CVE-2011 2730,
vysoký
TRUE
CVE-2011 2894,
CVE-2011 2894,
CVE-2011 2894,
stredná
TRUE
-
-
CVE-2013 4152,
stredná
FALSE
Duplikát rovnakej zraniteľnosti v spring-webe
-
CVE-2013 4152,
-
stredná
FALSE
Zraniteľnosť sa týka komponentu pružiny
-
CVE-2013 6429,
CVE-2013 6429,
stredná
FALSE
Zraniteľnosť sa týka komponentu pružiny
-
CVE-2013 6430,
-
stredná
FALSE
Zraniteľnosť sa týka komponentu pružiny
-
CVE-2013 7315,
CVE-2013 7315,
stredná
FALSE
SPLIT z CVE-2013-4152. + Zraniteľnosť sa týka komponentu spring-web
-
CVE-2014 0054,
CVE-2014 0054,
stredná
FALSE
Zraniteľnosť sa týka komponentu pružiny
-
CVE-2014 0225,
-
vysoký
FALSE
Zraniteľnosť sa týka komponentu pružiny
-
-
CVE-2014 0225,
vysoký
FALSE
Duplikát rovnakej zraniteľnosti v spring-webe
-
CVE-2014 1904,
CVE-2014 1904,
stredná
FALSE
Zraniteľnosť sa týka komponentu spring-web-mvc
-
CVE-2014 3625,
CVE-2014 3625,
stredná
FALSE
Zraniteľnosť sa týka komponentu spring-web-mvc
-
CVE-2016 9878,
CVE-2016 9878,
vysoký
FALSE
Zraniteľnosť sa týka komponentu spring-web-mvc
-
CVE-2018 1270,
CVE-2018 1270,
vysoký
FALSE
Pre jarné výrazy/jarné správy
-
CVE-2018 1271,
CVE-2018 1271,
stredná
FALSE
Zraniteľnosť sa týka komponentu spring-web-mvc
-
CVE-2018 1272,
CVE-2018 1272,
vysoký
TRUE
CVE-2014 3578,
CVE-2014-3578 (OSSINDEX)
CVE-2014 3578,
stredná
TRUE
SONATYPE-2015-0327
-
-
Nízky
TRUE
struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
stredná
TRUE
spring-tx: 3.0.5
-
CVE-2011 2730,
-
vysoký
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2011 2894,
-
vysoký
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2013 4152,
-
stredná
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2013 6429,
-
stredná
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2013 6430,
-
stredná
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2013 7315,
-
stredná
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2014 0054,
-
stredná
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2014 0225,
-
vysoký
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2014 1904,
-
stredná
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2014 3625,
-
stredná
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2016 9878,
-
vysoký
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2018 1270,
-
vysoký
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2018 1271,
-
stredná
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
-
CVE-2018 1272,
-
stredná
FALSE
Zraniteľnosť nie je špecifická pre spring-tx
vzpery-jadro:1.3.8
-
CVE-2011-5057 (OSSINDEX)
stredná
FASLE
Zraniteľnosť voči Struts 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012 0391,
vysoký
FALSE
Zraniteľnosť voči Struts 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014 0094,
stredná
FALSE
Zraniteľnosť voči Struts 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014 0113,
vysoký
FALSE
Zraniteľnosť voči Struts 2
CVE-2016 1182,
3VE-2016-1182
-
vysoký
TRUE
-
-
CVE-2011 5057,
stredná
FALSE
Zraniteľnosť voči Struts 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012 0392,
vysoký
FALSE
Zraniteľnosť voči Struts 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012 0393,
stredná
FALSE
Zraniteľnosť voči Struts 2
CVE-2015 0899,
CVE-2015 0899,
-
vysoký
TRUE
-
CVE-2012 0394,
CVE-2012 0394,
stredná
FALSE
Zraniteľnosť voči Struts 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012 0838,
vysoký
FALSE
Zraniteľnosť voči Struts 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013 1965,
vysoký
FALSE
Zraniteľnosť voči Struts 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013 1966,
vysoký
FASLE
Zraniteľnosť voči Struts 2
-
CVE-2013 2115,
CVE-2013 2115,
vysoký
FASLE
Zraniteľnosť voči Struts 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013 2134,
vysoký
FASLE
Zraniteľnosť voči Struts 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013 2135,
vysoký
FASLE
Zraniteľnosť voči Struts 2
CVE-2014 0114,
CVE-2014 0114,
-
vysoký
TRUE
-
CVE-2015 2992,
CVE-2015 2992,
stredná
FALSE
Zraniteľnosť voči Struts 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016 0785,
vysoký
FALSE
Zraniteľnosť voči Struts 2
CVE-2016 1181,
CVE-2016 1181,
-
vysoký
TRUE
-
CVE-2016-4003 (OSSINDEX)
CVE-2016 4003,
vysoký
FALSE
Zraniteľnosť voči Struts 2
xwork-core: 2.3.30
CVE-2017 9804,
-
-
vysoký
TRUE
SONATYPE-2017-0173
-
-
vysoký
TRUE
CVE-2017 7672,
-
-
vysoký
FALSE
Duplikát CVE-2017-9804
SONATYPE-2016-0127
-
-
vysoký
TRUE
vzpery2-jadro:2.3.30
-
CVE-2016 6795,
CVE-2016 6795,
vysoký
TRUE
-
CVE-2017 9787,
CVE-2017 9787,
vysoký
TRUE
-
CVE-2017 9791,
CVE-2017 9791,
vysoký
TRUE
-
CVE-2017 9793,
-
vysoký
FALSE
Duplikát CVE-2018-1327
-
CVE-2017 9804,
-
vysoký
TRUE
-
CVE-2017 9805,
CVE-2017 9805,
vysoký
TRUE
CVE-2016 4003,
-
-
stredná
FALSE
Použiteľné pre Apache Struts 2.x až 2.3.28, čo je verzia 2.3.30. Avšak na základe popisu je CVE platný pre akúkoľvek verziu Struts 2, ak sa používa JRE 1.7 alebo menej. Zrejme sa nás tu rozhodli prepoistiť, ale vyzerá to skôr na FALSE
-
CVE-2018 1327,
CVE-2018 1327,
vysoký
TRUE
CVE-2017 5638,
CVE-2017 5638,
CVE-2017 5638,
vysoký
TRUE
Rovnaká zraniteľnosť, ktorú hackeri Equifax využili v roku 2017
CVE-2017 12611,
CVE-2017 12611,
-
vysoký
TRUE
CVE-2018 11776,
CVE-2018 11776,
CVE-2018 11776,
vysoký
TRUE
vzpery-taglib:1.3.8
-
CVE-2012 0394,
-
stredná
FALSE
Pre vzpery 2-jadrové
-
CVE-2013 2115,
-
vysoký
FALSE
Pre vzpery 2-jadrové
-
CVE-2014 0114,
-
vysoký
FALSE
Pre commons-beanutils
-
CVE-2015 0899,
-
vysoký
FALSE
Nevzťahuje sa na taglib
-
CVE-2015 2992,
-
stredná
FALSE
Vzťahuje sa na vzpery s 2 jadrami
-
CVE-2016 1181,
-
vysoký
FALSE
Nevzťahuje sa na taglib
-
CVE-2016 1182,
-
vysoký
FALSE
Nevzťahuje sa na taglib
vzpery-dlaždice-1.3.8
-
CVE-2012 0394,
-
stredná
FALSE
Pre vzpery 2-jadrové
-
CVE-2013 2115,
-
vysoký
FALSE
Pre vzpery 2-jadrové
-
CVE-2014 0114,
-
vysoký
FALSE
Pod commons-beanutils
-
CVE-2015 0899,
-
vysoký
FALSE
Neplatí pre dlaždice
-
CVE-2015 2992,
-
stredná
FALSE
Pre vzpery 2-jadrové
-
CVE-2016 1181,
-
vysoký
FALSE
Nevzťahuje sa na taglib
-
CVE-2016 1182,
-
vysoký
FALSE
Nevzťahuje sa na taglib
Zdroj: hab.com