Betydningen av analyse av tredjeparts programvarekomponenter (Software Composition Analysis - SCA) i utviklingsprosessen øker med utgivelsen av årlige rapporter om sårbarhetene til åpen kildekode-biblioteker, som er publisert av Synopsys, Sonatype, Snyk og White Source . Ifølge rapporten
En av de mest illustrerende sakene
Denne artikkelen vil diskutere spørsmålet om å velge et verktøy for å utføre SCA fra synspunktet om kvaliteten på analyseresultatene. En funksjonell sammenligning av verktøyene vil også bli gitt. Prosessen med integrering i CI/CD og integrasjonsfunksjoner vil bli overlatt til påfølgende publikasjoner. Et bredt spekter av verktøy ble presentert av OWASP
Prinsippet om drift
La oss se på hvordan CPE ser ut:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- Del: Indikasjon på at komponenten er relatert til applikasjonen (a), operativsystem (o), maskinvare (h) (påkrevd)
- Leverandør: Produktprodusentens navn (obligatorisk)
- Produkt: Produktnavn (obligatorisk)
- Versjon: Komponentversjon (foreldet vare)
- Oppdatering: Pakkeoppdatering
- Utgave: Eldre versjon (avviklet vare)
- Språk: Språk definert i RFC-5646
- SW-utgave: Programvareversjon
- Mål SW: Programvaremiljø som produktet opererer i
- Mål HW: Maskinvaremiljøet som produktet opererer i
- Annen: Leverandør- eller produktinformasjon
Et eksempel på CPE ser slik ut:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Linjen betyr at CPE versjon 2.3 beskriver applikasjonskomponenten fra produsenten pivotal_software
med tittelen spring_framework
versjon 3.0.0. Hvis vi åpner en sårbarhet
URL-en brukes også av SCA-verktøy. Pakkens URL-format er som følger:
scheme:type/namespace/name@version?qualifiers#subpath
- Opplegg: Det vil alltid være 'pkg' som indikerer at dette er en pakke-URL (påkrevd)
- Type: Pakkens "type" eller "protokollen" til pakken, for eksempel maven, npm, nuget, gem, pypi, etc. (Obligatorisk vare)
- navnerom: Noen navneprefikser, for eksempel en Maven-gruppe-ID, Docker-bildeeier, GitHub-bruker eller organisasjon. Valgfritt og avhenger av typen.
- Navn: Pakkenavn (påkrevd)
- Versjon: Pakkeversjon
- Kvalifisering: Ytterligere kvalifikasjonsdata for pakken, som OS, arkitektur, distribusjon osv. Valgfritt og typespesifikk.
- Underbane: Ekstra bane i pakken i forhold til pakkeroten
For eksempel:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
Et eksempel på hvordan en stykkliste kan se ut i XML-format:
<?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 kan brukes ikke bare som inngangsparametere for Dependency Track, men også for inventering av programvarekomponenter i forsyningskjeden, for eksempel for å levere programvare til en kunde. I 2014 ble det til og med foreslått en lov i USA
Tilbake til SCA har Dependency Track ferdige integrasjoner med varslingsplattformer som Slack, sårbarhetsstyringssystemer som Kenna Security. Det er også verdt å si at Dependency Track blant annet identifiserer utdaterte versjoner av pakker og gir informasjon om lisenser (grunnet SPDX-støtte).
Hvis vi snakker spesifikt om kvaliteten på SCA, så er det en grunnleggende forskjell.
Dependency Track godtar ikke prosjektet som input, men heller stykklisten. Dette betyr at hvis vi ønsker å teste prosjektet, må vi først generere bom.xml, for eksempel ved hjelp av CycloneDX. Dermed er Dependency Track direkte avhengig av CycloneDX. Samtidig gir det mulighet for tilpasning. Dette er hva OZON-teamet skrev
La oss oppsummere noen av de funksjonelle funksjonene, og også vurdere de støttede språkene for analyse:
Språk
Nexus IQ
Avhengighetssjekk
Avhengighetsspor
Java
+
+
+
C / C ++
+
+
-
C#
+
+
-
. Net
+
+
+
erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Python
+
+
+
Rubin
+
+
+
Perl
-
-
-
Skala
+
+
+
Mål C
+
+
-
Swift
+
+
-
R
+
-
-
Go
+
+
+
funksjonalitet
funksjonalitet
Nexus IQ
Avhengighetssjekk
Avhengighetsspor
Evnen til å sikre at komponentene som brukes i kildekoden kontrolleres for lisensiert renhet
+
-
+
Evne til å skanne og analysere for sårbarheter og lisensrenslighet for Docker-bilder
+ Integrasjon med Clair
-
-
Evne til å konfigurere sikkerhetspolicyer for å bruke åpen kildekode-biblioteker
+
-
-
Evne til å skanne åpen kildekodelagre for sårbare komponenter
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Tilgjengelighet av en spesialisert forskningsgruppe
+
-
-
Drift med lukket sløyfe
+
+
+
Bruke tredjeparts databaser
+ Lukket Sonatype-database
+ Sonatype OSS, NPM offentlige rådgivere
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, støtte for sin egen sårbarhetsdatabase
Evne til å filtrere åpen kildekode-komponenter når du prøver å laste inn i utviklingssløyfen i henhold til konfigurerte policyer
+
-
-
Anbefalinger for å fikse sårbarheter, tilgjengelighet av lenker til rettelser
+
+- (avhenger av beskrivelsen i offentlige databaser)
+- (avhenger av beskrivelsen i offentlige databaser)
Rangering av oppdagede sårbarheter etter alvorlighetsgrad
+
+
+
Rollebasert tilgangsmodell
+
-
+
CLI-støtte
+
+
+- (kun for CycloneDX)
Prøvetaking/sortering av sårbarheter etter definerte kriterier
+
-
+
Dashboard etter applikasjonsstatus
+
-
+
Generer rapporter i PDF-format
+
-
-
Genererer rapporter i JSONCSV-format
+
+
-
Støtte for russisk språk
-
-
-
Integrasjonsevner
integrering
Nexus IQ
Avhengighetssjekk
Avhengighetsspor
LDAP/Active Directory-integrasjon
+
-
+
Integrasjon med kontinuerlig integreringssystem Bamboo
+
-
-
Integrasjon med kontinuerlig integrasjonssystem TeamCity
+
-
-
Integrasjon med kontinuerlig integrasjonssystem GitLab
+
+- (som en plugin for GitLab)
+
Integrasjon med kontinuerlig integreringssystem Jenkins
+
+
+
Tilgjengelighet av plugins for IDE
+ IntelliJ, Eclipse, Visual Studio
-
-
Støtte for tilpasset integrasjon via web-tjenester (API) av verktøyet
+
-
+
Avhengighetssjekk
Første start
La oss kjøre avhengighetssjekk på en bevisst sårbar applikasjon
Til dette vil vi bruke
mvn org.owasp:dependency-check-maven:check
Som et resultat vil dependency-check-report.html vises i målkatalogen.
La oss åpne filen. Etter oppsummert informasjon om det totale antallet sårbarheter, kan vi se informasjon om sårbarheter med høy grad av alvorlighetsgrad og konfidens, som indikerer pakken, CPE og antall CVEer.
Deretter kommer mer detaljert informasjon, spesielt grunnlaget for beslutningen (bevis), det vil si en viss stykkliste.
Deretter kommer CPE-, PURL- og CVE-beskrivelsen. Forresten, anbefalinger for korrigering er ikke inkludert på grunn av deres fravær i NVD-databasen.
For å systematisk se skanneresultater kan du konfigurere Nginx med minimale innstillinger, eller sende de resulterende defektene til et defektbehandlingssystem som støtter koblinger til avhengighetssjekk. For eksempel Defect Dojo.
Avhengighetsspor
Installasjon
Dependency Track er på sin side en nettbasert plattform med visningsgrafer, så det presserende problemet med å lagre feil i en tredjepartsløsning dukker ikke opp her.
De støttede skriptene for installasjon er: Docker, WAR, Executable WAR.
Første start
Vi går til URL-en til den kjørende tjenesten. Vi logger inn via admin/admin, endrer innlogging og passord, og kommer så til Dashboard. Det neste vi skal gjøre er å lage et prosjekt for en testapplikasjon i Java i Hjem/Prosjekter → Opprett prosjekt . La oss ta DVJA som et eksempel.
Siden Dependency Track kun kan akseptere stykkliste som input, må denne stykklisten hentes. La oss dra nytte
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Vi henter bom.xml og laster filen i det opprettede prosjektet DVJA → Avhengigheter → Last opp stykkliste.
La oss gå til Administrasjon → Analysatorer. Vi forstår at vi bare har Internal Analyzer aktivert, som inkluderer NVD. La oss også koble til Sonatype OSS Index.
Dermed får vi følgende bilde for prosjektet vårt:
Også i listen kan du finne en sårbarhet som gjelder Sonatype OSS:
Den største skuffelsen var at Dependency Track ikke lenger godtar Dependency Check xml-rapporter. De siste støttede versjonene av Dependency Check-integrasjonen var 1.0.0 - 4.0.2, mens jeg testet 5.3.2.
Her
Nexus IQ
Første start
Installasjon av Nexus IQ kommer fra arkivene til
Etter å ha logget på konsollen, må du opprette en organisasjon og applikasjon.
Som du kan se, er oppsettet for IQ noe mer komplisert, fordi vi også må lage policyer som gjelder for forskjellige "stadier" (dev, build, stage, release). Dette er nødvendig for å blokkere sårbare komponenter når de beveger seg gjennom rørledningen nærmere produksjon, eller for å blokkere dem så snart de kommer inn i Nexus Repo når de lastes ned av utviklere.
For å føle forskjellen mellom åpen kildekode og bedrift, la oss utføre den samme skanningen gjennom Nexus IQ på samme måte gjennom 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>
Følg URL-en til den genererte rapporten i IQ-nettgrensesnittet:
Her kan du se alle brudd på retningslinjene som indikerer ulike betydningsnivåer (fra info til sikkerhetskritisk). Bokstaven D ved siden av komponenten betyr at komponenten er direkte avhengighet, og bokstaven T ved siden av komponenten betyr at komponenten er transitiv avhengighet, det vil si at den er transitiv.
Forresten rapporten
Hvis vi åpner et av bruddene på Nexus IQ-retningslinjene, kan vi se en beskrivelse av komponenten, samt en versjonsgraf, som viser plasseringen av den gjeldende versjonen i tidsgrafen, samt på hvilket tidspunkt sårbarheten opphører. være sårbar. Høyden på lysene på grafen viser populariteten til å bruke denne komponenten.
Hvis du går til sårbarhetsdelen og utvider CVE, kan du lese en beskrivelse av denne sårbarheten, anbefalinger for eliminering, samt årsaken til at denne komponenten ble krenket, det vil si tilstedeværelsen av klassen DiskFileitem.class
.
La oss bare oppsummere de som er relatert til tredjeparts Java-komponenter, og fjerner js-komponentene. I parentes angir vi antall sårbarheter som ble funnet utenfor NVD.
Total Nexus IQ:
- Skannet avhengigheter: 62
- Sårbare avhengigheter: 16
- Sårbarheter funnet: 42 (8 sonatype db)
Total avhengighetssjekk:
- Skannet avhengigheter: 47
- Sårbare avhengigheter: 13
- Sårbarheter funnet: 91 (14 sonatype oss)
Total avhengighetsspor:
- Skannet avhengigheter: 59
- Sårbare avhengigheter: 10
- Sårbarheter funnet: 51 (1 sonatype oss)
I de neste trinnene vil vi analysere resultatene som er oppnådd og finne ut hvilke av disse sårbarhetene som er en reell defekt og som er en falsk positiv.
Ansvarsfraskrivelse
Denne anmeldelsen er ikke en udiskutabel sannhet. Forfatteren hadde ikke som mål å fremheve et eget virkemiddel mot andres bakgrunn. Hensikten med gjennomgangen var å vise mekanismene for drift av SCA-verktøy og måter å sjekke resultatene på.
Sammenligning av resultater
Vilkår og betingelser:
En falsk positiv for sårbarheter i tredjepartskomponenter er:
- CVE-mismatch til identifisert komponent
- For eksempel, hvis en sårbarhet er identifisert i struts2-rammeverket, og verktøyet peker på en komponent av struts-tiles-rammeverket, som denne sårbarheten ikke gjelder, så er dette en falsk positiv
- CVE samsvarer ikke med den identifiserte versjonen av komponenten
- For eksempel er sårbarheten knyttet til python-versjon > 3.5 og verktøyet markerer versjon 2.7 som sårbar - dette er en falsk positiv, siden sårbarheten faktisk bare gjelder 3.x-produktgrenen
- Dupliser CVE
- For eksempel, hvis SCA spesifiserer en CVE som aktiverer en RCE, spesifiserer SCA en CVE for den samme komponenten som gjelder for Cisco-produkter som er berørt av den RCE. I dette tilfellet vil den være falsk positiv.
- For eksempel ble en CVE funnet i en spring-web-komponent, hvoretter SCA peker på den samme CVE i andre komponenter i Spring Framework, mens CVE ikke har noe med andre komponenter å gjøre. I dette tilfellet vil den være falsk positiv.
Formålet med studien var Open Source-prosjektet DVJA. Studien involverte kun java-komponenter (uten js).
Oppsummeringsresultater
La oss gå rett til resultatene av en manuell gjennomgang av identifiserte sårbarheter. Den fullstendige rapporten for hver CVE finnes i vedlegget.
Oppsummeringsresultater for alle sårbarheter:
Parameter
Nexus IQ
Avhengighetssjekk
Avhengighetsspor
Totale sårbarheter identifisert
42
91
51
Feil identifiserte sårbarheter (falsk positiv)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Ingen relevante sårbarheter funnet (falsk negativ)
10
20
27
Sammendrag av resultater etter komponent:
Parameter
Nexus IQ
Avhengighetssjekk
Avhengighetsspor
Totalt identifisert komponenter
62
47
59
Totalt sårbare komponenter
16
13
10
Feil identifiserte sårbare komponenter (falsk positiv)
1
5
0
Feil identifiserte sårbare komponenter (falsk positiv)
0
6
6
La oss bygge visuelle grafer for å evaluere forholdet mellom falske positive og falske negative til det totale antallet sårbarheter. Komponenter er merket horisontalt, og sårbarheter identifisert i dem er merket vertikalt.
Til sammenligning ble en lignende studie utført av Sonatype-teamet som testet et prosjekt med 1531 komponenter ved bruk av OWASP Dependency Check. Som vi kan se, er forholdet mellom støy og korrekte svar sammenlignbart med resultatene våre.
Kilde:
La oss se på noen CVE-er fra skanneresultatene våre for å forstå årsaken til disse resultatene.
Mer
№ 1
La oss først se på noen interessante punkter om Sonatype Nexus IQ.
Nexus IQ påpeker et problem med deserialisering med muligheten til å utføre RCE i Spring Framework flere ganger. CVE-2016-1000027 i spring-web:3.0.5 første gang, og CVE-2011-2894 i spring-context:3.0.5 og spring-core:3.0.5. Til å begynne med ser det ut til at det er duplisering av sårbarhet på tvers av flere CVE-er. For hvis du ser på CVE-2016-1000027 og CVE-2011-2894 i NVD-databasen, ser det ut til at alt er åpenbart
komponent
Sårbarhet
spring-web:3.0.5
CVE-2016-1000027
vårkontekst:3.0.5
CVE-2011-2894
fjærkjerne:3.0.5
CVE-2011-2894
beskrivelse
beskrivelse
CVE-2011-2894 i seg selv er ganske kjent. I rapporten RemoteInvocationSerializingExporter
i CVE-2011-2894 er sårbarheten observert i HttpInvokerServiceExporter
. Dette er hva Nexus IQ forteller oss:
Imidlertid er det ingenting som dette i NVD, og det er grunnen til at Dependency Check og Dependency Track hver mottar falsk negativ.
Også fra beskrivelsen av CVE-2011-2894 kan det forstås at sårbarheten faktisk er tilstede i både spring-context:3.0.5 og spring-core:3.0.5. Bekreftelse på dette finner du i en artikkel fra personen som fant denne sårbarheten.
№ 2
komponent
Sårbarhet
Resultat
stivere2-kjerne:2.3.30
CVE-2016-4003
FALSK
Hvis vi studerer sårbarheten CVE-2016-4003, vil vi forstå at den ble fikset i versjon 2.3.28, men Nexus IQ rapporterer det til oss. Det er en merknad i beskrivelsen av sårbarheten:
Det vil si at sårbarheten eksisterer kun i forbindelse med en utdatert versjon av JRE, som de bestemte seg for å advare oss om. Ikke desto mindre anser vi dette som falskt positivt, selv om det ikke er det verste.
# 3
komponent
Sårbarhet
Resultat
xwork-core:2.3.30
CVE-2017-9804
TRUE
xwork-core:2.3.30
CVE-2017-7672
FALSK
Hvis vi ser på beskrivelsene av CVE-2017-9804 og CVE-2017-7672, vil vi forstå at problemet er URLValidator class
, med CVE-2017-9804 som stammer fra CVE-2017-7672. Tilstedeværelsen av den andre sårbarheten har ingen nyttig belastning annet enn det faktum at alvorlighetsgraden har økt til Høy, så vi kan vurdere det som unødvendig støy.
Totalt sett ble det ikke funnet andre falske positiver for Nexus IQ.
№ 4
Det er flere ting som gjør at IQ skiller seg ut fra andre løsninger.
komponent
Sårbarhet
Resultat
spring-web:3.0.5
CVE-2020-5398
TRUE
CVE i NVD sier at det kun gjelder versjoner 5.2.x før 5.2.3, 5.1.x før 5.1.13, og versjoner 5.0.x før 5.0.16, men hvis vi ser på CVE-beskrivelsen i Nexus IQ , så vil vi se følgende:
Advisory Deviation Notice: Sonatypes sikkerhetsforskningsteam oppdaget at dette sikkerhetsproblemet ble introdusert i versjon 3.0.2.RELEASE og ikke 5.0.x som angitt i veiledningen.
Dette etterfølges av en PoC for denne sårbarheten, som sier at den er til stede i versjon 3.0.5.
Falsk negativ sendes til Dependency Check og Dependency Track.
№ 5
La oss se på falsk positiv for Dependency Check og Dependency Track.
Dependency Check skiller seg ut ved at den reflekterer de CVE-ene som gjelder for hele rammeverket i NVD for de komponentene som disse CVE-ene ikke gjelder. Dette gjelder CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, hvilken avhengighetssjekk ” til struts-taglib:1.3.8 og struts-tiles-1.3.8. Disse komponentene har ingenting å gjøre med det som er beskrevet i CVE - forespørselsbehandling, sidevalidering og så videre. Dette skyldes det faktum at det som disse CVE-ene og komponentene har til felles, kun er rammeverket, og det er derfor Dependency Check anså det som en sårbarhet.
Samme situasjon er med spring-tx:3.0.5, og en lignende situasjon med struts-core:1.3.8. For struts-core har Dependency Check og Dependency Track funnet mange sårbarheter som faktisk gjelder for struts2-core, som egentlig er et eget rammeverk. I dette tilfellet forsto Nexus IQ bildet riktig, og i CVE-ene den utstedte, indikerte det at struts-core hadde nådd slutten av livet, og det var nødvendig å flytte til struts2-core.
№ 6
I noen situasjoner er det urettferdig å tolke en åpenbar feil i avhengighetssjekk og avhengighetssporing. Spesielt CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, hvilke sporingskontroller og avhengighet tilskrevet spring-core:3.0.5 tilhører faktisk spring-web:3.0.5. Samtidig ble noen av disse CVE-ene også funnet av Nexus IQ, men IQ identifiserte dem riktig til en annen komponent. Fordi disse sårbarhetene ikke ble funnet i spring-core, kan det ikke hevdes at de ikke er i rammeverket i prinsippet, og open source-verktøy påpekte med rette disse sårbarhetene (de bommet bare litt).
Funn
Som vi kan se, gir det ikke entydige resultater å bestemme påliteligheten til identifiserte sårbarheter ved manuell gjennomgang, og det er grunnen til at kontroversielle problemer oppstår. Resultatene er at Nexus IQ-løsningen har den laveste antallet falske positiver og den høyeste nøyaktigheten.
For det første skyldes dette at Sonatype-teamet utvidet beskrivelsen for hver CVE-sårbarhet fra NVD i databasene, og indikerte sårbarhetene for en bestemt versjon av komponentene ned til klassen eller funksjonen, og utførte ytterligere undersøkelser (for eksempel , sjekker sårbarheter på eldre programvareversjoner).
En viktig innflytelse på resultatene spilles også av de sårbarhetene som ikke var inkludert i NVD, men som likevel finnes i Sonatype-databasen med SONATYPE-merket. Ifølge rapporten
Som et resultat produserer Dependency Check mye støy, og mangler noen sårbare komponenter. Dependency Track produserer mindre støy og oppdager et stort antall komponenter, noe som ikke visuelt skader øynene i webgrensesnittet.
Praksis viser imidlertid at åpen kildekode bør bli de første skrittene mot modne DevSecOps. Det første du bør tenke på når du integrerer SCA i utvikling er prosesser, nemlig å tenke sammen med ledelsen og relaterte avdelinger om hvordan ideelle prosesser skal se ut i din organisasjon. Det kan vise seg at for din organisasjon vil Dependency Check eller Dependency Track først dekke alle forretningsbehov, og Enterprise-løsninger vil være en logisk fortsettelse på grunn av den økende kompleksiteten til applikasjonene som utvikles.
Vedlegg A: Komponentresultater
Legend:
- Svakheter på høyt og kritisk nivå i komponenten
- Middels — Sårbarheter med middels kritikalitetsnivå i komponenten
- TRUE — Ekte positiv sak
- FALSE — Falsk positiv sak
komponent
Nexus IQ
Avhengighetssjekk
Avhengighetsspor
Resultat
dom4j: 1.6.1
Høy
Høy
Høy
TRUE
log4j-kjerne: 2.3
Høy
Høy
Høy
TRUE
log4j: 1.2.14
Høy
Høy
-
TRUE
fellessamlinger:3.1
Høy
Høy
Høy
TRUE
commons-fileupload:1.3.2
Høy
Høy
Høy
TRUE
commons-beanutils:1.7.0
Høy
Høy
Høy
TRUE
commons-codec:1:10
Medium
-
-
TRUE
mysql-connector-java:5.1.42
Høy
Høy
Høy
TRUE
fjæruttrykk:3.0.5
Høy
komponent ikke funnet
TRUE
spring-web:3.0.5
Høy
komponent ikke funnet
Høy
TRUE
vårkontekst:3.0.5
Medium
komponent ikke funnet
-
TRUE
fjærkjerne:3.0.5
Medium
Høy
Høy
TRUE
struts2-config-browser-plugin:2.3.30
Medium
-
-
TRUE
spring-tx:3.0.5
-
Høy
-
FALSK
stag-kjerne:1.3.8
Høy
Høy
Høy
TRUE
xwork-core: 2.3.30
Høy
-
-
TRUE
struts2-core: 2.3.30
Høy
Høy
Høy
TRUE
struts-taglib:1.3.8
-
Høy
-
FALSK
stag-fliser-1.3.8
-
Høy
-
FALSK
Vedlegg B: Sårbarhetsresultater
Legend:
- Svakheter på høyt og kritisk nivå i komponenten
- Middels — Sårbarheter med middels kritikalitetsnivå i komponenten
- TRUE — Ekte positiv sak
- FALSE — Falsk positiv sak
komponent
Nexus IQ
Avhengighetssjekk
Avhengighetsspor
Alvorlighetsgrad
Resultat
Kommentar
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
Høy
TRUE
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
Høy
TRUE
log4j-kjerne: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
Høy
TRUE
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
Lav
TRUE
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
Høy
TRUE
-
CVE-2020-9488
-
Lav
TRUE
SONATYPE-2010-0053
-
-
Høy
TRUE
fellessamlinger:3.1
-
CVE-2015-6420
CVE-2015-6420
Høy
FALSK
Duplikater RCE(OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
Høy
FALSK
Duplikater RCE(OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
Høy
TRUE
commons-fileupload:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
Høy
TRUE
SONATYPE-2014-0173
-
-
Medium
TRUE
commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
Høy
TRUE
-
CVE-2019-10086
CVE-2019-10086
Høy
FALSK
Sårbarheten gjelder kun versjon 1.9.2+
commons-codec:1:10
SONATYPE-2012-0050
-
-
Medium
TRUE
mysql-connector-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
Høy
TRUE
CVE-2019-2692
CVE-2019-2692
-
Medium
TRUE
-
CVE-2020-2875
-
Medium
FALSK
Den samme sårbarheten som CVE-2019-2692, men med merknaden "angrep kan påvirke ytterligere produkter betydelig"
-
CVE-2017-15945
-
Høy
FALSK
Ikke relevant for mysql-connector-java
-
CVE-2020-2933
-
Lav
FALSK
Duplikat av CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
Medium
TRUE
fjæruttrykk:3.0.5
CVE-2018-1270
komponent ikke funnet
-
Høy
TRUE
CVE-2018-1257
-
-
Medium
TRUE
spring-web:3.0.5
CVE-2016-1000027
komponent ikke funnet
-
Høy
TRUE
CVE-2014-0225
-
CVE-2014-0225
Høy
TRUE
CVE-2011-2730
-
-
Høy
TRUE
-
-
CVE-2013-4152
Medium
TRUE
CVE-2018-1272
-
-
Høy
TRUE
CVE-2020-5398
-
-
Høy
TRUE
Et illustrerende eksempel til fordel for IQ: "Sonatypes sikkerhetsforskningsteam oppdaget at denne sårbarheten ble introdusert i versjon 3.0.2.RELEASE og ikke 5.0.x som angitt i meldingen."
CVE-2013-6429
-
-
Medium
TRUE
CVE-2014-0054
-
CVE-2014-0054
Medium
TRUE
CVE-2013-6430
-
-
Medium
TRUE
vårkontekst:3.0.5
CVE-2011-2894
komponent ikke funnet
-
Medium
TRUE
fjærkjerne:3.0.5
-
CVE-2011-2730
CVE-2011-2730
Høy
TRUE
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Medium
TRUE
-
-
CVE-2013-4152
Medium
FALSK
Duplikat av samme sårbarhet i spring-web
-
CVE-2013-4152
-
Medium
FALSK
Sårbarheten er relatert til spring-web-komponenten
-
CVE-2013-6429
CVE-2013-6429
Medium
FALSK
Sårbarheten er relatert til spring-web-komponenten
-
CVE-2013-6430
-
Medium
FALSK
Sårbarheten er relatert til spring-web-komponenten
-
CVE-2013-7315
CVE-2013-7315
Medium
FALSK
SPLIT fra CVE-2013-4152. + Sårbarheten er relatert til spring-web-komponenten
-
CVE-2014-0054
CVE-2014-0054
Medium
FALSK
Sårbarheten er relatert til spring-web-komponenten
-
CVE-2014-0225
-
Høy
FALSK
Sårbarheten er relatert til spring-web-komponenten
-
-
CVE-2014-0225
Høy
FALSK
Duplikat av samme sårbarhet i spring-web
-
CVE-2014-1904
CVE-2014-1904
Medium
FALSK
Sårbarheten er relatert til spring-web-mvc-komponenten
-
CVE-2014-3625
CVE-2014-3625
Medium
FALSK
Sårbarheten er relatert til spring-web-mvc-komponenten
-
CVE-2016-9878
CVE-2016-9878
Høy
FALSK
Sårbarheten er relatert til spring-web-mvc-komponenten
-
CVE-2018-1270
CVE-2018-1270
Høy
FALSK
For vår-uttrykk/vår-meldinger
-
CVE-2018-1271
CVE-2018-1271
Medium
FALSK
Sårbarheten er relatert til spring-web-mvc-komponenten
-
CVE-2018-1272
CVE-2018-1272
Høy
TRUE
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
Medium
TRUE
SONATYPE-2015-0327
-
-
Lav
TRUE
struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
Medium
TRUE
spring-tx:3.0.5
-
CVE-2011-2730
-
Høy
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2011-2894
-
Høy
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2013-4152
-
Medium
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2013-6429
-
Medium
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2013-6430
-
Medium
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2013-7315
-
Medium
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2014-0054
-
Medium
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2014-0225
-
Høy
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2014-1904
-
Medium
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2014-3625
-
Medium
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2016-9878
-
Høy
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2018-1270
-
Høy
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2018-1271
-
Medium
FALSK
Sårbarheten er ikke spesifikk for spring-tx
-
CVE-2018-1272
-
Medium
FALSK
Sårbarheten er ikke spesifikk for spring-tx
stag-kjerne:1.3.8
-
CVE-2011-5057 (OSSINDEX)
Medium
FASLE
Sårbarhet for struts 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
Høy
FALSK
Sårbarhet for struts 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
Medium
FALSK
Sårbarhet for struts 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
Høy
FALSK
Sårbarhet for struts 2
CVE-2016-1182
3VE-2016-1182
-
Høy
TRUE
-
-
CVE-2011-5057
Medium
FALSK
Sårbarhet for struts 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
Høy
FALSK
Sårbarhet for struts 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
Medium
FALSK
Sårbarhet for struts 2
CVE-2015-0899
CVE-2015-0899
-
Høy
TRUE
-
CVE-2012-0394
CVE-2012-0394
Medium
FALSK
Sårbarhet for struts 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
Høy
FALSK
Sårbarhet for struts 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
Høy
FALSK
Sårbarhet for struts 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
Høy
FASLE
Sårbarhet for struts 2
-
CVE-2013-2115
CVE-2013-2115
Høy
FASLE
Sårbarhet for struts 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
Høy
FASLE
Sårbarhet for struts 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
Høy
FASLE
Sårbarhet for struts 2
CVE-2014-0114
CVE-2014-0114
-
Høy
TRUE
-
CVE-2015-2992
CVE-2015-2992
Medium
FALSK
Sårbarhet for struts 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
Høy
FALSK
Sårbarhet for struts 2
CVE-2016-1181
CVE-2016-1181
-
Høy
TRUE
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
Høy
FALSK
Sårbarhet for struts 2
xwork-core:2.3.30
CVE-2017-9804
-
-
Høy
TRUE
SONATYPE-2017-0173
-
-
Høy
TRUE
CVE-2017-7672
-
-
Høy
FALSK
Duplikat av CVE-2017-9804
SONATYPE-2016-0127
-
-
Høy
TRUE
stivere2-kjerne:2.3.30
-
CVE-2016-6795
CVE-2016-6795
Høy
TRUE
-
CVE-2017-9787
CVE-2017-9787
Høy
TRUE
-
CVE-2017-9791
CVE-2017-9791
Høy
TRUE
-
CVE-2017-9793
-
Høy
FALSK
Duplikat av CVE-2018-1327
-
CVE-2017-9804
-
Høy
TRUE
-
CVE-2017-9805
CVE-2017-9805
Høy
TRUE
CVE-2016-4003
-
-
Medium
FALSK
Gjelder for Apache Struts 2.x opp til 2.3.28, som er versjon 2.3.30. Basert på beskrivelsen er imidlertid CVE gyldig for enhver versjon av Struts 2 hvis JRE 1.7 eller mindre brukes. Tilsynelatende bestemte de seg for å gjenforsikre oss her, men det ser mer ut som FALSK
-
CVE-2018-1327
CVE-2018-1327
Høy
TRUE
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
Høy
TRUE
Den samme sårbarheten som Equifax-hackere utnyttet i 2017
CVE-2017-12611
CVE-2017-12611
-
Høy
TRUE
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
Høy
TRUE
struts-taglib:1.3.8
-
CVE-2012-0394
-
Medium
FALSK
For stivere 2-kjerne
-
CVE-2013-2115
-
Høy
FALSK
For stivere 2-kjerne
-
CVE-2014-0114
-
Høy
FALSK
For commons-beanutils
-
CVE-2015-0899
-
Høy
FALSK
Gjelder ikke taglib
-
CVE-2015-2992
-
Medium
FALSK
Refererer til struts2-core
-
CVE-2016-1181
-
Høy
FALSK
Gjelder ikke taglib
-
CVE-2016-1182
-
Høy
FALSK
Gjelder ikke taglib
stag-fliser-1.3.8
-
CVE-2012-0394
-
Medium
FALSK
For stivere 2-kjerne
-
CVE-2013-2115
-
Høy
FALSK
For stivere 2-kjerne
-
CVE-2014-0114
-
Høy
FALSK
Under commons-beanutils
-
CVE-2015-0899
-
Høy
FALSK
Gjelder ikke fliser
-
CVE-2015-2992
-
Medium
FALSK
For stivere 2-kjerne
-
CVE-2016-1181
-
Høy
FALSK
Gjelder ikke taglib
-
CVE-2016-1182
-
Høy
FALSK
Gjelder ikke taglib
Kilde: www.habr.com