Pomen analize komponent programske opreme tretjih oseb (Software Composition Analysis - SCA) v razvojnem procesu narašča z objavo letnih poročil o ranljivostih odprtokodnih knjižnic, ki jih objavljajo Synopsys, Sonatype, Snyk in White Source. . Glede na poročilo
Eden najbolj ilustrativnih primerov
Ta članek bo obravnaval vprašanje izbire orodja za izvajanje SCA z vidika kakovosti rezultatov analize. Zagotovljena bo tudi funkcionalna primerjava orodij. Postopek integracije v CI/CD in integracijske zmožnosti bodo prepuščeni naslednjim publikacijam. OWASP je predstavil široko paleto orodij
Princip delovanja
Poglejmo, kako izgleda CPE:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- del: Navedba, da se komponenta nanaša na aplikacijo (a), operacijski sistem (o), strojno opremo (h) (obvezno)
- Prodajalec: Ime proizvajalca izdelka (obvezno)
- Izdelek: Ime izdelka (obvezno)
- različica: Različica komponente (zastarel element)
- Posodobitev: Posodobitev paketa
- Edition: Podedovana različica (zastarel element)
- Jezik: Jezik, opredeljen v RFC-5646
- Izdaja SW: Različica programske opreme
- Ciljni SW: Programsko okolje, v katerem izdelek deluje
- Ciljna HW: Okolje strojne opreme, v katerem izdelek deluje
- Drugi: Informacije o dobavitelju ali izdelku
Primer CPE izgleda takole:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Vrstica pomeni, da različica CPE 2.3 opisuje komponento aplikacije proizvajalca pivotal_software
z naslovom spring_framework
različica 3.0.0. Če odpremo ranljivost
URL uporabljajo tudi orodja SCA. Oblika URL-ja paketa je naslednja:
scheme:type/namespace/name@version?qualifiers#subpath
- Shema: Vedno bo 'pkg', ki označuje, da je to URL paketa (obvezno)
- Vrsta: "Tip" paketa ali "protokol" paketa, kot je maven, npm, nuget, gem, pypi itd. (Obvezen element)
- Imenski prostor: Nekatera predpona imena, kot je ID skupine Maven, lastnik slike Docker, uporabnik GitHub ali organizacija. Neobvezno in odvisno od vrste.
- ime: Ime paketa (obvezno)
- različica: Paketna različica
- Kvalifikacije: Dodatni kvalifikacijski podatki za paket, kot so OS, arhitektura, distribucija itd. Izbirno in glede na vrsto.
- Podpot: Dodatna pot v paketu glede na koren paketa
Na primer:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
Primer, kako bi lahko izgledala kosovnica v formatu 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>
BOM se lahko uporablja ne le kot vhodni parameter za Dependency Track, ampak tudi za popis komponent programske opreme v dobavni verigi, na primer za zagotavljanje programske opreme stranki. Leta 2014 so v ZDA celo predlagali zakon
Če se vrnemo k SCA, ima Dependency Track že pripravljene integracije s platformami za obveščanje, kot je Slack, sistemi za upravljanje ranljivosti, kot je Kenna Security. Omeniti velja tudi, da Dependency Track med drugim identificira zastarele različice paketov in zagotavlja informacije o licencah (zaradi podpore SPDX).
Če govorimo posebej o kakovosti SCA, potem obstaja temeljna razlika.
Dependency Track kot vhod ne sprejme projekta, temveč kosovnico. To pomeni, da če želimo preizkusiti projekt, moramo najprej ustvariti bom.xml, na primer z uporabo CycloneDX. Tako je Dependency Track neposredno odvisen od CycloneDX. Hkrati omogoča prilagajanje. Tako je zapisala ekipa OZON
Povzemimo nekatere funkcionalne funkcije in razmislimo tudi o podprtih jezikih za analizo:
Jezik
Nexus IQ
Preverjanje odvisnosti
Trak odvisnosti
Java
+
+
+
C / C ++
+
+
-
C#
+
+
-
.Mreža
+
+
+
Erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Python
+
+
+
Ruby
+
+
+
Perl
-
-
-
Lestvica
+
+
+
Cilj C
+
+
-
Swift
+
+
-
R
+
-
-
Go
+
+
+
Funkcionalnost
Funkcionalnost
Nexus IQ
Preverjanje odvisnosti
Trak odvisnosti
Zmožnost zagotavljanja, da so komponente, uporabljene v izvorni kodi, preverjene glede licenčne čistosti
+
-
+
Zmožnost skeniranja in analiziranja ranljivosti ter čistoče licenc za slike Docker
+ Integracija s Clair
-
-
Možnost konfiguriranja varnostnih pravilnikov za uporabo odprtokodnih knjižnic
+
-
-
Sposobnost skeniranja odprtokodnih skladišč za ranljive komponente
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Razpoložljivost specializirane raziskovalne skupine
+
-
-
Delovanje v zaprti zanki
+
+
+
Uporaba baz podatkov tretjih oseb
+ Zaprta zbirka podatkov Sonatype
+ Sonatype OSS, NPM javni svetovalci
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, podpora za lastno bazo ranljivosti
Možnost filtriranja odprtokodnih komponent pri poskusu nalaganja v razvojno zanko v skladu s konfiguriranimi pravilniki
+
-
-
Priporočila za odpravljanje ranljivosti, razpoložljivost povezav do popravkov
+
+- (odvisno od opisa v javnih bazah)
+- (odvisno od opisa v javnih bazah)
Razvrščanje odkritih ranljivosti po resnosti
+
+
+
Model dostopa na podlagi vlog
+
-
+
CLI podpora
+
+
+- (samo za CycloneDX)
Vzorčenje/razvrščanje ranljivosti po definiranih kriterijih
+
-
+
Nadzorna plošča po statusu aplikacije
+
-
+
Izdelava poročil v formatu PDF
+
-
-
Ustvarjanje poročil v formatu JSONCSV
+
+
-
Podpora za ruski jezik
-
-
-
Zmožnosti integracije
Integracija
Nexus IQ
Preverjanje odvisnosti
Trak odvisnosti
Integracija LDAP/Active Directory
+
-
+
Integracija s sistemom kontinuirane integracije Bamboo
+
-
-
Integracija s sistemom kontinuirane integracije TeamCity
+
-
-
Integracija s sistemom kontinuirane integracije GitLab
+
+- (kot vtičnik za GitLab)
+
Integracija s sistemom kontinuirane integracije Jenkins
+
+
+
Razpoložljivost vtičnikov za IDE
+ IntelliJ, Eclipse, Visual Studio
-
-
Podpora za integracijo po meri prek spletnih storitev (API) orodja
+
-
+
Preverjanje odvisnosti
Prvi začetek
Zaženimo preverjanje odvisnosti na namenoma ranljivi aplikaciji
Za to bomo uporabili
mvn org.owasp:dependency-check-maven:check
Posledično bo dependency-check-report.html prikazan v ciljnem imeniku.
Odprimo datoteko. Po povzetku informacij o skupnem številu ranljivosti lahko vidimo informacije o ranljivostih z visoko stopnjo resnosti in zaupanja, ki označujejo paket, CPE in število CVE.
Sledi podrobnejši podatek, predvsem podlaga, na kateri je bila odločitev sprejeta (dokazilo), torej določena kosovnica.
Sledi opis CPE, PURL in CVE. Mimogrede, priporočila za popravek niso vključena, ker jih ni v bazi podatkov NVD.
Za sistematičen ogled rezultatov skeniranja lahko konfigurirate Nginx z minimalnimi nastavitvami ali pošljete nastale napake v sistem za upravljanje napak, ki podpira priključke za preverjanje odvisnosti. Na primer Defect Dojo.
Trak odvisnosti
Namestitev
Dependency Track pa je spletna platforma s prikaznimi grafi, tako da pereče vprašanje shranjevanja napak v rešitvi tretje osebe tukaj ne nastane.
Podprti skripti za namestitev so: Docker, WAR, Executable WAR.
Prvi začetek
Gremo na URL delujoče storitve. Prijavimo se prek admin/admin, spremenimo prijavo in geslo ter pridemo do nadzorne plošče. Naslednja stvar, ki jo bomo naredili, je izdelava projekta za testno aplikacijo v Javi v Domov/Projekti → Ustvari projekt . Vzemimo za primer DVJA.
Ker lahko Dependency Track kot vhod sprejme samo BOM, je treba to BOM pridobiti. Izkoristimo
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Dobimo bom.xml in datoteko naložimo v ustvarjen projekt DVJA → Odvisnosti → Naloži BOM.
Pojdimo v Administracija → Analizatorji. Razumemo, da imamo omogočen samo notranji analizator, ki vključuje NVD. Povežimo še Sonatype OSS Index.
Tako dobimo naslednjo sliko za naš projekt:
Na seznamu lahko najdete tudi eno ranljivost, ki velja za Sonatype OSS:
Glavno razočaranje je bilo, da Dependency Track ne sprejema več poročil xml za preverjanje odvisnosti. Najnovejše podprte različice integracije preverjanja odvisnosti so bile 1.0.0 - 4.0.2, medtem ko sem preizkusil 5.3.2.
Tu
Nexus IQ
Prvi začetek
Namestitev Nexusa IQ je iz arhiva
Ko se prijavite v konzolo, morate ustvariti organizacijo in aplikacijo.
Kot lahko vidite, je nastavitev v primeru IQ nekoliko bolj zapletena, saj moramo ustvariti tudi politike, ki so uporabne za različne »stopnje« (dev, build, stage, release). To je potrebno za blokiranje ranljivih komponent, ko se premikajo po cevovodu bližje proizvodnji, ali za blokiranje takoj, ko pridejo v Nexus Repo, ko jih prenesejo razvijalci.
Da bi občutili razliko med odprtokodnim in poslovnim, izvedimo isto skeniranje prek Nexusa IQ na enak način prek 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>
Sledite URL-ju do ustvarjenega poročila v spletnem vmesniku IQ:
Tukaj si lahko ogledate vse kršitve pravilnika, ki označujejo različne stopnje pomembnosti (od informacij do varnostno kritičnih). Črka D ob komponenti pomeni, da je komponenta Direct Dependency, črka T ob komponenti pa pomeni, da je komponenta Transitive Dependency, torej prehodna.
Mimogrede, poročilo
Če odpremo eno od kršitev pravilnika Nexus IQ, lahko vidimo opis komponente in graf različic, ki prikazuje lokacijo trenutne različice v časovnem grafu in na kateri točki ranljivost preneha delovati. biti ranljiv. Višina sveč na grafu prikazuje priljubljenost uporabe te komponente.
Če greste v razdelek o ranljivostih in razširite CVE, lahko preberete opis te ranljivosti, priporočila za odpravo, pa tudi razlog, zakaj je bila ta komponenta kršena, to je prisotnost razreda DiskFileitem.class
.
Povzemimo le tiste, ki so povezani s komponentami Java tretjih oseb, pri čemer odstranimo komponente js. V oklepajih je navedeno število ranljivosti, ki so bile najdene zunaj NVD.
Total Nexus IQ:
- Pregledane odvisnosti: 62
- Ranljive odvisnosti: 16
- Najdene ranljivosti: 42 (8 sonatype db)
Preverjanje popolne odvisnosti:
- Pregledane odvisnosti: 47
- Ranljive odvisnosti: 13
- Najdene ranljivosti: 91 (14 sonatype oss)
Trak skupne odvisnosti:
- Pregledane odvisnosti: 59
- Ranljive odvisnosti: 10
- Najdene ranljivosti: 51 (1 sonatype oss)
V naslednjih korakih bomo analizirali dobljene rezultate in ugotovili, katera od teh ranljivosti je resnična napaka in katera je lažno pozitivna.
Izjava o omejitvi odgovornosti
Ta pregled ni nesporna resnica. Avtor ni imel cilja izpostaviti ločen instrument v ozadju drugih. Namen pregleda je bil prikazati mehanizme delovanja orodij SCA in načine preverjanja njihovih rezultatov.
Primerjava rezultatov
Pravila in pogoji:
Lažno pozitiven rezultat za ranljivosti komponent tretjih oseb je:
- Neujemanje CVE z identificirano komponento
- Na primer, če je v ogrodju struts2 identificirana ranljivost in orodje kaže na komponento ogrodja struts-tiles, za katero ta ranljivost ne velja, potem je to lažno pozitivno
- CVE se ne ujema z identificirano različico komponente
- Ranljivost je na primer povezana z različico python > 3.5, orodje pa različico 2.7 označi kot ranljivo – to je lažno pozitivno, saj dejansko ranljivost velja samo za vejo izdelka 3.x
- Podvojen CVE
- Na primer, če SCA določa CVE, ki omogoča RCE, potem SCA določa CVE za isto komponento, ki velja za izdelke Cisco, na katere vpliva ta RCE. V tem primeru bo lažno pozitiven.
- Na primer, CVE je bil najden v komponenti spring-web, nato pa SCA kaže na isti CVE v drugih komponentah Spring Framework, medtem ko CVE nima nobene zveze z drugimi komponentami. V tem primeru bo lažno pozitiven.
Predmet študije je bil odprtokodni projekt DVJA. Študija je vključevala samo komponente java (brez js).
Povzetek rezultatov
Pojdimo takoj k rezultatom ročnega pregleda ugotovljenih ranljivosti. Celotno poročilo za vsak CVE je na voljo v dodatku.
Povzetek rezultatov za vse ranljivosti:
Parameter
Nexus IQ
Preverjanje odvisnosti
Trak odvisnosti
Skupne ugotovljene ranljivosti
42
91
51
Nepravilno ugotovljene ranljivosti (lažno pozitivno)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Najdena ni bila nobena pomembna ranljivost (lažno negativno)
10
20
27
Povzetek rezultatov po komponentah:
Parameter
Nexus IQ
Preverjanje odvisnosti
Trak odvisnosti
Skupaj identificirane komponente
62
47
59
Skupaj ranljive komponente
16
13
10
Nepravilno identificirane ranljive komponente (lažno pozitivno)
1
5
0
Nepravilno identificirane ranljive komponente (lažno pozitivno)
0
6
6
Zgradimo vizualne grafe, da ocenimo razmerje med lažno pozitivnimi in lažno negativnimi glede na skupno število ranljivosti. Komponente so označene vodoravno, v njih ugotovljene ranljivosti pa navpično.
Za primerjavo je podobno študijo izvedla ekipa Sonatype, ki je testirala projekt 1531 komponent z uporabo OWASP Dependency Check. Kot lahko vidimo, je razmerje med šumom in pravilnimi odzivi primerljivo z našimi rezultati.
Vir:
Oglejmo si nekaj CVE iz rezultatov skeniranja, da bomo razumeli razlog za te rezultate.
več
№ 1
Najprej si poglejmo nekaj zanimivih točk o Sonatype Nexus IQ.
Nexus IQ opozarja na težavo z deserializacijo z možnostjo večkratne izvedbe RCE v Spring Framework. CVE-2016-1000027 v spring-web:3.0.5 prvič in CVE-2011-2894 v spring-context:3.0.5 in spring-core:3.0.5. Sprva se zdi, da obstaja podvajanje ranljivosti v več CVE. Ker, če pogledate CVE-2016-1000027 in CVE-2011-2894 v bazi podatkov NVD, se zdi, da je vse očitno
Komponenta
Ranljivost
spring-web:3.0.5
CVE-2016-1000027
pomladni kontekst:3.0.5
CVE-2011-2894
vzmetno jedro:3.0.5
CVE-2011-2894
Opis
Opis
Sam CVE-2011-2894 je precej znan. V poročilu RemoteInvocationSerializingExporter
v CVE-2011-2894 je ranljivost opažena v HttpInvokerServiceExporter
. To nam pove Nexus IQ:
Vendar v NVD ni nič takega, zato prejmeta preverjanje odvisnosti in sledenje odvisnosti lažno negativno.
Tudi iz opisa CVE-2011-2894 je mogoče razumeti, da je ranljivost res prisotna v spring-context:3.0.5 in spring-core:3.0.5. Potrditev tega je v članku osebe, ki je odkrila to ranljivost.
№ 2
Komponenta
Ranljivost
Rezultat
oporniki2-jedro:2.3.30
CVE-2016-4003
FALSE
Če preučimo ranljivost CVE-2016-4003, bomo razumeli, da je bila odpravljena v različici 2.3.28, vendar nam jo Nexus IQ sporoči. V opisu ranljivosti je opomba:
To pomeni, da ranljivost obstaja samo v povezavi z zastarelo različico JRE, na katero so se odločili, da nas opozorijo. Kljub temu menimo, da je to lažno pozitivno, čeprav ne najslabše.
Ne. 3
Komponenta
Ranljivost
Rezultat
xwork-core:2.3.30
CVE-2017-9804
TRUE
xwork-core:2.3.30
CVE-2017-7672
FALSE
Če pogledamo opise CVE-2017-9804 in CVE-2017-7672, bomo razumeli, da je težava URLValidator class
, pri čemer CVE-2017-9804 izhaja iz CVE-2017-7672. Prisotnost druge ranljivosti ne nosi nobene koristne obremenitve, razen dejstva, da se je njena resnost povečala na visoko, zato jo lahko štejemo za nepotreben šum.
Na splošno za Nexus IQ niso našli nobenih drugih lažno pozitivnih rezultatov.
№ 4
Obstaja več stvari, zaradi katerih IQ izstopa od drugih rešitev.
Komponenta
Ranljivost
Rezultat
spring-web:3.0.5
CVE-2020-5398
TRUE
CVE v NVD navaja, da velja le za različice 5.2.x pred 5.2.3, 5.1.x pred 5.1.13 in različice 5.0.x pred 5.0.16, vendar če pogledamo opis CVE v Nexusu IQ , potem bomo videli naslednje:
Svetovalno obvestilo o odstopanju: varnostna raziskovalna skupina Sonatype je odkrila, da je bila ta ranljivost predstavljena v različici 3.0.2.RELEASE in ne 5.0.x, kot je navedeno v svetovanju.
Temu sledi PoC za to ranljivost, ki navaja, da je prisotna v različici 3.0.5.
Napačno negativno se pošlje preverjanju odvisnosti in sledi odvisnosti.
№ 5
Poglejmo lažne pozitivne rezultate za preverjanje odvisnosti in sledenje odvisnosti.
Preverjanje odvisnosti izstopa po tem, da odraža tiste CVE-je, ki veljajo za celotno ogrodje v NVD, na tiste komponente, za katere ti CVE-ji ne veljajo. To zadeva CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, ki jih je preverjanje odvisnosti »zajebalo«. ” v struts-taglib:1.3.8 in struts-tiles-1.3.8. Te komponente nimajo nobene zveze s tem, kar je opisano v CVE – obdelava zahtev, preverjanje strani itd. To je posledica dejstva, da je tem CVE-jem in komponentam skupno samo ogrodje, zato je Dependency Check menil, da je to ranljivost.
Ista situacija je s spring-tx:3.0.5 in podobna situacija s struts-core:1.3.8. Za struts-core sta Dependency Check in Dependency Track odkrila veliko ranljivosti, ki so dejansko uporabne za struts2-core, ki je v bistvu ločen okvir. V tem primeru je Nexus IQ pravilno razumel sliko in v CVE-jih, ki jih je izdal, je nakazal, da je struts-core dosegel konec življenjske dobe in je treba preiti na struts2-core.
№ 6
V nekaterih situacijah ni pošteno razlagati očitne napake preverjanja odvisnosti in sledenja odvisnosti. Zlasti CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, ki preverjanje odvisnosti in sledenje odvisnosti pripisano spring-core:3.0.5 dejansko pripada spring-web:3.0.5. Hkrati je nekatere od teh CVE našel tudi Nexus IQ, vendar jih je IQ pravilno identificiral z drugo komponento. Ker te ranljivosti niso bile najdene v spring-core-u, ni mogoče trditi, da načeloma niso v okviru in odprtokodna orodja so na te ranljivosti upravičeno opozorila (samo malo so zgrešila).
Ugotovitve
Kot lahko vidimo, ugotavljanje zanesljivosti ugotovljenih ranljivosti z ročnim pregledom ne daje nedvoumnih rezultatov, zato se pojavljajo sporna vprašanja. Rezultati so, da ima rešitev Nexus IQ najnižjo stopnjo lažno pozitivnih rezultatov in najvišjo natančnost.
Prvič, to je posledica dejstva, da je ekipa Sonatype razširila opis za vsako ranljivost CVE iz NVD v svojih zbirkah podatkov, pri čemer je navedla ranljivosti za določeno različico komponent vse do razreda ali funkcije in izvedla dodatne raziskave (npr. , preverjanje ranljivosti na starejših različicah programske opreme).
Pomemben vpliv na rezultate imajo tudi tiste ranljivosti, ki niso bile vključene v NVD, a so kljub temu prisotne v bazi Sonatype z oznako SONATYPE. Glede na poročilo
Posledica tega je, da preverjanje odvisnosti povzroči veliko hrupa, pri čemer manjka nekaj ranljivih komponent. Dependency Track proizvaja manj šuma in zaznava veliko število komponent, kar vizualno ne boli oči v spletnem vmesniku.
Vendar praksa kaže, da bi morala odprtokodnost postati prvi korak k zrelemu DevSecOps. Prva stvar, o kateri morate razmišljati pri vključevanju SCA v razvoj, so procesi, in sicer, da skupaj z vodstvom in povezanimi oddelki razmišljate o tem, kako naj bi izgledali idealni procesi v vaši organizaciji. Lahko se izkaže, da bo za vašo organizacijo najprej Dependency Check ali Dependency Track pokril vse poslovne potrebe, Enterprise rešitve pa bodo logično nadaljevanje zaradi vse večje kompleksnosti aplikacij, ki se razvijajo.
Dodatek A: Rezultati komponente
Simboli:
- Visoka—visoka in kritična raven ranljivosti v komponenti
- Srednje — Ranljivosti srednje stopnje kritičnosti v komponenti
- TRUE — Resnično pozitivno vprašanje
- FALSE — Lažno pozitivna težava
Komponenta
Nexus IQ
Preverjanje odvisnosti
Trak odvisnosti
Rezultat
dom4j: 1.6.1
visoka
visoka
visoka
TRUE
log4j-jedro: 2.3
visoka
visoka
visoka
TRUE
log4j: 1.2.14
visoka
visoka
-
TRUE
skupne-zbirke:3.1
visoka
visoka
visoka
TRUE
skupna-fileupload:1.3.2
visoka
visoka
visoka
TRUE
commons-beanutils:1.7.0
visoka
visoka
visoka
TRUE
skupni kodek: 1:10
srednje
-
-
TRUE
mysql-connector-java:5.1.42
visoka
visoka
visoka
TRUE
vzmetni izraz:3.0.5
visoka
komponente ni mogoče najti
TRUE
spring-web:3.0.5
visoka
komponente ni mogoče najti
visoka
TRUE
pomladni kontekst:3.0.5
srednje
komponente ni mogoče najti
-
TRUE
vzmetno jedro:3.0.5
srednje
visoka
visoka
TRUE
struts2-config-brskalnik-plugin:2.3.30
srednje
-
-
TRUE
spring-tx:3.0.5
-
visoka
-
FALSE
oporno jedro:1.3.8
visoka
visoka
visoka
TRUE
xwork-core: 2.3.30
visoka
-
-
TRUE
oporniki2-jedro: 2.3.30
visoka
visoka
visoka
TRUE
struts-taglib:1.3.8
-
visoka
-
FALSE
oporniki-strešniki-1.3.8
-
visoka
-
FALSE
Dodatek B: Rezultati ranljivosti
Simboli:
- Visoka—visoka in kritična raven ranljivosti v komponenti
- Srednje — Ranljivosti srednje stopnje kritičnosti v komponenti
- TRUE — Resnično pozitivno vprašanje
- FALSE — Lažno pozitivna težava
Komponenta
Nexus IQ
Preverjanje odvisnosti
Trak odvisnosti
Resnost
Rezultat
Komentar
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
visoka
TRUE
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
visoka
TRUE
log4j-jedro: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
visoka
TRUE
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
nizka
TRUE
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
visoka
TRUE
-
CVE-2020-9488
-
nizka
TRUE
SONATYPE-2010-0053
-
-
visoka
TRUE
skupne-zbirke:3.1
-
CVE-2015-6420
CVE-2015-6420
visoka
FALSE
Dvojniki RCE(OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
visoka
FALSE
Dvojniki RCE(OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
visoka
TRUE
skupna-fileupload:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
visoka
TRUE
SONATYPE-2014-0173
-
-
srednje
TRUE
commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
visoka
TRUE
-
CVE-2019-10086
CVE-2019-10086
visoka
FALSE
Ranljivost se nanaša samo na različice 1.9.2+
skupni kodek: 1:10
SONATYPE-2012-0050
-
-
srednje
TRUE
mysql-connector-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
visoka
TRUE
CVE-2019-2692
CVE-2019-2692
-
srednje
TRUE
-
CVE-2020-2875
-
srednje
FALSE
Ista ranljivost kot CVE-2019-2692, vendar z opombo »napadi lahko znatno vplivajo na dodatne izdelke«
-
CVE-2017-15945
-
visoka
FALSE
Ni pomembno za mysql-connector-java
-
CVE-2020-2933
-
nizka
FALSE
Dvojnik CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
srednje
TRUE
vzmetni izraz:3.0.5
CVE-2018-1270
komponente ni mogoče najti
-
visoka
TRUE
CVE-2018-1257
-
-
srednje
TRUE
spring-web:3.0.5
CVE-2016-1000027
komponente ni mogoče najti
-
visoka
TRUE
CVE-2014-0225
-
CVE-2014-0225
visoka
TRUE
CVE-2011-2730
-
-
visoka
TRUE
-
-
CVE-2013-4152
srednje
TRUE
CVE-2018-1272
-
-
visoka
TRUE
CVE-2020-5398
-
-
visoka
TRUE
Ilustrativen primer v prid IQ: "Skupina varnostnih raziskav Sonatype je odkrila, da je bila ta ranljivost predstavljena v različici 3.0.2.RELEASE in ne 5.0.x, kot je navedeno v svetovanju."
CVE-2013-6429
-
-
srednje
TRUE
CVE-2014-0054
-
CVE-2014-0054
srednje
TRUE
CVE-2013-6430
-
-
srednje
TRUE
pomladni kontekst:3.0.5
CVE-2011-2894
komponente ni mogoče najti
-
srednje
TRUE
vzmetno jedro:3.0.5
-
CVE-2011-2730
CVE-2011-2730
visoka
TRUE
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
srednje
TRUE
-
-
CVE-2013-4152
srednje
FALSE
Dvojnik iste ranljivosti v spring-webu
-
CVE-2013-4152
-
srednje
FALSE
Ranljivost se nanaša na komponento spring-web
-
CVE-2013-6429
CVE-2013-6429
srednje
FALSE
Ranljivost se nanaša na komponento spring-web
-
CVE-2013-6430
-
srednje
FALSE
Ranljivost se nanaša na komponento spring-web
-
CVE-2013-7315
CVE-2013-7315
srednje
FALSE
SPLIT iz CVE-2013-4152. + Ranljivost se nanaša na komponento spring-web
-
CVE-2014-0054
CVE-2014-0054
srednje
FALSE
Ranljivost se nanaša na komponento spring-web
-
CVE-2014-0225
-
visoka
FALSE
Ranljivost se nanaša na komponento spring-web
-
-
CVE-2014-0225
visoka
FALSE
Dvojnik iste ranljivosti v spring-webu
-
CVE-2014-1904
CVE-2014-1904
srednje
FALSE
Ranljivost se nanaša na komponento spring-web-mvc
-
CVE-2014-3625
CVE-2014-3625
srednje
FALSE
Ranljivost se nanaša na komponento spring-web-mvc
-
CVE-2016-9878
CVE-2016-9878
visoka
FALSE
Ranljivost se nanaša na komponento spring-web-mvc
-
CVE-2018-1270
CVE-2018-1270
visoka
FALSE
Za pomladni-izraz/pomladna-sporočila
-
CVE-2018-1271
CVE-2018-1271
srednje
FALSE
Ranljivost se nanaša na komponento spring-web-mvc
-
CVE-2018-1272
CVE-2018-1272
visoka
TRUE
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
srednje
TRUE
SONATYPE-2015-0327
-
-
nizka
TRUE
struts2-config-brskalnik-plugin:2.3.30
SONATYPE-2016-0104
-
-
srednje
TRUE
spring-tx:3.0.5
-
CVE-2011-2730
-
visoka
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2011-2894
-
visoka
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2013-4152
-
srednje
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2013-6429
-
srednje
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2013-6430
-
srednje
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2013-7315
-
srednje
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2014-0054
-
srednje
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2014-0225
-
visoka
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2014-1904
-
srednje
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2014-3625
-
srednje
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2016-9878
-
visoka
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2018-1270
-
visoka
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2018-1271
-
srednje
FALSE
Ranljivost ni specifična za spring-tx
-
CVE-2018-1272
-
srednje
FALSE
Ranljivost ni specifična za spring-tx
oporno jedro:1.3.8
-
CVE-2011-5057 (OSSINDEX)
srednje
FASLE
Ranljivost za Struts 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
visoka
FALSE
Ranljivost za Struts 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
srednje
FALSE
Ranljivost za Struts 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
visoka
FALSE
Ranljivost za Struts 2
CVE-2016-1182
3VE-2016-1182
-
visoka
TRUE
-
-
CVE-2011-5057
srednje
FALSE
Ranljivost za Struts 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
visoka
FALSE
Ranljivost za Struts 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
srednje
FALSE
Ranljivost za Struts 2
CVE-2015-0899
CVE-2015-0899
-
visoka
TRUE
-
CVE-2012-0394
CVE-2012-0394
srednje
FALSE
Ranljivost za Struts 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
visoka
FALSE
Ranljivost za Struts 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
visoka
FALSE
Ranljivost za Struts 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
visoka
FASLE
Ranljivost za Struts 2
-
CVE-2013-2115
CVE-2013-2115
visoka
FASLE
Ranljivost za Struts 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
visoka
FASLE
Ranljivost za Struts 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
visoka
FASLE
Ranljivost za Struts 2
CVE-2014-0114
CVE-2014-0114
-
visoka
TRUE
-
CVE-2015-2992
CVE-2015-2992
srednje
FALSE
Ranljivost za Struts 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
visoka
FALSE
Ranljivost za Struts 2
CVE-2016-1181
CVE-2016-1181
-
visoka
TRUE
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
visoka
FALSE
Ranljivost za Struts 2
xwork-core:2.3.30
CVE-2017-9804
-
-
visoka
TRUE
SONATYPE-2017-0173
-
-
visoka
TRUE
CVE-2017-7672
-
-
visoka
FALSE
Dvojnik CVE-2017-9804
SONATYPE-2016-0127
-
-
visoka
TRUE
oporniki2-jedro:2.3.30
-
CVE-2016-6795
CVE-2016-6795
visoka
TRUE
-
CVE-2017-9787
CVE-2017-9787
visoka
TRUE
-
CVE-2017-9791
CVE-2017-9791
visoka
TRUE
-
CVE-2017-9793
-
visoka
FALSE
Dvojnik CVE-2018-1327
-
CVE-2017-9804
-
visoka
TRUE
-
CVE-2017-9805
CVE-2017-9805
visoka
TRUE
CVE-2016-4003
-
-
srednje
FALSE
Velja za Apache Struts 2.x do 2.3.28, kar je različica 2.3.30. Vendar je glede na opis CVE veljaven za katero koli različico Struts 2, če se uporablja JRE 1.7 ali manj. Očitno so se tukaj odločili, da nas bodo pozavarovali, a izgleda bolj kot LAŽ
-
CVE-2018-1327
CVE-2018-1327
visoka
TRUE
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
visoka
TRUE
Ista ranljivost, ki so jo leta 2017 izkoristili hekerji Equifax
CVE-2017-12611
CVE-2017-12611
-
visoka
TRUE
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
visoka
TRUE
struts-taglib:1.3.8
-
CVE-2012-0394
-
srednje
FALSE
Za opornike2-jedro
-
CVE-2013-2115
-
visoka
FALSE
Za opornike2-jedro
-
CVE-2014-0114
-
visoka
FALSE
Za Commons-beanutils
-
CVE-2015-0899
-
visoka
FALSE
Ne velja za taglib
-
CVE-2015-2992
-
srednje
FALSE
Nanaša se na struts2-core
-
CVE-2016-1181
-
visoka
FALSE
Ne velja za taglib
-
CVE-2016-1182
-
visoka
FALSE
Ne velja za taglib
oporniki-strešniki-1.3.8
-
CVE-2012-0394
-
srednje
FALSE
Za opornike2-jedro
-
CVE-2013-2115
-
visoka
FALSE
Za opornike2-jedro
-
CVE-2014-0114
-
visoka
FALSE
Pod Commons-beanutils
-
CVE-2015-0899
-
visoka
FALSE
Ne velja za ploščice
-
CVE-2015-2992
-
srednje
FALSE
Za opornike2-jedro
-
CVE-2016-1181
-
visoka
FALSE
Ne velja za taglib
-
CVE-2016-1182
-
visoka
FALSE
Ne velja za taglib
Vir: www.habr.com