La importància de l'anàlisi de components de programari de tercers (Software Composition Analysis - SCA) en el procés de desenvolupament està creixent amb la publicació d'informes anuals sobre les vulnerabilitats de les biblioteques de codi obert, que són publicats per Synopsys, Sonatype, Snyk i White Source. . Segons l'informe
Un dels casos més il·lustratius
Aquest article tractarà la qüestió de l'elecció d'una eina per a la realització de l'SCA des del punt de vista de la qualitat dels resultats de l'anàlisi. També es farà una comparació funcional de les eines. El procés d'integració en CI/CD i les capacitats d'integració es deixarà per a publicacions posteriors. OWASP va presentar una àmplia gamma d'eines
Com funciona?
Vegem com és el CPE:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- part: Indicació que el component es relaciona amb l'aplicació (a), el sistema operatiu (o), el maquinari (h) (obligatori)
- Venedor: Nom del fabricant del producte (obligatori)
- producte: Nom del producte (obligatori)
- Versió: Versió del component (element obsolet)
- Actualització: Actualització del paquet
- edició: Versió heretada (element obsolet)
- Idioma: Llenguatge definit a RFC-5646
- Edició SW: Versió de programari
- SW objectiu: Entorn de programari en el qual opera el producte
- HW objectiu: L'entorn de maquinari en què opera el producte
- altres: Informació del proveïdor o del producte
Un exemple de CPE és el següent:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
La línia significa que la versió 2.3 de CPE descriu el component de l'aplicació del fabricant pivotal_software
amb el títol spring_framework
versió 3.0.0. Si obrim una vulnerabilitat
L'URL també l'utilitzen les eines SCA. El format d'URL del paquet és el següent:
scheme:type/namespace/name@version?qualifiers#subpath
- Esquema: Sempre hi haurà "pkg" que indica que es tracta d'un URL de paquet (obligatori)
- tipus: El "tipus" del paquet o el "protocol" del paquet, com ara maven, npm, nuget, gem, pypi, etc. (Article obligatori)
- Espai de noms: Alguns prefixos de nom, com ara un identificador de grup Maven, propietari d'una imatge Docker, usuari de GitHub o organització. Opcional i depèn del tipus.
- Nom: Nom del paquet (obligatori)
- Versió: Versió del paquet
- Qualificadors: Dades addicionals de qualificació per al paquet, com ara SO, arquitectura, distribució, etc. Opcional i específic del tipus.
- Subruta: Camí addicional al paquet en relació a l'arrel del paquet
Per exemple:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
Un exemple de com podria semblar una LDM en format 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>
La BOM es pot utilitzar no només com a paràmetres d'entrada per al seguiment de dependències, sinó també per inventariar components de programari a la cadena de subministrament, per exemple, per proporcionar programari a un client. El 2014, fins i tot es va proposar una llei als Estats Units
Tornant a SCA, Dependency Track té integracions ja fetes amb plataformes de notificació com Slack, sistemes de gestió de vulnerabilitats com Kenna Security. També val la pena dir que Dependency Track, entre altres coses, identifica versions obsoletes dels paquets i proporciona informació sobre les llicències (a causa del suport SPDX).
Si parlem específicament de la qualitat de SCA, aleshores hi ha una diferència fonamental.
Dependency Track no accepta el projecte com a entrada, sinó la BOM. Això vol dir que si volem provar el projecte, primer hem de generar bom.xml, per exemple utilitzant CycloneDX. Per tant, Dependency Track depèn directament de CycloneDX. Al mateix temps, permet la personalització. Això és el que va escriure l'equip d'OZON
Resumim algunes de les característiques funcionals i també considerem els idiomes compatibles per a l'anàlisi:
Idioma
Nexus IQ
Control de dependència
Pista de dependència
Java
+
+
+
C / C ++
+
+
-
C#
+
+
-
.Net
+
+
+
Erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Pitó
+
+
+
Ruby
+
+
+
Perl
-
-
-
Scala
+
+
+
Objective C
+
+
-
Ràpid
+
+
-
R
+
-
-
Go
+
+
+
Funcionalitat
Funcionalitat
Nexus IQ
Control de dependència
Pista de dependència
La capacitat de garantir que els components utilitzats en el codi font es comproven per a la puresa amb llicència
+
-
+
Capacitat d'escanejar i analitzar les vulnerabilitats i la neteja de la llicència per a les imatges de Docker
+ Integració amb Clair
-
-
Capacitat de configurar polítiques de seguretat per utilitzar biblioteques de codi obert
+
-
-
Capacitat d'escanejar repositoris de codi obert per a components vulnerables
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Disponibilitat d'un grup de recerca especialitzat
+
-
-
Funcionament en llaç tancat
+
+
+
Ús de bases de dades de tercers
+ Base de dades Sonatype tancada
+ Sonatype OSS, NPM Public Advisors
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, suport per a la seva pròpia base de dades de vulnerabilitats
Possibilitat de filtrar components de codi obert quan s'intenta carregar al bucle de desenvolupament segons les polítiques configurades
+
-
-
Recomanacions per solucionar vulnerabilitats, disponibilitat d'enllaços a solucions
+
+- (depèn de la descripció a les bases de dades públiques)
+- (depèn de la descripció a les bases de dades públiques)
Classificació de vulnerabilitats detectades per gravetat
+
+
+
Model d'accés basat en rols
+
-
+
Suport CLI
+
+
+- (només per a CycloneDX)
Mostreig/ordenació de vulnerabilitats segons criteris definits
+
-
+
Tauler per estat de l'aplicació
+
-
+
Generació d'informes en format PDF
+
-
-
Generació d'informes en format JSONCSV
+
+
-
Suport a la llengua russa
-
-
-
Capacitats d'integració
Integració
Nexus IQ
Control de dependència
Pista de dependència
Integració LDAP/Active Directory
+
-
+
Integració amb el sistema d'integració contínua Bamboo
+
-
-
Integració amb el sistema d'integració contínua TeamCity
+
-
-
Integració amb el sistema d'integració contínua GitLab
+
+- (com a connector per a GitLab)
+
Integració amb el sistema d'integració contínua Jenkins
+
+
+
Disponibilitat de connectors per a IDE
+ IntelliJ, Eclipse, Visual Studio
-
-
Suport per a la integració personalitzada mitjançant serveis web (API) de l'eina
+
-
+
Control de dependència
Primer inici
Executem la comprovació de dependència en una aplicació deliberadament vulnerable
Per a això farem servir
mvn org.owasp:dependency-check-maven:check
Com a resultat, dependència-check-report.html apareixerà al directori de destinació.
Obrim el fitxer. Després d'informació resumida sobre el nombre total de vulnerabilitats, podem veure informació sobre vulnerabilitats amb un alt nivell de gravetat i confiança, indicant el paquet, el CPE i el nombre de CVE.
A continuació ve la informació més detallada, en particular la base sobre la qual es va prendre la decisió (evidència), és a dir, una determinada BOM.
A continuació ve la descripció de CPE, PURL i CVE. Per cert, les recomanacions de correcció no s'inclouen a causa de la seva absència a la base de dades NVD.
Per veure sistemàticament els resultats de l'escaneig, podeu configurar Nginx amb una configuració mínima o enviar els defectes resultants a un sistema de gestió de defectes que admeti connectors per a la comprovació de dependències. Per exemple, Defect Dojo.
Pista de dependència
Instal · lació
Dependency Track, al seu torn, és una plataforma basada en web amb gràfics de visualització, de manera que el problema urgent d'emmagatzemar els defectes en una solució de tercers no sorgeix aquí.
Els scripts admesos per a la instal·lació són: Docker, WAR, Executable WAR.
Primer inici
Anem a l'URL del servei en execució. Iniciem sessió a través d'administrador/administrador, canviem l'inici de sessió i la contrasenya i després arribem al tauler. El següent que farem és crear un projecte per a una aplicació de prova en Java Inici/Projectes → Crea un projecte . Prenguem el DVJA com a exemple.
Com que el seguiment de dependències només pot acceptar BOM com a entrada, s'ha de recuperar aquesta BOM. Aprofitem-ho
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Obtenim bom.xml i carreguem el fitxer al projecte creat DVJA → Dependències → Carrega BOM.
Anem a Administració → Analitzadors. Entenem que només tenim l'Analitzador intern habilitat, que inclou NVD. Connectem també Sonatype OSS Index.
Així, obtenim la següent imatge del nostre projecte:
També a la llista podeu trobar una vulnerabilitat aplicable a Sonatype OSS:
La principal decepció va ser que Dependency Track ja no accepta informes XML de Dependency Check. Les últimes versions compatibles de la integració de comprovació de dependències eren 1.0.0 - 4.0.2, mentre que vaig provar la 5.3.2.
aquí està
Nexus IQ
Primer inici
La instal·lació de Nexus IQ prové dels arxius de
Després d'iniciar sessió a la consola, heu de crear una organització i una aplicació.
Com podeu veure, la configuració en el cas d'IQ és una mica més complicada, perquè també hem de crear polítiques que siguin aplicables per a diferents "etapes" (dev, build, stage, release). Això és necessari per bloquejar els components vulnerables a mesura que es mouen pel canal més a prop de la producció o bloquejar-los tan bon punt entren al Repositori de Nexus quan els descarreguen els desenvolupadors.
Per notar la diferència entre el codi obert i l'empresa, realitzem la mateixa exploració a través de Nexus IQ de la mateixa manera 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>
Seguiu l'URL de l'informe generat a la interfície web d'IQ:
Aquí podeu veure totes les infraccions de les polítiques que indiquen diferents nivells d'importància (des d'Informació fins a Crítics de seguretat). La lletra D al costat del component significa que el component és Dependència directa, i la lletra T al costat del component significa que el component és Dependència Transitiva, és a dir, és transitiu.
Per cert, l'informe
Si obrim una de les infraccions de la política de Nexus IQ, podem veure una descripció del component, així com un gràfic de versions, que mostra la ubicació de la versió actual al gràfic de temps, així com en quin moment deixa de ser la vulnerabilitat. ser vulnerable. L'alçada de les espelmes al gràfic mostra la popularitat d'utilitzar aquest component.
Si aneu a la secció de vulnerabilitats i amplieu el CVE, podeu llegir una descripció d'aquesta vulnerabilitat, recomanacions per a l'eliminació, així com el motiu pel qual es va violar aquest component, és a dir, la presència de la classe. DiskFileitem.class
.
Resumim només els relacionats amb components Java de tercers, eliminant els components js. Entre parèntesis indiquem el nombre de vulnerabilitats que es van trobar fora de NVD.
Total Nexus IQ:
- Dependències escanejades: 62
- Dependències vulnerables: 16
- Vulnerabilitats trobades: 42 (8 sonatype db)
Comprovació de dependència total:
- Dependències escanejades: 47
- Dependències vulnerables: 13
- Vulnerabilitats trobades: 91 (14 sonatype oss)
Seguiment de dependència total:
- Dependències escanejades: 59
- Dependències vulnerables: 10
- Vulnerabilitats trobades: 51 (1 sonatype oss)
En els propers passos, analitzarem els resultats obtinguts i esbrinarem quina d'aquestes vulnerabilitats és un defecte real i quina és un fals positiu.
Exempció de responsabilitat
Aquesta ressenya no és una veritat indiscutible. L'autor no tenia com a objectiu ressaltar un instrument separat amb el rerefons dels altres. L'objectiu de la revisió era mostrar els mecanismes de funcionament de les eines SCA i les maneres de comprovar-ne els resultats.
Comparació de resultats
Condicions:
Un fals positiu per a vulnerabilitats de components de tercers és:
- Desajust CVE amb el component identificat
- Per exemple, si s'identifica una vulnerabilitat al marc struts2 i l'eina apunta a un component del marc struts-tiles, al qual aquesta vulnerabilitat no s'aplica, aquest és un fals positiu.
- CVE no coincideix amb la versió identificada del component
- Per exemple, la vulnerabilitat està lligada a la versió de Python > 3.5 i l'eina marca la versió 2.7 com a vulnerable; això és un fals positiu, ja que de fet la vulnerabilitat només s'aplica a la branca del producte 3.x.
- CVE duplicat
- Per exemple, si l'SCA especifica un CVE que habilita un RCE, llavors l'SCA especifica un CVE per al mateix component que s'aplica als productes de Cisco afectats per aquest RCE. En aquest cas serà fals positiu.
- Per exemple, es va trobar un CVE en un component spring-web, després del qual SCA apunta al mateix CVE en altres components del Spring Framework, mentre que el CVE no té res a veure amb altres components. En aquest cas serà fals positiu.
L'objecte de l'estudi va ser el projecte de codi obert DVJA. L'estudi va incloure només components java (sense js).
Resum de resultats
Anem directament als resultats d'una revisió manual de les vulnerabilitats identificades. L'informe complet de cada CVE es pot trobar a l'Annex.
Resultats resums per a totes les vulnerabilitats:
Paràmetre
Nexus IQ
Control de dependència
Pista de dependència
Total de vulnerabilitats identificades
42
91
51
Vulnerabilitats identificades incorrectament (fals positiu)
2 (4.76%)
62 (68,13%)
29 (56.86%)
No s'han trobat vulnerabilitats rellevants (fals negatiu)
10
20
27
Resum de resultats per component:
Paràmetre
Nexus IQ
Control de dependència
Pista de dependència
Components totals identificats
62
47
59
Total components vulnerables
16
13
10
Components vulnerables identificats incorrectament (fals positiu)
1
5
0
Components vulnerables identificats incorrectament (fals positiu)
0
6
6
Construïm gràfics visuals per avaluar la proporció de falsos positius i falsos negatius amb el nombre total de vulnerabilitats. Els components es marquen horitzontalment i les vulnerabilitats identificades en ells es marquen verticalment.
Per a una comparació, l'equip de Sonatype va realitzar un estudi similar provant un projecte de 1531 components mitjançant OWASP Dependency Check. Com podem veure, la relació entre el soroll i les respostes correctes és comparable als nostres resultats.
Font:
Vegem alguns CVE dels nostres resultats d'escaneig per entendre el motiu d'aquests resultats.
més
№ 1
Vegem primer alguns punts interessants sobre el Sonatype Nexus IQ.
Nexus IQ assenyala un problema amb la deserialització amb la capacitat de realitzar RCE al Spring Framework diverses vegades. CVE-2016-1000027 a spring-web:3.0.5 per primera vegada i CVE-2011-2894 a spring-context:3.0.5 i spring-core:3.0.5. Al principi, sembla que hi ha una duplicació de la vulnerabilitat en diversos CVE. Perquè, si mireu CVE-2016-1000027 i CVE-2011-2894 a la base de dades NVD, sembla que tot és evident.
Component
Vulnerabilitat
primavera-web: 3.0.5
CVE-2016-1000027
primavera-context: 3.0.5
CVE-2011-2894
nucli de molla: 3.0.5
CVE-2011-2894
Descripció
Descripció
CVE-2011-2894 és bastant famós. A l'informe RemoteInvocationSerializingExporter
a CVE-2011-2894, la vulnerabilitat s'observa a HttpInvokerServiceExporter
. Això és el que ens diu Nexus IQ:
Tanmateix, no hi ha res semblant a això a NVD, i és per això que Dependency Check i Dependency Track reben un fals negatiu.
També a partir de la descripció de CVE-2011-2894 es pot entendre que la vulnerabilitat està efectivament present tant a spring-context:3.0.5 com a spring-core:3.0.5. La confirmació d'això es pot trobar en un article de la persona que va trobar aquesta vulnerabilitat.
№ 2
Component
Vulnerabilitat
Resultat
puntals de 2 nuclis: 2.3.30
CVE-2016-4003
FALS
Si estudiem la vulnerabilitat CVE-2016-4003, entendrem que es va solucionar a la versió 2.3.28, però, Nexus IQ ens ho informa. Hi ha una nota a la descripció de la vulnerabilitat:
És a dir, la vulnerabilitat només existeix juntament amb una versió obsoleta del JRE, de la qual van decidir advertir-nos. No obstant això, considerem aquest Fals Positiu, encara que no el pitjor.
# 3
Component
Vulnerabilitat
Resultat
xwork-core: 2.3.30
CVE-2017-9804
VERITABLE
xwork-core: 2.3.30
CVE-2017-7672
FALS
Si mirem les descripcions de CVE-2017-9804 i CVE-2017-7672, entendrem que el problema és URLValidator class
, amb CVE-2017-9804 derivat de CVE-2017-7672. La presència de la segona vulnerabilitat no comporta cap càrrega útil que no sigui el fet que la seva gravetat ha augmentat fins a Alt, per la qual cosa podem considerar que és un soroll innecessari.
En general, no es van trobar altres falsos positius per a Nexus IQ.
№ 4
Hi ha diverses coses que fan que IQ es distingeixi d'altres solucions.
Component
Vulnerabilitat
Resultat
primavera-web: 3.0.5
CVE-2020-5398
VERITABLE
El CVE de l'NVD indica que només s'aplica a les versions 5.2.x anteriors a 5.2.3, 5.1.x anteriors a 5.1.13 i versions 5.0.x anteriors a 5.0.16, però, si mirem la descripció de CVE a Nexus IQ , llavors veurem el següent:
Avís de desviació d'assessorament: l'equip d'investigació de seguretat de Sonatype va descobrir que aquesta vulnerabilitat es va introduir a la versió 3.0.2.RELEASE i no a la 5.0.x tal com s'indica a l'avís.
A continuació hi ha un PoC per a aquesta vulnerabilitat, que indica que està present a la versió 3.0.5.
El fals negatiu s'envia a la comprovació de dependències i al seguiment de dependències.
№ 5
Vegem els falsos positius per a la comprovació de dependència i el seguiment de dependències.
Dependency Check destaca perquè reflecteix aquells CVE que s'apliquen a tot el marc de NVD a aquells components als quals no s'apliquen aquests CVE. Això es refereix a CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, que depèn ” a struts-taglib:1.3.8 i struts-tiles-1.3.8. Aquests components no tenen res a veure amb el que es descriu al CVE: processament de sol·licituds, validació de pàgines, etc. Això es deu al fet que el que tenen en comú aquests CVE i components és només el framework, per això Dependency Check ho va considerar una vulnerabilitat.
La mateixa situació passa amb spring-tx:3.0.5, i una situació similar amb struts-core:1.3.8. Per a struts-core, Dependency Check i Dependency Track han trobat moltes vulnerabilitats que són realment aplicables a struts2-core, que és essencialment un marc separat. En aquest cas, Nexus IQ va entendre correctament la imatge i en els CVE que va emetre, indicava que struts-core havia arribat al final de la vida útil i calia passar a struts2-core.
№ 6
En algunes situacions, és injust interpretar un error evident de comprovació de dependència i seguiment de dependència. En particular CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, comprovació de seguiment de dependència i quina dependència atribuït a spring-core:3.0.5 en realitat pertany a spring-web:3.0.5. Al mateix temps, alguns d'aquests CVE també van ser trobats per Nexus IQ, però, IQ els va identificar correctament amb un altre component. Com que aquestes vulnerabilitats no es van trobar a spring-core, no es pot argumentar que no es troben en el marc en principi i les eines de codi obert van assenyalar correctament aquestes vulnerabilitats (s'han perdut una mica).
Troballes
Com podem veure, la determinació de la fiabilitat de les vulnerabilitats identificades mitjançant una revisió manual no dóna resultats inequívocs, motiu pel qual sorgeixen qüestions controvertides. Els resultats són que la solució Nexus IQ té la taxa de falsos positius més baixa i la precisió més alta.
En primer lloc, això es deu al fet que l'equip de Sonatype va ampliar la descripció de cada vulnerabilitat CVE de NVD a les seves bases de dades, indicant les vulnerabilitats d'una versió concreta dels components fins a la classe o funció, realitzant investigacions addicionals (per exemple , comprovant les vulnerabilitats en versions de programari anteriors).
També tenen una influència important en els resultats aquelles vulnerabilitats que no estaven incloses a NVD, però que tanmateix estan presents a la base de dades Sonatype amb la marca SONATYPE. Segons l'informe
Com a resultat, la comprovació de dependència produeix molt de soroll, mancant alguns components vulnerables. Dependency Track produeix menys soroll i detecta un gran nombre de components, cosa que no fa mal visualment als ulls a la interfície web.
Tanmateix, la pràctica demostra que el codi obert hauria de convertir-se en els primers passos cap a DevSecOps madurs. El primer que hauríeu de pensar quan integreu SCA al desenvolupament són els processos, és a dir, pensar juntament amb la direcció i els departaments relacionats sobre com haurien de ser els processos ideals a la vostra organització. Pot resultar que per a la vostra organització, al principi, Dependency Check o Dependency Track cobrirà totes les necessitats empresarials, i les solucions empresarials seran una continuació lògica a causa de la creixent complexitat de les aplicacions que s'estan desenvolupant.
Apèndix A: Resultats dels components
Símbols:
- Alta: vulnerabilitats de nivell alt i crític en el component
- Mitjà — Vulnerabilitats de nivell de criticitat mitjà en el component
- TRUE — Veritable problema positiu
- FALSE: problema fals positiu
Component
Nexus IQ
Control de dependència
Pista de dependència
Resultat
dom4j: 1.6.1
alt
alt
alt
VERITABLE
log4j-core: 2.3
alt
alt
alt
VERITABLE
log4j: 1.2.14
alt
alt
-
VERITABLE
col·leccions comuns:3.1
alt
alt
alt
VERITABLE
càrrega de fitxers comuns: 1.3.2
alt
alt
alt
VERITABLE
commons-beanutils:1.7.0
alt
alt
alt
VERITABLE
commons-codec: 1:10
mitjà
-
-
VERITABLE
mysql-connector-java:5.1.42
alt
alt
alt
VERITABLE
Spring-expression: 3.0.5
alt
component no trobat
VERITABLE
primavera-web: 3.0.5
alt
component no trobat
alt
VERITABLE
primavera-context: 3.0.5
mitjà
component no trobat
-
VERITABLE
nucli de molla: 3.0.5
mitjà
alt
alt
VERITABLE
struts2-config-browser-plugin:2.3.30
mitjà
-
-
VERITABLE
spring-tx:3.0.5
-
alt
-
FALS
nucli de puntals: 1.3.8
alt
alt
alt
VERITABLE
xwork-core: 2.3.30
alt
-
-
VERITABLE
struts2-core: 2.3.30
alt
alt
alt
VERITABLE
struts-taglib:1.3.8
-
alt
-
FALS
puntals-rajoles-1.3.8
-
alt
-
FALS
Apèndix B: Resultats de vulnerabilitat
Símbols:
- Alta: vulnerabilitats de nivell alt i crític en el component
- Mitjà — Vulnerabilitats de nivell de criticitat mitjà en el component
- TRUE — Veritable problema positiu
- FALSE: problema fals positiu
Component
Nexus IQ
Control de dependència
Pista de dependència
Gravetat
Resultat
Comentari
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
alt
VERITABLE
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
alt
VERITABLE
log4j-core: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
alt
VERITABLE
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
Sota
VERITABLE
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
alt
VERITABLE
-
CVE-2020-9488
-
Sota
VERITABLE
SONATYPE-2010-0053
-
-
alt
VERITABLE
col·leccions comuns:3.1
-
CVE-2015-6420
CVE-2015-6420
alt
FALS
Duplicats RCE(OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
alt
FALS
Duplicats RCE(OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
alt
VERITABLE
càrrega de fitxers comuns: 1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
alt
VERITABLE
SONATYPE-2014-0173
-
-
mitjà
VERITABLE
commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
alt
VERITABLE
-
CVE-2019-10086
CVE-2019-10086
alt
FALS
La vulnerabilitat només s'aplica a les versions 1.9.2+
commons-codec: 1:10
SONATYPE-2012-0050
-
-
mitjà
VERITABLE
mysql-connector-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
alt
VERITABLE
CVE-2019-2692
CVE-2019-2692
-
mitjà
VERITABLE
-
CVE-2020-2875
-
mitjà
FALS
La mateixa vulnerabilitat que CVE-2019-2692, però amb la nota "els atacs poden afectar significativament productes addicionals"
-
CVE-2017-15945
-
alt
FALS
No és rellevant per a mysql-connector-java
-
CVE-2020-2933
-
Sota
FALS
Duplicat de CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
mitjà
VERITABLE
Spring-expression: 3.0.5
CVE-2018-1270
component no trobat
-
alt
VERITABLE
CVE-2018-1257
-
-
mitjà
VERITABLE
primavera-web: 3.0.5
CVE-2016-1000027
component no trobat
-
alt
VERITABLE
CVE-2014-0225
-
CVE-2014-0225
alt
VERITABLE
CVE-2011-2730
-
-
alt
VERITABLE
-
-
CVE-2013-4152
mitjà
VERITABLE
CVE-2018-1272
-
-
alt
VERITABLE
CVE-2020-5398
-
-
alt
VERITABLE
Un exemple il·lustratiu a favor d'IQ: "L'equip d'investigació de seguretat de Sonatype va descobrir que aquesta vulnerabilitat es va introduir a la versió 3.0.2.RELEASE i no a la 5.0.x com s'indica a l'avís".
CVE-2013-6429
-
-
mitjà
VERITABLE
CVE-2014-0054
-
CVE-2014-0054
mitjà
VERITABLE
CVE-2013-6430
-
-
mitjà
VERITABLE
primavera-context: 3.0.5
CVE-2011-2894
component no trobat
-
mitjà
VERITABLE
nucli de molla: 3.0.5
-
CVE-2011-2730
CVE-2011-2730
alt
VERITABLE
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
mitjà
VERITABLE
-
-
CVE-2013-4152
mitjà
FALS
Duplicat de la mateixa vulnerabilitat a spring-web
-
CVE-2013-4152
-
mitjà
FALS
La vulnerabilitat es relaciona amb el component spring-web
-
CVE-2013-6429
CVE-2013-6429
mitjà
FALS
La vulnerabilitat es relaciona amb el component spring-web
-
CVE-2013-6430
-
mitjà
FALS
La vulnerabilitat es relaciona amb el component spring-web
-
CVE-2013-7315
CVE-2013-7315
mitjà
FALS
SPLIT de CVE-2013-4152. + La vulnerabilitat es relaciona amb el component spring-web
-
CVE-2014-0054
CVE-2014-0054
mitjà
FALS
La vulnerabilitat es relaciona amb el component spring-web
-
CVE-2014-0225
-
alt
FALS
La vulnerabilitat es relaciona amb el component spring-web
-
-
CVE-2014-0225
alt
FALS
Duplicat de la mateixa vulnerabilitat a spring-web
-
CVE-2014-1904
CVE-2014-1904
mitjà
FALS
La vulnerabilitat es relaciona amb el component spring-web-mvc
-
CVE-2014-3625
CVE-2014-3625
mitjà
FALS
La vulnerabilitat es relaciona amb el component spring-web-mvc
-
CVE-2016-9878
CVE-2016-9878
alt
FALS
La vulnerabilitat es relaciona amb el component spring-web-mvc
-
CVE-2018-1270
CVE-2018-1270
alt
FALS
Per a missatges d'expressió primavera/primavera
-
CVE-2018-1271
CVE-2018-1271
mitjà
FALS
La vulnerabilitat es relaciona amb el component spring-web-mvc
-
CVE-2018-1272
CVE-2018-1272
alt
VERITABLE
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
mitjà
VERITABLE
SONATYPE-2015-0327
-
-
Sota
VERITABLE
struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
mitjà
VERITABLE
spring-tx:3.0.5
-
CVE-2011-2730
-
alt
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2011-2894
-
alt
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2013-4152
-
mitjà
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2013-6429
-
mitjà
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2013-6430
-
mitjà
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2013-7315
-
mitjà
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2014-0054
-
mitjà
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2014-0225
-
alt
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2014-1904
-
mitjà
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2014-3625
-
mitjà
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2016-9878
-
alt
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2018-1270
-
alt
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2018-1271
-
mitjà
FALS
La vulnerabilitat no és específica de spring-tx
-
CVE-2018-1272
-
mitjà
FALS
La vulnerabilitat no és específica de spring-tx
nucli de puntals: 1.3.8
-
CVE-2011-5057 (OSSINDEX)
mitjà
FASLE
Vulnerabilitat a Struts 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
alt
FALS
Vulnerabilitat a Struts 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
mitjà
FALS
Vulnerabilitat a Struts 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
alt
FALS
Vulnerabilitat a Struts 2
CVE-2016-1182
3VE-2016-1182
-
alt
VERITABLE
-
-
CVE-2011-5057
mitjà
FALS
Vulnerabilitat a Struts 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
alt
FALS
Vulnerabilitat a Struts 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
mitjà
FALS
Vulnerabilitat a Struts 2
CVE-2015-0899
CVE-2015-0899
-
alt
VERITABLE
-
CVE-2012-0394
CVE-2012-0394
mitjà
FALS
Vulnerabilitat a Struts 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
alt
FALS
Vulnerabilitat a Struts 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
alt
FALS
Vulnerabilitat a Struts 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
alt
FASLE
Vulnerabilitat a Struts 2
-
CVE-2013-2115
CVE-2013-2115
alt
FASLE
Vulnerabilitat a Struts 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
alt
FASLE
Vulnerabilitat a Struts 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
alt
FASLE
Vulnerabilitat a Struts 2
CVE-2014-0114
CVE-2014-0114
-
alt
VERITABLE
-
CVE-2015-2992
CVE-2015-2992
mitjà
FALS
Vulnerabilitat a Struts 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
alt
FALS
Vulnerabilitat a Struts 2
CVE-2016-1181
CVE-2016-1181
-
alt
VERITABLE
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
alt
FALS
Vulnerabilitat a Struts 2
xwork-core: 2.3.30
CVE-2017-9804
-
-
alt
VERITABLE
SONATYPE-2017-0173
-
-
alt
VERITABLE
CVE-2017-7672
-
-
alt
FALS
Duplicat de CVE-2017-9804
SONATYPE-2016-0127
-
-
alt
VERITABLE
puntals de 2 nuclis: 2.3.30
-
CVE-2016-6795
CVE-2016-6795
alt
VERITABLE
-
CVE-2017-9787
CVE-2017-9787
alt
VERITABLE
-
CVE-2017-9791
CVE-2017-9791
alt
VERITABLE
-
CVE-2017-9793
-
alt
FALS
Duplicat de CVE-2018-1327
-
CVE-2017-9804
-
alt
VERITABLE
-
CVE-2017-9805
CVE-2017-9805
alt
VERITABLE
CVE-2016-4003
-
-
mitjà
FALS
Aplicable a Apache Struts 2.x fins a 2.3.28, que és la versió 2.3.30. Tanmateix, segons la descripció, el CVE és vàlid per a qualsevol versió de Struts 2 si s'utilitza JRE 1.7 o inferior. Pel que sembla, van decidir reassegurar-nos aquí, però sembla més aviat FALS
-
CVE-2018-1327
CVE-2018-1327
alt
VERITABLE
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
alt
VERITABLE
La mateixa vulnerabilitat que els pirates informàtics d'Equifax van explotar el 2017
CVE-2017-12611
CVE-2017-12611
-
alt
VERITABLE
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
alt
VERITABLE
struts-taglib:1.3.8
-
CVE-2012-0394
-
mitjà
FALS
Per a puntals de 2 nuclis
-
CVE-2013-2115
-
alt
FALS
Per a puntals de 2 nuclis
-
CVE-2014-0114
-
alt
FALS
Per a commons-beanutils
-
CVE-2015-0899
-
alt
FALS
No s'aplica a taglib
-
CVE-2015-2992
-
mitjà
FALS
Es refereix a struts2-core
-
CVE-2016-1181
-
alt
FALS
No s'aplica a taglib
-
CVE-2016-1182
-
alt
FALS
No s'aplica a taglib
puntals-rajoles-1.3.8
-
CVE-2012-0394
-
mitjà
FALS
Per a puntals de 2 nuclis
-
CVE-2013-2115
-
alt
FALS
Per a puntals de 2 nuclis
-
CVE-2014-0114
-
alt
FALS
Sota commons-beanutils
-
CVE-2015-0899
-
alt
FALS
No s'aplica a rajoles
-
CVE-2015-2992
-
mitjà
FALS
Per a puntals de 2 nuclis
-
CVE-2016-1181
-
alt
FALS
No s'aplica a taglib
-
CVE-2016-1182
-
alt
FALS
No s'aplica a taglib
Font: www.habr.com