Význam analýzy softwarových komponent třetích stran (Software Composition Analysis - SCA) ve vývojovém procesu roste s vydáváním výročních zpráv o zranitelnostech open source knihoven, které publikují Synopsys, Sonatype, Snyk a White Source. . Podle zprávy
Jeden z nejnázornějších případů
Tento článek se bude zabývat problematikou výběru nástroje pro provádění SCA z pohledu kvality výsledků analýzy. Bude poskytnuto i funkční srovnání nástrojů. Proces integrace do CI/CD a integrační schopnosti budou ponechány na další publikace. Společnost OWASP představila širokou škálu nástrojů
Princip činnosti
Podívejme se, jak CPE vypadá:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- Část: Označení, že komponenta souvisí s aplikací (a), operačním systémem (o), hardwarem (h) (povinné)
- Prodávající: Název výrobce produktu (povinné)
- Produkt: Název produktu (povinný)
- Verze: Verze komponenty (zastaralá položka)
- aktualizace: Aktualizace balíčku
- Edice: Starší verze (zastaralá položka)
- Jazyk: Jazyk definovaný v RFC-5646
- Edice SW: Verze softwaru
- Cílový SW: Softwarové prostředí, ve kterém produkt funguje
- Cílový HW: Hardwarové prostředí, ve kterém produkt funguje
- Ostatní: Informace o dodavateli nebo produktu
Příklad CPE vypadá takto:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Řádek znamená, že CPE verze 2.3 popisuje aplikační komponent od výrobce pivotal_software
se jménem spring_framework
verze 3.0.0. Pokud otevřeme zranitelnost
Adresu URL používají také nástroje SCA. Formát adresy URL balíčku je následující:
scheme:type/namespace/name@version?qualifiers#subpath
- Systém: Vždy tam bude 'pkg' označující, že se jedná o adresu URL balíčku (povinné)
- Typ: „Typ“ balíčku nebo „protokol“ balíčku, jako je maven, npm, nuget, gem, pypi atd. (Požadované)
- Namespace: Nějaká předpona názvu, jako je ID skupiny Maven, vlastník obrázku Docker, uživatel GitHubu nebo organizace. Volitelné a závisí na typu.
- Jméno: Název balíčku (povinný)
- Verze: Verze balíčku
- Kvalifikace: Další kvalifikační údaje pro balíček, jako je OS, architektura, distribuce atd. Volitelné a specifické pro typ.
- Podcesta: Další cesta v balíčku vzhledem ke kořenu balíčku
Například:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
Příklad toho, jak může kusovník vypadat ve formátu 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 lze použít nejen jako vstupní parametry pro Dependency Track, ale také pro inventarizaci softwarových komponent v dodavatelském řetězci, například pro poskytování softwaru zákazníkovi. V roce 2014 byl ve Spojených státech dokonce navržen zákon
Vrátíme-li se k SCA, Dependency Track má připravené integrace s platformami oznámení, jako je Slack, a systémy pro správu zranitelnosti, jako je Kenna Security. Za zmínku také stojí, že Dependency Track mimo jiné identifikuje zastaralé verze balíčků a poskytuje informace o licencích (kvůli podpoře SPDX).
Pokud se budeme bavit konkrétně o kvalitě SCA, tak je zde zásadní rozdíl.
Dependency Track nepřijímá jako vstup projekt, ale spíše kusovník. To znamená, že pokud chceme projekt otestovat, musíme nejprve vygenerovat bom.xml, například pomocí CycloneDX. Závislost Track je tedy přímo závislá na CycloneDX. Zároveň umožňuje přizpůsobení. Toto napsal tým OZON
Pojďme si shrnout některé funkční vlastnosti a také zvážit podporované jazyky pro analýzu:
jazyk
Nexus IQ
Kontrola závislosti
Závislost Track
Jáva
+
+
+
C / C ++
+
+
-
C#
+
+
-
. Čistá
+
+
+
Erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
PYTHON
+
+
+
Rubín
+
+
+
Perl
-
-
-
Scala
+
+
+
Cíl C
+
+
-
Rychlý
+
+
-
R
+
-
-
Go
+
+
+
Funkčnost
Funkčnost
Nexus IQ
Kontrola závislosti
Závislost Track
Schopnost zajistit, aby komponenty použité ve zdrojovém kódu byly zkontrolovány na licencovanou čistotu
+
-
+
Schopnost skenovat a analyzovat zranitelnosti a čistotu licencí pro obrázky Docker
+ Integrace s Clair
-
-
Možnost konfigurovat zásady zabezpečení pro použití knihoven s otevřeným zdrojovým kódem
+
-
-
Schopnost skenovat úložiště s otevřeným zdrojovým kódem na zranitelné komponenty
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Dostupnost specializované výzkumné skupiny
+
-
-
Provoz s uzavřenou smyčkou
+
+
+
Používání databází třetích stran
+ Uzavřená databáze Sonatype
+ Sonatype OSS, veřejní poradci NPM
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, podpora vlastní databáze zranitelností
Schopnost filtrovat komponenty open source při pokusu o načtení do vývojové smyčky podle nakonfigurovaných zásad
+
-
-
Doporučení pro opravu zranitelností, dostupnost odkazů na opravy
+
+- (závisí na popisu ve veřejných databázích)
+- (závisí na popisu ve veřejných databázích)
Seřazení zjištěných zranitelností podle závažnosti
+
+
+
Model přístupu založený na rolích
+
-
+
podpora CLI
+
+
+- (pouze pro CycloneDX)
Vzorkování/třídění zranitelností podle definovaných kritérií
+
-
+
Dashboard podle stavu aplikace
+
-
+
Generování reportů ve formátu PDF
+
-
-
Generování reportů ve formátu JSONCSV
+
+
-
Podpora ruského jazyka
-
-
-
Integrační schopnosti
Integrace
Nexus IQ
Kontrola závislosti
Závislost Track
Integrace LDAP/Active Directory
+
-
+
Integrace s průběžným integračním systémem Bamboo
+
-
-
Integrace s průběžným integračním systémem TeamCity
+
-
-
Integrace s kontinuálním integračním systémem GitLab
+
+- (jako plugin pro GitLab)
+
Integrace s kontinuálním integračním systémem Jenkins
+
+
+
Dostupnost pluginů pro IDE
+ IntelliJ, Eclipse, Visual Studio
-
-
Podpora vlastní integrace prostřednictvím webových služeb (API) nástroje
+
-
+
Kontrola závislosti
První start
Spusťte kontrolu závislosti na záměrně zranitelné aplikaci
K tomu použijeme
mvn org.owasp:dependency-check-maven:check
V důsledku toho se v cílovém adresáři objeví dependency-check-report.html.
Otevřeme soubor. Po souhrnných informacích o celkovém počtu zranitelností můžeme vidět informace o zranitelnostech s vysokou úrovní závažnosti a spolehlivosti s uvedením balíčku, CPE a počtu CVE.
Dále následují podrobnější informace, zejména podklad, na základě kterého bylo rozhodnuto (důkazy), tedy určitý kusovník.
Dále následuje popis CPE, PURL a CVE. Mimochodem, doporučení pro opravu nejsou zahrnuta kvůli jejich absenci v databázi NVD.
Chcete-li systematicky zobrazovat výsledky skenování, můžete nakonfigurovat Nginx s minimálním nastavením nebo odeslat výsledné defekty do systému správy defektů, který podporuje konektory pro kontrolu závislostí. Například Defect Dojo.
Závislost Track
Instalace
Dependency Track je zase webová platforma se zobrazovanými grafy, takže naléhavý problém ukládání defektů v řešení třetích stran zde nevzniká.
Podporované skripty pro instalaci jsou: Docker, WAR, Executable WAR.
První start
Jdeme na URL běžící služby. Přihlásíme se přes admin/admin, změníme přihlašovací jméno a heslo a pak se dostaneme na Dashboard. Další věcí, kterou uděláme, je vytvoření projektu pro testovací aplikaci v Javě Domů/Projekty → Vytvořit projekt . Vezměme si DVJA jako příklad.
Vzhledem k tomu, že sledování závislostí může jako vstup přijmout pouze kusovník, musí být tento kusovník načten. Využijme toho
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Získáme bom.xml a načteme soubor ve vytvořeném projektu DVJA → Závislosti → Nahrát kusovník.
Pojďme do Administrace → Analyzátory. Chápeme, že máme povolený pouze Internal Analyzer, který zahrnuje NVD. Pojďme také připojit Sonatype OSS Index.
Dostáváme tedy následující obrázek pro náš projekt:
V seznamu také můžete najít jednu zranitelnost použitelnou pro Sonatype OSS:
Hlavním zklamáním bylo, že Dependency Track již nepřijímá sestavy XML pro kontrolu závislostí. Nejnovější podporované verze integrace Kontrola závislosti byly 1.0.0 - 4.0.2, zatímco jsem testoval 5.3.2.
zde je
Nexus IQ
První start
Instalace Nexus IQ pochází z archivů
Po přihlášení do konzole je potřeba vytvořit organizaci a aplikaci.
Jak vidíte, nastavení v případě IQ je poněkud složitější, protože také potřebujeme vytvořit zásady použitelné pro různé „fáze“ (dev, build, stage, release). To je nezbytné k zablokování zranitelných komponent, když se pohybují potrubím blíže k produkci, nebo k jejich zablokování, jakmile se dostanou do Nexus Repo při stahování vývojáři.
Abychom pocítili rozdíl mezi open source a enterprise, proveďte stejné skenování prostřednictvím Nexus IQ stejným způsobem prostřednictvím 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>
Postupujte podle URL vygenerované zprávy ve webovém rozhraní IQ:
Zde můžete vidět všechna porušení zásad s různými úrovněmi významnosti (od informací po kritické zabezpečení). Písmeno D vedle komponenty znamená, že komponenta je přímá závislost, a písmeno T vedle komponenty znamená, že komponenta je tranzitivní závislost, to znamená, že je tranzitivní.
Mimochodem, zpráva
Pokud otevřeme jedno z porušení zásad Nexus IQ, můžeme vidět popis komponenty a také graf verzí, který ukazuje umístění aktuální verze v časovém grafu a také to, kdy zranitelnost přestane fungovat. být zranitelný. Výška svíček na grafu ukazuje oblíbenost používání této komponenty.
Pokud přejdete do sekce zranitelnosti a rozbalíte CVE, můžete si přečíst popis této zranitelnosti, doporučení pro odstranění a také důvod, proč byla tato komponenta narušena, tedy přítomnost třídy DiskFileitem.class
.
Shrňme pouze ty, které se týkají komponent Java třetích stran, odebereme komponenty js. V závorkách uvádíme počet zranitelností, které byly nalezeny mimo NVD.
Celkové IQ zařízení Nexus:
- Naskenované závislosti: 62
- Zranitelné závislosti: 16
- Nalezená zranitelnost: 42 (8 sonatype db)
Kontrola celkové závislosti:
- Naskenované závislosti: 47
- Zranitelné závislosti: 13
- Nalezená zranitelnost: 91 (14 sonatype oss)
Sledování celkové závislosti:
- Naskenované závislosti: 59
- Zranitelné závislosti: 10
- Nalezená zranitelnost: 51 (1 sonatype oss)
V dalších krocích analyzujeme získané výsledky a zjistíme, která z těchto zranitelností je skutečný defekt a která je falešně pozitivní.
Zřeknutí se odpovědnosti
Tato recenze není nespornou pravdou. Autor si nekladl za cíl vyzdvihnout samostatný nástroj na pozadí jiných. Účelem revize bylo ukázat mechanismy fungování nástrojů SCA a způsoby kontroly jejich výsledků.
Porovnání výsledků
Podmínky:
Falešně pozitivní zranitelnost komponent třetích stran je:
- Neshoda CVE s identifikovanou komponentou
- Pokud je například identifikována zranitelnost v rámci struts2 a nástroj ukazuje na součást rámce struts-tiles, na kterou se tato zranitelnost nevztahuje, jedná se o falešně pozitivní
- Neshoda CVE s identifikovanou verzí komponenty
- Například zranitelnost je vázána na verzi pythonu > 3.5 a nástroj označuje verzi 2.7 jako zranitelnou - to je falešně pozitivní, protože ve skutečnosti se zranitelnost vztahuje pouze na větev produktu 3.x
- Duplicitní CVE
- Pokud například SCA určí CVE, který umožňuje RCE, pak SCA určí CVE pro stejnou komponentu, která platí pro produkty Cisco ovlivněné tímto RCE. V tomto případě bude falešně pozitivní.
- Například CVE bylo nalezeno v komponentě spring-web, načež SCA ukazuje na stejné CVE v jiných komponentách Spring Framework, zatímco CVE nemá nic společného s jinými komponentami. V tomto případě bude falešně pozitivní.
Předmětem studie byl Open Source projekt DVJA. Studie zahrnovala pouze java komponenty (bez js).
Souhrnné výsledky
Pojďme rovnou k výsledkům ruční kontroly zjištěných zranitelností. Úplnou zprávu pro každý CVE lze nalézt v příloze.
Souhrnné výsledky pro všechny chyby zabezpečení:
Parametr
Nexus IQ
Kontrola závislosti
Závislost Track
Celková zjištěná zranitelnost
42
91
51
Nesprávně identifikovaná zranitelnost (falešně pozitivní)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Nebyly nalezeny žádné relevantní chyby zabezpečení (falešně negativní)
10
20
27
Souhrn výsledků podle komponent:
Parametr
Nexus IQ
Kontrola závislosti
Závislost Track
Celkový počet identifikovaných komponent
62
47
59
Celkem zranitelné komponenty
16
13
10
Nesprávně identifikované zranitelné komponenty (falešně pozitivní)
1
5
0
Nesprávně identifikované zranitelné komponenty (falešně pozitivní)
0
6
6
Pojďme sestavit vizuální grafy pro vyhodnocení poměru falešně pozitivních a falešně negativních k celkovému počtu zranitelností. Komponenty jsou označeny vodorovně a zranitelnosti v nich identifikované svisle.
Pro srovnání, podobnou studii provedl tým Sonatype testující projekt 1531 komponent pomocí OWASP Dependency Check. Jak vidíme, poměr šumu ke správným reakcím je srovnatelný s našimi výsledky.
Zdroj:
Podívejme se na některé CVE z našich výsledků skenování, abychom pochopili důvod těchto výsledků.
více
№ 1
Pojďme se nejprve podívat na některé zajímavé body o Sonatype Nexus IQ.
Nexus IQ upozorňuje na problém s deserializací se schopností provádět RCE v Spring Frameworku vícekrát. CVE-2016-1000027 ve verzi spring-web:3.0.5 poprvé a CVE-2011-2894 v jarním kontextu:3.0.5 a spring-core:3.0.5. Nejprve se zdá, že existuje duplicitní zranitelnost napříč více CVE. Protože když se podíváte na CVE-2016-1000027 a CVE-2011-2894 v databázi NVD, zdá se, že je vše zřejmé
Komponenta
Zranitelnost
spring-web:3.0.5
CVE-2016-1000027
jarní kontext:3.0.5
CVE-2011-2894
jádro pružiny: 3.0.5
CVE-2011-2894
popis
popis
CVE-2011-2894 je sám o sobě docela slavný. Ve zprávě RemoteInvocationSerializingExporter
v CVE-2011-2894 je zranitelnost pozorována v HttpInvokerServiceExporter
. Toto nám říká Nexus IQ:
V NVD však nic takového neexistuje, a proto jsou kontroly závislostí a sledování závislostí falešně negativní.
Také z popisu CVE-2011-2894 lze pochopit, že zranitelnost je skutečně přítomna jak v spring-context:3.0.5, tak v spring-core:3.0.5. Potvrzení o tom lze nalézt v článku od osoby, která tuto chybu zabezpečení našla.
№ 2
Komponenta
Zranitelnost
Výsledek
vzpěry 2jádrové:2.3.30
CVE-2016-4003
NEPRAVDIVÉ
Pokud si prostudujeme zranitelnost CVE-2016-4003, pochopíme, že byla opravena ve verzi 2.3.28, nicméně Nexus IQ nám ji hlásí. V popisu chyby zabezpečení je poznámka:
To znamená, že zranitelnost existuje pouze ve spojení se zastaralou verzí JRE, na kterou se nás rozhodli varovat. Přesto to považujeme za falešně pozitivní, i když ne za nejhorší.
№ 3
Komponenta
Zranitelnost
Výsledek
xwork-core: 2.3.30
CVE-2017-9804
TRUE
xwork-core: 2.3.30
CVE-2017-7672
NEPRAVDIVÉ
Pokud se podíváme na popisy CVE-2017-9804 a CVE-2017-7672, pochopíme, že problém je URLValidator class
, s CVE-2017-9804 vycházející z CVE-2017-7672. Přítomnost druhé zranitelnosti nenese žádnou užitečnou zátěž kromě toho, že její závažnost vzrostla na High, takže ji můžeme považovat za zbytečný hluk.
Celkově nebyly pro Nexus IQ nalezeny žádné další falešně pozitivní výsledky.
№ 4
Existuje několik věcí, které odlišují IQ od jiných řešení.
Komponenta
Zranitelnost
Výsledek
spring-web:3.0.5
CVE-2020-5398
TRUE
CVE v NVD uvádí, že se vztahuje pouze na verze 5.2.x před 5.2.3, 5.1.x před 5.1.13 a verze 5.0.x před 5.0.16, pokud se však podíváme na popis CVE v Nexus IQ , pak uvidíme následující:
Upozornění na odchylku: Výzkumný tým zabezpečení Sonatype zjistil, že tato chyba zabezpečení byla zavedena ve verzi 3.0.2.RELEASE a nikoli ve verzi 5.0.x, jak je uvedeno v upozornění.
Poté následuje PoC pro tuto chybu zabezpečení, která uvádí, že je přítomna ve verzi 3.0.5.
Falešně negativní je odeslán do Dependency Check a Dependency Track.
№ 5
Podívejme se na falešně pozitivní pro kontrolu závislosti a sledování závislosti.
Dependency Check vyniká tím, že odráží ty CVE, které se vztahují na celý framework v NVD, na ty komponenty, na které se tyto CVE nevztahují. Týká se to CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, která způsobila kontrolu závislosti ” na struts-taglib:1.3.8 a struts-tiles-1.3.8. Tyto komponenty nemají nic společného s tím, co je popsáno v CVE – zpracování požadavků, validace stránky a tak dále. To je způsobeno skutečností, že to, co mají tyto CVE a komponenty společné, je pouze framework, a proto to Dependency Check považoval za zranitelnost.
Stejná situace je s spring-tx:3.0.5 a podobná situace s struts-core:1.3.8. U struts-core nalezly Dependency Check a Dependency Track spoustu zranitelností, které jsou ve skutečnosti použitelné pro struts2-core, což je v podstatě samostatný rámec. V tomto případě Nexus IQ správně pochopil obrázek a ve vydaných CVE uváděl, že struts-core dosáhlo konce životnosti a je nutné přejít na struts2-core.
№ 6
V některých situacích je nespravedlivé interpretovat zjevnou chybu kontroly závislosti a sledování závislosti. Zejména CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, které Dependency Check přiřazený spring-core:3.0.5 ve skutečnosti patří spring-web:3.0.5. Současně byly některé z těchto CVE nalezeny také Nexus IQ, IQ je však správně identifikovalo s jinou komponentou. Protože tyto zranitelnosti nebyly ve spring-core nalezeny, nelze tvrdit, že v frameworku v zásadě nejsou a open source nástroje na tyto zranitelnosti správně upozornily (jen jim trochu uniklo).
Závěry
Jak vidíme, stanovení spolehlivosti identifikovaných zranitelností ruční kontrolou nedává jednoznačné výsledky, a proto vznikají kontroverzní otázky. Výsledky jsou takové, že řešení Nexus IQ má nejnižší míru falešně pozitivních výsledků a nejvyšší přesnost.
Za prvé je to způsobeno skutečností, že tým Sonatype rozšířil popis každé zranitelnosti CVE z NVD ve svých databázích a uvedl zranitelnosti pro konkrétní verzi komponent až po třídu nebo funkci, provedl další výzkum (např. , kontrola zranitelností starších verzí softwaru).
Důležitý vliv na výsledky mají i ty zranitelnosti, které nebyly zahrnuty do NVD, ale přesto jsou přítomny v databázi Sonatype s označením SONATYPE. Podle zprávy
Výsledkem je, že Dependency Check produkuje hodně šumu a chybí některé zranitelné komponenty. Dependency Track produkuje méně hluku a detekuje velké množství komponent, což ve webovém rozhraní vizuálně nebolí oči.
Praxe však ukazuje, že open source by se měl stát prvními kroky k vyspělým DevSecOps. První věc, na kterou byste měli myslet při integraci SCA do vývoje, jsou procesy, konkrétně přemýšlet společně s vedením a souvisejícími odděleními o tom, jak by měly vypadat ideální procesy ve vaší organizaci. Může se ukázat, že pro vaši organizaci nejprve Dependency Check nebo Dependency Track pokryje všechny obchodní potřeby a Enterprise řešení budou logickým pokračováním kvůli rostoucí složitosti vyvíjených aplikací.
Příloha A: Výsledky komponent
Legenda:
- Vysoká – zranitelnosti na vysoké a kritické úrovni v komponentě
- Střední — Zranitelnost součásti se střední úrovní kritickosti
- PRAVDA — Skutečně pozitivní záležitost
- FALSE — Falešně pozitivní problém
Komponenta
Nexus IQ
Kontrola závislosti
Závislost Track
Výsledek
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
Střední
-
-
TRUE
mysql-connector-java: 5.1.42
Vysoký
Vysoký
Vysoký
TRUE
pružina-výraz:3.0.5
Vysoký
součást nenalezena
TRUE
spring-web:3.0.5
Vysoký
součást nenalezena
Vysoký
TRUE
jarní kontext:3.0.5
Střední
součást nenalezena
-
TRUE
jádro pružiny: 3.0.5
Střední
Vysoký
Vysoký
TRUE
struts2-config-browser-plugin:2.3.30
Střední
-
-
TRUE
spring-tx: 3.0.5
-
Vysoký
-
NEPRAVDIVÉ
jádro vzpěry:1.3.8
Vysoký
Vysoký
Vysoký
TRUE
xwork-core: 2.3.30
Vysoký
-
-
TRUE
vzpěry 2 jádrové: 2.3.30
Vysoký
Vysoký
Vysoký
TRUE
vzpěry-taglib:1.3.8
-
Vysoký
-
NEPRAVDIVÉ
vzpěry-dlaždice-1.3.8
-
Vysoký
-
NEPRAVDIVÉ
Příloha B: Výsledky zranitelnosti
Legenda:
- Vysoká – zranitelnosti na vysoké a kritické úrovni v komponentě
- Střední — Zranitelnost součásti se střední úrovní kritickosti
- PRAVDA — Skutečně pozitivní záležitost
- FALSE — Falešně pozitivní problém
Komponenta
Nexus IQ
Kontrola závislosti
Závislost Track
Přísnost
Výsledek
Komentář
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ízké
TRUE
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
Vysoký
TRUE
-
CVE-2020-9488
-
Nízké
TRUE
SONATYPE-2010-0053
-
-
Vysoký
TRUE
commons-collections:3.1
-
CVE-2015-6420
CVE-2015-6420
Vysoký
NEPRAVDIVÉ
Duplikáty RCE(OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
Vysoký
NEPRAVDIVÉ
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
-
-
Střední
TRUE
commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
Vysoký
TRUE
-
CVE-2019-10086
CVE-2019-10086
Vysoký
NEPRAVDIVÉ
Tato chyba zabezpečení se týká pouze verzí 1.9.2+
commons-kodek:1:10
SONATYPE-2012-0050
-
-
Střední
TRUE
mysql-connector-java: 5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
Vysoký
TRUE
CVE-2019-2692
CVE-2019-2692
-
Střední
TRUE
-
CVE-2020-2875
-
Střední
NEPRAVDIVÉ
Stejná zranitelnost jako CVE-2019-2692, ale s poznámkou „útoky mohou významně ovlivnit další produkty“
-
CVE-2017-15945
-
Vysoký
NEPRAVDIVÉ
Není relevantní pro mysql-connector-java
-
CVE-2020-2933
-
Nízké
NEPRAVDIVÉ
Duplikát CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
Střední
TRUE
pružina-výraz:3.0.5
CVE-2018-1270
součást nenalezena
-
Vysoký
TRUE
CVE-2018-1257
-
-
Střední
TRUE
spring-web:3.0.5
CVE-2016-1000027
součást nenalezena
-
Vysoký
TRUE
CVE-2014-0225
-
CVE-2014-0225
Vysoký
TRUE
CVE-2011-2730
-
-
Vysoký
TRUE
-
-
CVE-2013-4152
Střední
TRUE
CVE-2018-1272
-
-
Vysoký
TRUE
CVE-2020-5398
-
-
Vysoký
TRUE
Názorný příklad ve prospěch IQ: „Výzkumný tým zabezpečení Sonatype zjistil, že tato chyba zabezpečení byla zavedena ve verzi 3.0.2.RELEASE a nikoli ve verzi 5.0.x, jak je uvedeno v doporučení.“
CVE-2013-6429
-
-
Střední
TRUE
CVE-2014-0054
-
CVE-2014-0054
Střední
TRUE
CVE-2013-6430
-
-
Střední
TRUE
jarní kontext:3.0.5
CVE-2011-2894
součást nenalezena
-
Střední
TRUE
jádro pružiny: 3.0.5
-
CVE-2011-2730
CVE-2011-2730
Vysoký
TRUE
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Střední
TRUE
-
-
CVE-2013-4152
Střední
NEPRAVDIVÉ
Duplikát stejné zranitelnosti v spring-webu
-
CVE-2013-4152
-
Střední
NEPRAVDIVÉ
Zranitelnost se týká komponenty pružiny
-
CVE-2013-6429
CVE-2013-6429
Střední
NEPRAVDIVÉ
Zranitelnost se týká komponenty pružiny
-
CVE-2013-6430
-
Střední
NEPRAVDIVÉ
Zranitelnost se týká komponenty pružiny
-
CVE-2013-7315
CVE-2013-7315
Střední
NEPRAVDIVÉ
SPLIT z CVE-2013-4152. + Chyba zabezpečení se týká komponenty spring-web
-
CVE-2014-0054
CVE-2014-0054
Střední
NEPRAVDIVÉ
Zranitelnost se týká komponenty pružiny
-
CVE-2014-0225
-
Vysoký
NEPRAVDIVÉ
Zranitelnost se týká komponenty pružiny
-
-
CVE-2014-0225
Vysoký
NEPRAVDIVÉ
Duplikát stejné zranitelnosti v spring-webu
-
CVE-2014-1904
CVE-2014-1904
Střední
NEPRAVDIVÉ
Chyba zabezpečení se týká komponenty spring-web-mvc
-
CVE-2014-3625
CVE-2014-3625
Střední
NEPRAVDIVÉ
Chyba zabezpečení se týká komponenty spring-web-mvc
-
CVE-2016-9878
CVE-2016-9878
Vysoký
NEPRAVDIVÉ
Chyba zabezpečení se týká komponenty spring-web-mvc
-
CVE-2018-1270
CVE-2018-1270
Vysoký
NEPRAVDIVÉ
Pro jarní-výraz/jarní-zprávy
-
CVE-2018-1271
CVE-2018-1271
Střední
NEPRAVDIVÉ
Chyba zabezpečení se týká komponenty spring-web-mvc
-
CVE-2018-1272
CVE-2018-1272
Vysoký
TRUE
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
Střední
TRUE
SONATYPE-2015-0327
-
-
Nízké
TRUE
struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
Střední
TRUE
spring-tx: 3.0.5
-
CVE-2011-2730
-
Vysoký
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2011-2894
-
Vysoký
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2013-4152
-
Střední
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2013-6429
-
Střední
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2013-6430
-
Střední
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2013-7315
-
Střední
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2014-0054
-
Střední
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2014-0225
-
Vysoký
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2014-1904
-
Střední
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2014-3625
-
Střední
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2016-9878
-
Vysoký
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2018-1270
-
Vysoký
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2018-1271
-
Střední
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
-
CVE-2018-1272
-
Střední
NEPRAVDIVÉ
Tato chyba zabezpečení není specifická pro spring-tx
jádro vzpěry:1.3.8
-
CVE-2011-5057 (OSSINDEX)
Střední
FASLE
Zranitelnost vůči Struts 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
Vysoký
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
Střední
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
Vysoký
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
CVE-2016-1182
3VE-2016-1182
-
Vysoký
TRUE
-
-
CVE-2011-5057
Střední
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
Vysoký
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
Střední
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
CVE-2015-0899
CVE-2015-0899
-
Vysoký
TRUE
-
CVE-2012-0394
CVE-2012-0394
Střední
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
Vysoký
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
Vysoký
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
Vysoký
FASLE
Zranitelnost vůči Struts 2
-
CVE-2013-2115
CVE-2013-2115
Vysoký
FASLE
Zranitelnost vůči Struts 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
Vysoký
FASLE
Zranitelnost vůči Struts 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
Vysoký
FASLE
Zranitelnost vůči Struts 2
CVE-2014-0114
CVE-2014-0114
-
Vysoký
TRUE
-
CVE-2015-2992
CVE-2015-2992
Střední
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
Vysoký
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
CVE-2016-1181
CVE-2016-1181
-
Vysoký
TRUE
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
Vysoký
NEPRAVDIVÉ
Zranitelnost vůči Struts 2
xwork-core: 2.3.30
CVE-2017-9804
-
-
Vysoký
TRUE
SONATYPE-2017-0173
-
-
Vysoký
TRUE
CVE-2017-7672
-
-
Vysoký
NEPRAVDIVÉ
Duplikát CVE-2017-9804
SONATYPE-2016-0127
-
-
Vysoký
TRUE
vzpěry 2jádrové: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ý
NEPRAVDIVÉ
Duplikát CVE-2018-1327
-
CVE-2017-9804
-
Vysoký
TRUE
-
CVE-2017-9805
CVE-2017-9805
Vysoký
TRUE
CVE-2016-4003
-
-
Střední
NEPRAVDIVÉ
Platí pro Apache Struts 2.x až 2.3.28, což je verze 2.3.30. Na základě popisu je však CVE platný pro jakoukoli verzi Struts 2, pokud se používá JRE 1.7 nebo nižší. Zřejmě se nás tady rozhodli přejistit, ale vypadá to spíš na FALŠE
-
CVE-2018-1327
CVE-2018-1327
Vysoký
TRUE
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
Vysoký
TRUE
Stejná zranitelnost, kterou hackeři Equifax zneužili v roce 2017
CVE-2017-12611
CVE-2017-12611
-
Vysoký
TRUE
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
Vysoký
TRUE
vzpěry-taglib:1.3.8
-
CVE-2012-0394
-
Střední
NEPRAVDIVÉ
Pro vzpěry 2jádrové
-
CVE-2013-2115
-
Vysoký
NEPRAVDIVÉ
Pro vzpěry 2jádrové
-
CVE-2014-0114
-
Vysoký
NEPRAVDIVÉ
Pro commons-beanutils
-
CVE-2015-0899
-
Vysoký
NEPRAVDIVÉ
Neplatí pro taglib
-
CVE-2015-2992
-
Střední
NEPRAVDIVÉ
Týká se dvoujádrových vzpěr
-
CVE-2016-1181
-
Vysoký
NEPRAVDIVÉ
Neplatí pro taglib
-
CVE-2016-1182
-
Vysoký
NEPRAVDIVÉ
Neplatí pro taglib
vzpěry-dlaždice-1.3.8
-
CVE-2012-0394
-
Střední
NEPRAVDIVÉ
Pro vzpěry 2jádrové
-
CVE-2013-2115
-
Vysoký
NEPRAVDIVÉ
Pro vzpěry 2jádrové
-
CVE-2014-0114
-
Vysoký
NEPRAVDIVÉ
Pod commons-beanutils
-
CVE-2015-0899
-
Vysoký
NEPRAVDIVÉ
Nevztahuje se na dlaždice
-
CVE-2015-2992
-
Střední
NEPRAVDIVÉ
Pro vzpěry 2jádrové
-
CVE-2016-1181
-
Vysoký
NEPRAVDIVÉ
Neplatí pro taglib
-
CVE-2016-1182
-
Vysoký
NEPRAVDIVÉ
Neplatí pro taglib
Zdroj: www.habr.com