Betydningen af analyse af tredjeparts softwarekomponenter (Software Composition Analysis - SCA) i udviklingsprocessen vokser med udgivelsen af årlige rapporter om sårbarhederne i open source-biblioteker, som udgives af Synopsys, Sonatype, Snyk og White Source . Ifølge rapporten
En af de mest illustrative sager
Denne artikel vil diskutere spørgsmålet om valg af et værktøj til at udføre SCA ud fra et synspunkt om kvaliteten af analyseresultaterne. Der vil også blive givet en funktionel sammenligning af værktøjerne. Processen med at integrere i CI/CD og integrationsmuligheder vil blive overladt til efterfølgende publikationer. En bred vifte af værktøjer blev præsenteret af OWASP
Virkemåde
Lad os se på, hvordan CPE ser ud:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- En del: Angivelse af, at komponenten vedrører applikationen (a), operativsystemet (o), hardwaren (h) (påkrævet)
- Forhandler: Produktproducentens navn (påkrævet)
- Produkt: Produktnavn (påkrævet)
- Version: Komponentversion (forældet vare)
- Update: Pakkeopdatering
- Udgave: Ældre version (udgået vare)
- Sprog: Sprog defineret i RFC-5646
- SW udgave: Software version
- Mål SW: Softwaremiljø, som produktet fungerer i
- Mål HW: Hardwaremiljøet, som produktet fungerer i
- Andre: Leverandør- eller produktinformation
Et eksempel på CPE ser sådan ud:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Linjen betyder, at CPE version 2.3 beskriver applikationskomponenten fra producenten pivotal_software
med titel spring_framework
version 3.0.0. Hvis vi åbner en sårbarhed
URL'en bruges også af SCA-værktøjer. Pakkens URL-format er som følger:
scheme:type/namespace/name@version?qualifiers#subpath
- Skema: Der vil altid være 'pkg', der angiver, at dette er en pakke-URL (påkrævet)
- Type: Pakkens "type" eller "protokollen" for pakken, såsom maven, npm, nuget, gem, pypi osv. (Påkrævet)
- Navneområde: Nogle navnepræfikser, såsom et Maven-gruppe-id, Docker-billedejer, GitHub-bruger eller organisation. Valgfrit og afhænger af typen.
- Navn: Pakkenavn (påkrævet)
- Version: Pakkeversion
- kvalifikationsturneringer: Yderligere kvalifikationsdata for pakken, såsom OS, arkitektur, distribution osv. Valgfri og typespecifik.
- Understi: Yderligere sti i pakken i forhold til pakkeroden
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 stykliste kan se ud 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 ikke kun bruges som inputparametre til Dependency Track, men også til opgørelse af softwarekomponenter i forsyningskæden, for eksempel til levering af software til en kunde. I 2014 blev der endda foreslået en lov i USA
Vender tilbage til SCA, har Dependency Track færdige integrationer med Notification Platforms som Slack, sårbarhedsstyringssystemer som Kenna Security. Det er også værd at sige, at Dependency Track blandt andet identificerer forældede versioner af pakker og giver information om licenser (grundet SPDX-understøttelse).
Hvis vi taler specifikt om kvaliteten af SCA, så er der en grundlæggende forskel.
Dependency Track accepterer ikke projektet som input, men derimod styklisten. Det betyder, at hvis vi vil teste projektet, skal vi først generere bom.xml, for eksempel ved hjælp af CycloneDX. Dependency Track er således direkte afhængig af CycloneDX. Samtidig giver det mulighed for tilpasning. Dette er, hvad OZON-holdet skrev
Lad os opsummere nogle af de funktionelle funktioner og også overveje de understøttede sprog til analyse:
Sprog
Nexus IQ
Afhængighedskontrol
Afhængighedsspor
Java
+
+
+
C / C ++
+
+
—
C#
+
+
—
. Net
+
+
+
erlang
—
—
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Python
+
+
+
Rubin
+
+
+
Perl
—
—
—
Scala
+
+
+
Mål C
+
+
—
Swift
+
+
—
R
+
—
—
Go
+
+
+
funktionalitet
funktionalitet
Nexus IQ
Afhængighedskontrol
Afhængighedsspor
Evnen til at sikre, at komponenter, der bruges i kildekoden, kontrolleres for licenseret renhed
+
—
+
Evne til at scanne og analysere for sårbarheder og licensrenhed for Docker-billeder
+ Integration med Clair
—
—
Mulighed for at konfigurere sikkerhedspolitikker til at bruge open source-biblioteker
+
—
—
Evne til at scanne open source-lagre 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
Tilgængelighed af en specialiseret forskningsgruppe
+
—
—
Lukket sløjfe drift
+
+
+
Brug af tredjeparts databaser
+ Lukket Sonatype-database
+ Sonatype OSS, NPM offentlige rådgivere
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, understøttelse af sin egen sårbarhedsdatabase
Evne til at filtrere open source-komponenter, når du forsøger at indlæse i udviklingsløkken i henhold til konfigurerede politikker
+
—
—
Anbefalinger til udbedring af sårbarheder, tilgængelighed af links til rettelser
+
+- (afhænger af beskrivelsen i offentlige databaser)
+- (afhænger af beskrivelsen i offentlige databaser)
Rangering af opdagede sårbarheder efter sværhedsgrad
+
+
+
Rollebaseret adgangsmodel
+
—
+
CLI support
+
+
+- (kun for CycloneDX)
Prøveudtagning/sortering af sårbarheder efter definerede kriterier
+
—
+
Dashboard efter applikationsstatus
+
—
+
Generering af rapporter i PDF-format
+
—
—
Generering af rapporter i JSONCSV-format
+
+
—
Understøttelse af russisk sprog
—
—
—
Integrationsmuligheder
integration
Nexus IQ
Afhængighedskontrol
Afhængighedsspor
LDAP/Active Directory integration
+
—
+
Integration med kontinuerligt integrationssystem Bamboo
+
—
—
Integration med kontinuerligt integrationssystem TeamCity
+
—
—
Integration med kontinuerligt integrationssystem GitLab
+
+- (som et plugin til GitLab)
+
Integration med kontinuerligt integrationssystem Jenkins
+
+
+
Tilgængelighed af plugins til IDE
+ IntelliJ, Eclipse, Visual Studio
—
—
Support til tilpasset integration via web-services (API) af værktøjet
+
—
+
Afhængighedskontrol
Første start
Lad os køre afhængighedstjek på en bevidst sårbar applikation
Til dette vil vi bruge
mvn org.owasp:dependency-check-maven:check
Som et resultat vil dependency-check-report.html vises i målbiblioteket.
Lad os åbne filen. Efter opsummerende oplysninger om det samlede antal sårbarheder, kan vi se oplysninger om sårbarheder med et højt niveau af alvorlighed og konfidens, med angivelse af pakken, CPE og antallet af CVE'er.
Dernæst kommer mere detaljerede oplysninger, især grundlaget for beslutningen (bevis), det vil sige en bestemt stykliste.
Dernæst kommer CPE-, PURL- og CVE-beskrivelsen. I øvrigt er anbefalinger til rettelser ikke inkluderet på grund af deres fravær i NVD-databasen.
For systematisk at se scanningsresultater kan du konfigurere Nginx med minimale indstillinger eller sende de resulterende defekter til et defektstyringssystem, der understøtter forbindelser til afhængighedstjek. For eksempel Defect Dojo.
Afhængighedsspor
Installation
Dependency Track er til gengæld en webbaseret platform med visningsgrafer, så det presserende spørgsmål om lagring af fejl i en tredjepartsløsning opstår ikke her.
De understøttede scripts til installation er: Docker, WAR, Executable WAR.
Første start
Vi går til URL'en for den kørende tjeneste. Vi logger ind via admin/admin, ændrer login og adgangskode og kommer så til Dashboardet. Det næste vi vil gøre er at lave et projekt til en testapplikation i Java i Hjem/Projekter → Opret projekt . Lad os tage DVJA som et eksempel.
Da Dependency Track kun kan acceptere stykliste som input, skal denne stykliste hentes. Lad os drage fordel
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Vi henter bom.xml og indlæser filen i det oprettede projekt DVJA → Afhængigheder → Upload stykliste.
Lad os gå til Administration → Analysatorer. Vi forstår, at vi kun har Internal Analyzer aktiveret, som inkluderer NVD. Lad os også forbinde Sonatype OSS Index.
Således får vi følgende billede til vores projekt:
På listen kan du også finde en sårbarhed, der gælder for Sonatype OSS:
Den største skuffelse var, at Dependency Track ikke længere accepterer Dependency Check xml-rapporter. De seneste understøttede versioner af Dependency Check-integrationen var 1.0.0 - 4.0.2, mens jeg testede 5.3.2.
her
Nexus IQ
Første start
Installation af Nexus IQ kommer fra arkiverne af
Når du har logget ind på konsollen, skal du oprette en organisation og en applikation.
Som du kan se, er opsætningen i tilfælde af IQ noget mere kompliceret, fordi vi også skal lave politikker, der er gældende for forskellige "stadier" (dev, build, stage, release). Dette er nødvendigt for at blokere sårbare komponenter, når de bevæger sig gennem pipelinen tættere på produktionen, eller for at blokere dem, så snart de kommer ind i Nexus Repo, når de downloades af udviklere.
For at mærke forskellen mellem open source og virksomhed, lad os udføre den samme scanning gennem Nexus IQ på samme måde gennem 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 genererede rapport i IQ-webgrænsefladen:
Her kan du se alle politikovertrædelser, der angiver forskellige betydningsniveauer (fra Info til Sikkerhedskritisk). Bogstavet D ved siden af komponenten betyder, at komponenten er direkte afhængighed, og bogstavet T ved siden af komponenten betyder, at komponenten er Transitiv afhængighed, det vil sige, at den er transitiv.
I øvrigt rapporten
Hvis vi åbner en af Nexus IQ-politikovertrædelserne, kan vi se en beskrivelse af komponenten samt en versionsgraf, som viser placeringen af den aktuelle version i tidsgrafen, samt på hvilket tidspunkt sårbarheden ophører. være sårbar. Højden af lysene på grafen viser populariteten af at bruge denne komponent.
Hvis du går til sårbarhedsafsnittet og udvider CVE, kan du læse en beskrivelse af denne sårbarhed, anbefalinger til eliminering samt årsagen til, at denne komponent blev krænket, det vil sige tilstedeværelsen af klassen DiskFileitem.class
.
Lad os kun opsummere dem, der er relateret til tredjeparts Java-komponenter, ved at fjerne js-komponenterne. I parentes angiver vi antallet af sårbarheder, der blev fundet uden for NVD.
Samlet Nexus IQ:
- Scannede afhængigheder: 62
- Sårbare afhængigheder: 16
- Sårbarheder fundet: 42 (8 sonatype db)
Total afhængighedstjek:
- Scannede afhængigheder: 47
- Sårbare afhængigheder: 13
- Sårbarheder fundet: 91 (14 sonatype oss)
Samlet afhængighedsspor:
- Scannede afhængigheder: 59
- Sårbare afhængigheder: 10
- Sårbarheder fundet: 51 (1 sonatype oss)
I de næste trin vil vi analysere de opnåede resultater og finde ud af, hvilken af disse sårbarheder der er en reel defekt, og hvilken der er en falsk positiv.
Ansvarsfraskrivelse
Denne anmeldelse er ikke en ubestridelig sandhed. Forfatteren havde ikke et mål om at fremhæve et særskilt instrument på baggrund af andre. Formålet med gennemgangen var at vise mekanismerne for driften af SCA-værktøjer og måder at kontrollere deres resultater på.
Sammenligning af resultater
Vilkår og betingelser:
En falsk positiv for sårbarheder i tredjepartskomponenter er:
- CVE-uoverensstemmelse med identificeret komponent
- For eksempel, hvis en sårbarhed er identificeret i struts2 frameworket, og værktøjet peger på en komponent af struts-tiles frameworket, som denne sårbarhed ikke gælder for, så er dette en falsk positiv
- CVE-uoverensstemmelse med den identificerede version af komponenten
- For eksempel er sårbarheden knyttet til python version > 3.5 og værktøjet markerer version 2.7 som sårbar - dette er en falsk positiv, da sårbarheden faktisk kun gælder for 3.x produktgrenen
- Duplikat CVE
- For eksempel, hvis SCA specificerer en CVE, der aktiverer en RCE, så specificerer SCA en CVE for den samme komponent, der gælder for Cisco-produkter, der er påvirket af den RCE. I dette tilfælde vil den være falsk positiv.
- For eksempel blev der fundet en CVE i en spring-web komponent, hvorefter SCA peger på den samme CVE i andre komponenter af Spring Framework, mens CVE'en ikke har noget at gøre med andre komponenter. I dette tilfælde vil den være falsk positiv.
Formålet med undersøgelsen var Open Source-projektet DVJA. Undersøgelsen involverede kun java-komponenter (uden js).
Sammenfattende resultater
Lad os gå direkte til resultaterne af en manuel gennemgang af identificerede sårbarheder. Den fulde rapport for hver CVE kan findes i appendiks.
Oversigtsresultater for alle sårbarheder:
Parameter
Nexus IQ
Afhængighedskontrol
Afhængighedsspor
Samlede sårbarheder identificeret
42
91
51
Forkert identificerede sårbarheder (falsk positiv)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Ingen relevante sårbarheder fundet (falsk negativ)
10
20
27
Opsummering af resultater efter komponent:
Parameter
Nexus IQ
Afhængighedskontrol
Afhængighedsspor
Samlede komponenter identificeret
62
47
59
Samlede sårbare komponenter
16
13
10
Forkert identificerede sårbare komponenter (falsk positiv)
1
5
0
Forkert identificerede sårbare komponenter (falsk positiv)
0
6
6
Lad os bygge visuelle grafer for at evaluere forholdet mellem falsk positive og falsk negative til det samlede antal sårbarheder. Komponenter er markeret vandret, og sårbarheder identificeret i dem er markeret lodret.
Til sammenligning blev en lignende undersøgelse udført af Sonatype-teamet, der testede et projekt med 1531 komponenter ved hjælp af OWASP Dependency Check. Som vi kan se, er forholdet mellem støj og korrekte svar sammenligneligt med vores resultater.
Kilde:
Lad os se på nogle CVE'er fra vores scanningsresultater for at forstå årsagen til disse resultater.
mere
№ 1
Lad os først se på nogle interessante punkter om Sonatype Nexus IQ.
Nexus IQ påpeger et problem med deserialisering med evnen til at udføre RCE i Spring Framework flere gange. 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. I første omgang ser det ud til, at der er duplikering af sårbarhed på tværs af flere CVE'er. For hvis man ser på CVE-2016-1000027 og CVE-2011-2894 i NVD-databasen, ser det ud til, at alt er indlysende
komponent
Sårbarhed
spring-web:3.0.5
CVE-2016-1000027
spring-context:3.0.5
CVE-2011-2894
fjederkerne:3.0.5
CVE-2011-2894
beskrivelse
beskrivelse
CVE-2011-2894 i sig selv er ret berømt. I rapporten RemoteInvocationSerializingExporter
i CVE-2011-2894 observeres sårbarheden i HttpInvokerServiceExporter
. Dette er, hvad Nexus IQ fortæller os:
Der er dog ikke noget lignende i NVD, hvorfor Dependency Check og Dependency Track hver modtager falsk negativ.
Også ud fra beskrivelsen af CVE-2011-2894 kan det forstås, at sårbarheden faktisk er til stede i både spring-context:3.0.5 og spring-core:3.0.5. Bekræftelse af dette kan findes i en artikel fra den person, der fandt denne sårbarhed.
№ 2
komponent
Sårbarhed
Outcome
stivere2-kerne:2.3.30
CVE-2016-4003
FALSK
Hvis vi studerer sårbarheden CVE-2016-4003, vil vi forstå, at den blev rettet i version 2.3.28, men Nexus IQ rapporterer det til os. Der er en note i beskrivelsen af sårbarheden:
Det vil sige, at sårbarheden kun eksisterer i forbindelse med en forældet version af JRE, som de besluttede at advare os om. Ikke desto mindre anser vi dette for falsk positivt, selvom det ikke er det værste.
Nr. 3
komponent
Sårbarhed
Outcome
xwork-core:2.3.30
CVE-2017-9804
TRUE
xwork-core:2.3.30
CVE-2017-7672
FALSK
Hvis vi ser på beskrivelserne af CVE-2017-9804 og CVE-2017-7672, vil vi forstå, at problemet er URLValidator class
, med CVE-2017-9804, der stammer fra CVE-2017-7672. Tilstedeværelsen af den anden sårbarhed bærer ikke nogen nyttig belastning udover det faktum, at dens sværhedsgrad er steget til Høj, så vi kan betragte det som unødvendig støj.
Samlet set blev der ikke fundet andre falske positiver for Nexus IQ.
№ 4
Der er flere ting, der får IQ til at skille sig ud fra andre løsninger.
komponent
Sårbarhed
Outcome
spring-web:3.0.5
CVE-2020-5398
TRUE
CVE i NVD angiver, at det kun gælder for versioner 5.2.x før 5.2.3, 5.1.x før 5.1.13 og versioner 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 sikkerhedsforskningsteam opdagede, at denne sårbarhed blev introduceret i version 3.0.2.RELEASE og ikke 5.0.x som angivet i vejledningen.
Dette efterfølges af en PoC for denne sårbarhed, som angiver, at den er til stede i version 3.0.5.
Falsk negativ sendes til Dependency Check og Dependency Track.
№ 5
Lad os se på falsk positiv for Dependency Check og Dependency Track.
Afhængighedstjek skiller sig ud ved, at det afspejler de CVE'er, der gælder for hele rammen i NVD for de komponenter, som disse CVE'er ikke gælder for. Dette vedrører CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, hvilket afhængighedstjek ” til struts-taglib:1.3.8 og struts-tiles-1.3.8. Disse komponenter har intet at gøre med det, der er beskrevet i CVE'en - anmodningsbehandling, sidevalidering og så videre. Dette skyldes, at det, som disse CVE'er og komponenter har til fælles, kun er rammerne, hvorfor Dependency Check betragtede det som en sårbarhed.
Den samme situation er med spring-tx:3.0.5, og en lignende situation med struts-core:1.3.8. For struts-core har Dependency Check og Dependency Track fundet en masse sårbarheder, der faktisk er anvendelige for struts2-core, som i det væsentlige er en separat ramme. I dette tilfælde forstod Nexus IQ billedet korrekt, og i de CVE'er, det udstedte, indikerede det, at struts-core havde nået slutningen af livet, og det var nødvendigt at flytte til struts2-core.
№ 6
I nogle situationer er det uretfærdigt at fortolke en åbenlys Dependency Check og Dependency Track fejl. Især CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, hvilken sporingskontrol og afhængighedskontrol tilskrevet spring-core:3.0.5 hører faktisk til spring-web:3.0.5. Samtidig blev nogle af disse CVE'er også fundet af Nexus IQ, men IQ identificerede dem korrekt til en anden komponent. Fordi disse sårbarheder ikke blev fundet i spring-core, kan det ikke argumenteres for, at de ikke er i rammen i princippet, og open source-værktøjer påpegede med rette disse sårbarheder (de savnede bare lidt).
Fund
Som vi kan se, giver bestemmelse af pålideligheden af identificerede sårbarheder ved manuel gennemgang ikke entydige resultater, hvorfor der opstår kontroversielle spørgsmål. Resultaterne er, at Nexus IQ-løsningen har den laveste falske positive rate og den højeste nøjagtighed.
Først og fremmest skyldes dette, at Sonatype-teamet udvidede beskrivelsen for hver CVE-sårbarhed fra NVD i sine databaser, hvilket angiver sårbarhederne for en bestemt version af komponenterne ned til klassen eller funktionen, og udførte yderligere forskning (f.eks. , kontrol af sårbarheder på ældre softwareversioner).
En vigtig indflydelse på resultaterne spilles også af de sårbarheder, der ikke var inkluderet i NVD, men som alligevel er til stede i Sonatype-databasen med SONATYPE-mærket. Ifølge rapporten
Som et resultat producerer Dependency Check en masse støj og mangler nogle sårbare komponenter. Dependency Track producerer mindre støj og registrerer et stort antal komponenter, hvilket ikke visuelt skader øjnene i webgrænsefladen.
Praksis viser dog, at open source bør blive de første skridt mod modne DevSecOps. Det første du bør tænke på, når du integrerer SCA i udvikling, er processer, nemlig at tænke sammen med ledelsen og relaterede afdelinger om, hvordan ideelle processer skal se ud i din organisation. Det kan vise sig, at for din organisation i første omgang vil Dependency Check eller Dependency Track dække alle forretningsbehov, og Enterprise-løsninger vil være en logisk fortsættelse på grund af den voksende kompleksitet af de applikationer, der udvikles.
Bilag A: Komponentresultater
Symboler:
- Højt-højt og kritisk niveau sårbarheder i komponenten
- Medium — Sårbarheder på medium kritikalitetsniveau i komponenten
- TRUE — Sandt positivt problem
- FALSK — Falsk positiv problemstilling
komponent
Nexus IQ
Afhængighedskontrol
Afhængighedsspor
Outcome
dom4j: 1.6.1
Høj
Høj
Høj
TRUE
log4j-kerne: 2.3
Høj
Høj
Høj
TRUE
log4j: 1.2.14
Høj
Høj
—
TRUE
fællessamlinger:3.1
Høj
Høj
Høj
TRUE
commons-fileupload:1.3.2
Høj
Høj
Høj
TRUE
commons-beanutils:1.7.0
Høj
Høj
Høj
TRUE
commons-codec:1:10
Medium
—
—
TRUE
mysql-connector-java:5.1.42
Høj
Høj
Høj
TRUE
fjederudtryk:3.0.5
Høj
komponent ikke fundet
TRUE
spring-web:3.0.5
Høj
komponent ikke fundet
Høj
TRUE
spring-context:3.0.5
Medium
komponent ikke fundet
—
TRUE
fjederkerne:3.0.5
Medium
Høj
Høj
TRUE
struts2-config-browser-plugin:2.3.30
Medium
—
—
TRUE
spring-tx:3.0.5
—
Høj
—
FALSK
stivere-kerne:1.3.8
Høj
Høj
Høj
TRUE
xwork-core: 2.3.30
Høj
—
—
TRUE
stivere2-kerne: 2.3.30
Høj
Høj
Høj
TRUE
struts-taglib:1.3.8
—
Høj
—
FALSK
stivere-fliser-1.3.8
—
Høj
—
FALSK
Bilag B: Sårbarhedsresultater
Symboler:
- Højt-højt og kritisk niveau sårbarheder i komponenten
- Medium — Sårbarheder på medium kritikalitetsniveau i komponenten
- TRUE — Sandt positivt problem
- FALSK — Falsk positiv problemstilling
komponent
Nexus IQ
Afhængighedskontrol
Afhængighedsspor
Severity
Outcome
Kommentar
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
Høj
TRUE
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
Høj
TRUE
log4j-kerne: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
Høj
TRUE
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
Lav
TRUE
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
—
Høj
TRUE
—
CVE-2020-9488
—
Lav
TRUE
SONATYPE-2010-0053
—
—
Høj
TRUE
fællessamlinger:3.1
—
CVE-2015-6420
CVE-2015-6420
Høj
FALSK
Dubletter RCE(OSSINDEX)
—
CVE-2017-15708
CVE-2017-15708
Høj
FALSK
Dubletter RCE(OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
Høj
TRUE
commons-fileupload:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
Høj
TRUE
SONATYPE-2014-0173
—
—
Medium
TRUE
commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
Høj
TRUE
—
CVE-2019-10086
CVE-2019-10086
Høj
FALSK
Sårbarheden gælder kun for version 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øj
TRUE
CVE-2019-2692
CVE-2019-2692
—
Medium
TRUE
—
CVE-2020-2875
—
Medium
FALSK
Samme sårbarhed som CVE-2019-2692, men med bemærkningen "angreb kan påvirke yderligere produkter betydeligt"
—
CVE-2017-15945
—
Høj
FALSK
Ikke relevant for mysql-connector-java
—
CVE-2020-2933
—
Lav
FALSK
Duplikat af CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
—
Medium
TRUE
fjederudtryk:3.0.5
CVE-2018-1270
komponent ikke fundet
—
Høj
TRUE
CVE-2018-1257
—
—
Medium
TRUE
spring-web:3.0.5
CVE-2016-1000027
komponent ikke fundet
—
Høj
TRUE
CVE-2014-0225
—
CVE-2014-0225
Høj
TRUE
CVE-2011-2730
—
—
Høj
TRUE
—
—
CVE-2013-4152
Medium
TRUE
CVE-2018-1272
—
—
Høj
TRUE
CVE-2020-5398
—
—
Høj
TRUE
Et illustrativt eksempel til fordel for IQ: "Sonatypes sikkerhedsforskningsteam opdagede, at denne sårbarhed blev introduceret i version 3.0.2.RELEASE og ikke 5.0.x som angivet i vejledningen."
CVE-2013-6429
—
—
Medium
TRUE
CVE-2014-0054
—
CVE-2014-0054
Medium
TRUE
CVE-2013-6430
—
—
Medium
TRUE
spring-context:3.0.5
CVE-2011-2894
komponent ikke fundet
—
Medium
TRUE
fjederkerne:3.0.5
—
CVE-2011-2730
CVE-2011-2730
Høj
TRUE
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Medium
TRUE
—
—
CVE-2013-4152
Medium
FALSK
Duplikat af samme sårbarhed i spring-web
—
CVE-2013-4152
—
Medium
FALSK
Sårbarheden relaterer sig til spring-web-komponenten
—
CVE-2013-6429
CVE-2013-6429
Medium
FALSK
Sårbarheden relaterer sig til spring-web-komponenten
—
CVE-2013-6430
—
Medium
FALSK
Sårbarheden relaterer sig til spring-web-komponenten
—
CVE-2013-7315
CVE-2013-7315
Medium
FALSK
SPLIT fra CVE-2013-4152. + Sårbarheden relaterer sig til spring-web-komponenten
—
CVE-2014-0054
CVE-2014-0054
Medium
FALSK
Sårbarheden relaterer sig til spring-web-komponenten
—
CVE-2014-0225
—
Høj
FALSK
Sårbarheden relaterer sig til spring-web-komponenten
—
—
CVE-2014-0225
Høj
FALSK
Duplikat af samme sårbarhed i spring-web
—
CVE-2014-1904
CVE-2014-1904
Medium
FALSK
Sårbarheden relaterer sig til spring-web-mvc-komponenten
—
CVE-2014-3625
CVE-2014-3625
Medium
FALSK
Sårbarheden relaterer sig til spring-web-mvc-komponenten
—
CVE-2016-9878
CVE-2016-9878
Høj
FALSK
Sårbarheden relaterer sig til spring-web-mvc-komponenten
—
CVE-2018-1270
CVE-2018-1270
Høj
FALSK
Til spring-udtryk/forår-beskeder
—
CVE-2018-1271
CVE-2018-1271
Medium
FALSK
Sårbarheden relaterer sig til spring-web-mvc-komponenten
—
CVE-2018-1272
CVE-2018-1272
Høj
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øj
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2011-2894
—
Høj
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2013-4152
—
Medium
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2013-6429
—
Medium
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2013-6430
—
Medium
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2013-7315
—
Medium
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2014-0054
—
Medium
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2014-0225
—
Høj
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2014-1904
—
Medium
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2014-3625
—
Medium
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2016-9878
—
Høj
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2018-1270
—
Høj
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2018-1271
—
Medium
FALSK
Sårbarheden er ikke specifik for spring-tx
—
CVE-2018-1272
—
Medium
FALSK
Sårbarheden er ikke specifik for spring-tx
stivere-kerne:1.3.8
—
CVE-2011-5057 (OSSINDEX)
Medium
FASLE
Sårbarhed over for stivere 2
—
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
Høj
FALSK
Sårbarhed over for stivere 2
—
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
Medium
FALSK
Sårbarhed over for stivere 2
—
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
Høj
FALSK
Sårbarhed over for stivere 2
CVE-2016-1182
3VE-2016-1182
—
Høj
TRUE
—
—
CVE-2011-5057
Medium
FALSK
Sårbarhed over for stivere 2
—
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
Høj
FALSK
Sårbarhed over for stivere 2
—
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
Medium
FALSK
Sårbarhed over for stivere 2
CVE-2015-0899
CVE-2015-0899
—
Høj
TRUE
—
CVE-2012-0394
CVE-2012-0394
Medium
FALSK
Sårbarhed over for stivere 2
—
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
Høj
FALSK
Sårbarhed over for stivere 2
—
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
Høj
FALSK
Sårbarhed over for stivere 2
—
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
Høj
FASLE
Sårbarhed over for stivere 2
—
CVE-2013-2115
CVE-2013-2115
Høj
FASLE
Sårbarhed over for stivere 2
—
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
Høj
FASLE
Sårbarhed over for stivere 2
—
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
Høj
FASLE
Sårbarhed over for stivere 2
CVE-2014-0114
CVE-2014-0114
—
Høj
TRUE
—
CVE-2015-2992
CVE-2015-2992
Medium
FALSK
Sårbarhed over for stivere 2
—
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
Høj
FALSK
Sårbarhed over for stivere 2
CVE-2016-1181
CVE-2016-1181
—
Høj
TRUE
—
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
Høj
FALSK
Sårbarhed over for stivere 2
xwork-core:2.3.30
CVE-2017-9804
—
—
Høj
TRUE
SONATYPE-2017-0173
—
—
Høj
TRUE
CVE-2017-7672
—
—
Høj
FALSK
Duplikat af CVE-2017-9804
SONATYPE-2016-0127
—
—
Høj
TRUE
stivere2-kerne:2.3.30
—
CVE-2016-6795
CVE-2016-6795
Høj
TRUE
—
CVE-2017-9787
CVE-2017-9787
Høj
TRUE
—
CVE-2017-9791
CVE-2017-9791
Høj
TRUE
—
CVE-2017-9793
—
Høj
FALSK
Duplikat af CVE-2018-1327
—
CVE-2017-9804
—
Høj
TRUE
—
CVE-2017-9805
CVE-2017-9805
Høj
TRUE
CVE-2016-4003
—
—
Medium
FALSK
Gælder for Apache Struts 2.x op til 2.3.28, hvilket er version 2.3.30. Baseret på beskrivelsen er CVE dog gyldig for enhver version af Struts 2, hvis JRE 1.7 eller mindre bruges. Tilsyneladende besluttede de at genforsikre os her, men det ligner mere FALSK
—
CVE-2018-1327
CVE-2018-1327
Høj
TRUE
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
Høj
TRUE
Den samme sårbarhed, som Equifax-hackere udnyttede i 2017
CVE-2017-12611
CVE-2017-12611
—
Høj
TRUE
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
Høj
TRUE
struts-taglib:1.3.8
—
CVE-2012-0394
—
Medium
FALSK
Til stivere 2-kerne
—
CVE-2013-2115
—
Høj
FALSK
Til stivere 2-kerne
—
CVE-2014-0114
—
Høj
FALSK
Til commons-beanutils
—
CVE-2015-0899
—
Høj
FALSK
Gælder ikke taglib
—
CVE-2015-2992
—
Medium
FALSK
Henviser til stivere2-kerne
—
CVE-2016-1181
—
Høj
FALSK
Gælder ikke taglib
—
CVE-2016-1182
—
Høj
FALSK
Gælder ikke taglib
stivere-fliser-1.3.8
—
CVE-2012-0394
—
Medium
FALSK
Til stivere 2-kerne
—
CVE-2013-2115
—
Høj
FALSK
Til stivere 2-kerne
—
CVE-2014-0114
—
Høj
FALSK
Under commons-beanutils
—
CVE-2015-0899
—
Høj
FALSK
Gælder ikke fliser
—
CVE-2015-2992
—
Medium
FALSK
Til stivere 2-kerne
—
CVE-2016-1181
—
Høj
FALSK
Gælder ikke taglib
—
CVE-2016-1182
—
Høj
FALSK
Gælder ikke taglib
Kilde: www.habr.com