{"id":92519,"date":"2020-08-28T07:42:26","date_gmt":"2020-08-28T05:42:26","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya"},"modified":"2020-08-28T07:42:26","modified_gmt":"2020-08-28T05:42:26","slug":"devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","title":{"rendered":"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>La importancia del an\u00e1lisis de componentes de software de terceros (ingl\u00e9s: Software Composition Analysis \u2014 SCA) en el proceso de desarrollo est\u00e1 creciendo a medida que se publican informes anuales sobre vulnerabilidades de bibliotecas de c\u00f3digo abierto, emitidos por empresas como Synopsys, Sonatype, Snyk y White Source. Seg\u00fan el informe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">El Estado de las Vulnerabilidades de Seguridad en C\u00f3digo Abierto 2020<\/a><\/noindex> el n\u00famero de vulnerabilidades identificadas en c\u00f3digo abierto en 2019 creci\u00f3 casi 1.5 veces en comparaci\u00f3n con el a\u00f1o anterior, mientras que los componentes de c\u00f3digo abierto son utilizados en entre el 60% y el 80% de los proyectos. Si consideramos opiniones independientes, los procesos de SCA son una pr\u00e1ctica separada en OWASP SAMM y BSIMM como un indicador de madurez, y en la primera mitad de 2020 OWASP lanz\u00f3 un nuevo est\u00e1ndar, el OWASP Software Component Verification Standard (SCVS), que proporciona las mejores pr\u00e1cticas para verificar componentes de terceros en la cadena de suministro de software.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/2a82121d42f9d317f3862a2d7869fdd6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nUno de los casos m\u00e1s representativos <noindex><a rel=\"nofollow\" href=\"https:\/\/xakep.ru\/2017\/09\/14\/equifax-dejstvitelno-vzlomali-cherez-bag-v-apache-struts-no-uyazvimost-okazalas-staroj\/\">ocurri\u00f3<\/a><\/noindex> con la empresa Equifax en mayo de 2017. Cibern\u00e9ticos desconocidos obtuvieron informaci\u00f3n sobre 143 millones de estadounidenses, incluidos nombres completos, direcciones, n\u00fameros de seguro social y licencias de conducir. En 209,000 casos, tambi\u00e9n aparecieron datos sobre tarjetas bancarias de las v\u00edctimas. Esta filtraci\u00f3n ocurri\u00f3 como resultado de la explotaci\u00f3n de una vulnerabilidad cr\u00edtica en Apache Struts 2 (CVE-2017-5638), mientras que un arreglo se hab\u00eda lanzado en marzo de 2017. La empresa tuvo dos meses para instalar la actualizaci\u00f3n, pero nadie se preocup\u00f3 por hacerlo.<\/p>\n<p>En este art\u00edculo se discutir\u00e1 la selecci\u00f3n de herramientas para llevar a cabo SCA desde la perspectiva de la calidad de los resultados del an\u00e1lisis. Tambi\u00e9n se realizar\u00e1 una comparaci\u00f3n funcional de las herramientas. El proceso de integraci\u00f3n en CI\/CD y las capacidades de integraci\u00f3n se dejar\u00e1n para publicaciones posteriores. OWASP present\u00f3 una amplia lista de herramientas <noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-community\/Component_Analysis\">en su sitio web<\/a><\/noindex>, pero en el marco de esta revisi\u00f3n solo abordaremos la herramienta de c\u00f3digo abierto m\u00e1s popular, Dependency Check, la plataforma de c\u00f3digo abierto menos conocida Dependency Track y la soluci\u00f3n empresarial Sonatype Nexus IQ. Tambi\u00e9n analizaremos c\u00f3mo funcionan estas soluciones y compararemos los resultados obtenidos en t\u00e9rminos de falsos positivos.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/0580758082abd9950aa9c483d546f1ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Principio de funcionamiento.<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/jeremylong.github.io\/DependencyCheck\/\">Dependency Check<\/a><\/noindex> es una herramienta (CLI, maven, m\u00f3dulo jenkins, ant) que analiza los archivos del proyecto, recopila fragmentos de informaci\u00f3n sobre dependencias (nombre del paquete, groupid, t\u00edtulo de especificaci\u00f3n, versi\u00f3n\u2026), construye una cadena CPE \u2014 (Common Platform Enumeration), URL del paquete (PURL) y detecta vulnerabilidades para CPE\/PURL de bases de datos (NVD, Sonatype OSS Index, NPM Audit API\u2026), despu\u00e9s de lo cual genera un informe \u00fanico en formato HTML, JSON, XML\u2026<\/p>\n<p>Veamos c\u00f3mo se ve un CPE:<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other<\/code><\/pre>\n<p><\/p>\n<ul>\n<li><b>Parte:<\/b> Indicaci\u00f3n de que el componente pertenece a una aplicaci\u00f3n (a), sistema operativo (o), hardware (h) (Campo obligatorio)<\/li>\n<li><b>Vendor:<\/b> Nombre del fabricante del producto (Campo obligatorio)<\/li>\n<li><b>Product:<\/b> Nombre del producto (Campo obligatorio)<\/li>\n<li><b>Versi\u00f3n:<\/b> Versi\u00f3n del componente (Campo obsoleto)<\/li>\n<li><b>Update:<\/b> Actualizaci\u00f3n de paquete<\/li>\n<li><b>Edition:<\/b> Versi\u00f3n heredada (Campo obsoleto)<\/li>\n<li><b>Language:<\/b> Idioma definido en RFC-5646<\/li>\n<li><b>SW Edition:<\/b> Versi\u00f3n de software<\/li>\n<li><b>Target SW:<\/b> Entorno de software en el que funciona el producto<\/li>\n<li><b>Target HW:<\/b> Entorno de hardware en el que funciona el producto<\/li>\n<li><b>Other:<\/b> Informaci\u00f3n sobre el proveedor o producto<\/li>\n<\/ul>\n<p>\nUn ejemplo de CPE se ve de la siguiente manera:<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*<\/code><\/pre>\n<p>\nLa cadena significa que el CPE versi\u00f3n 2.3 describe un componente de aplicaci\u00f3n del fabricante <code>pivotal_software <\/code>con el nombre <code>spring_framework<\/code> versi\u00f3n 3.0.0. Si abrimos la vulnerabilidad <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2014-0225\">CVE-2014-0225<\/a><\/noindex> en NVD, podemos ver una menci\u00f3n de este CPE. El primer problema que debe notarse de inmediato \u2014 el CVE en NVD, seg\u00fan CPE, informa sobre un problema en el marco, no en un componente espec\u00edfico. Es decir, si los desarrolladores est\u00e1n estrechamente acoplados al marco y la vulnerabilidad identificada no afecta a los m\u00f3dulos que utilizan los desarrolladores, el especialista en seguridad tendr\u00e1 que analizar esta CVE y considerar una actualizaci\u00f3n.<\/p>\n<p>La URL tambi\u00e9n es utilizada por las herramientas SCA. El formato de la URL del paquete es el siguiente:<\/p>\n<pre><code class=\"plaintext\">scheme:type\/namespace\/name@version?qualifiers#subpath<\/code><\/pre>\n<p><\/p>\n<ul>\n<li><b>Scheme: <\/b>Siempre habr\u00e1 'pkg' que indicar\u00e1 que se trata de una direcci\u00f3n URL del paquete (Campo obligatorio)<\/li>\n<li><b>Type:<\/b> \u2018Tipo\u2019 de paquete o \u2018protocolo\u2019 de paquete, como maven, npm, nuget, gem, pypi, etc. (Campo obligatorio)<\/li>\n<li><b>Namespace:<\/b> Algun prefijo del nombre, como el identificador de grupo de Maven, propietario de la imagen de Docker, usuario u organizaci\u00f3n de GitHub. Opcional y depende del tipo.<\/li>\n<li><b>Nombre:<\/b> Nombre del paquete (Campo obligatorio)<\/li>\n<li><b>Versi\u00f3n:<\/b> Versi\u00f3n del paquete<\/li>\n<li><b>Qualifiers:<\/b> Datos de calificaci\u00f3n adicionales para el paquete, como SO, arquitectura, distribuci\u00f3n, etc. Opcional y dependiente del tipo de elemento.<\/li>\n<li><b>Subruta:<\/b> Ruta adicional en el paquete relativa a la ra\u00edz del paquete<\/li>\n<\/ul>\n<p>\nPor ejemplo:<\/p>\n<pre><code class=\"plaintext\">pkg:golang\/google.golang.org\/genproto#googleapis\/api\/annotations\npkg:maven\/org.apache.commons\/io@1.3.4\npkg:pypi\/django-package@1.11.1.dev1<\/code><\/pre>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/dependencytrack.org\/\">Dependency Track<\/a><\/noindex> \u2014 plataforma web on-premise que acepta listas de materiales (BOM) compiladas <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/CycloneDX\">CycloneDX<\/a><\/noindex> y <noindex><a rel=\"nofollow\" href=\"https:\/\/spdx.org\/licenses\/\">SPDX<\/a><\/noindex>, es decir, especificaciones completas sobre las dependencias existentes. Es un archivo XML que describe las dependencias: nombre, hashes, URL del paquete, editor, licencia. Luego, Dependency Track analiza la BOM, verifica las vulnerabilidades identificadas de las dependencias contra la base de datos de vulnerabilidades (NVD, Sonatype OSS Index \u2026), y genera gr\u00e1ficos, calcula m\u00e9tricas, actualizando regularmente los datos sobre el estado de la vulnerabilidad de los componentes. <\/p>\n<p>Ejemplo de c\u00f3mo puede verse una BOM en formato XML:<\/p>\n<pre><code class=\"xml\">Apache\n      org.apache.tomcat\n      tomcat-catalina\n      9.0.14\n      \n        3942447fac867ae5cdb3229b658f4d48\n        e6b1000b94e835ffd37f4c6dcbdad43f4b48a02a\n        f498a8ff2dd007e29c2074f5e4b01a9a01775c3ff3aeaf6906ea503bc5791b7b\n        e8f33e424f3f4ed6db76a482fde1a5298970e442c531729119e37991884bdffab4f9426b7ee11fccd074eeda0634d71697d6f88a460dce0ac8d627a29f7d1282\n      \n      \n        \n          Apache-2.0\n        \n      \n      pkg:maven\/org.apache.tomcat\/tomcat-catalina@9.0.14\n    \n      <!-- More components here --><\/code><\/pre>\n<p>\nLa BOM no solo puede utilizarse como par\u00e1metros de entrada para Dependency Track, sino tambi\u00e9n para la gesti\u00f3n de inventarios de componentes de software en la cadena de suministro, por ejemplo, para proporcionar al cliente de software. En 2014, incluso se propuso en EE. UU. una ley <noindex><a rel=\"nofollow\" href=\"https:\/\/www.congress.gov\/bill\/113th-congress\/house-bill\/5793\">\u00abCyber Supply Chain Management and Transparency Act of 2014\u00bb<\/a><\/noindex>, que estipulaba que al adquirir software, cualquier entidad gubernamental deb\u00eda solicitar una BOM para prevenir el uso de componentes vulnerables, sin embargo, la ley nunca entr\u00f3 en vigor.<\/p>\n<p>Volviendo a SCA, Dependency Track tiene integraciones listas con plataformas de notificaci\u00f3n como Slack, y sistemas de gesti\u00f3n de vulnerabilidades como Kenna Security. Tambi\u00e9n es importante mencionar que Dependency Track identifica versiones desactualizadas de paquetes y proporciona informaci\u00f3n sobre licencias (gracias al soporte de SPDX).<\/p>\n<p>Si hablamos espec\u00edficamente de la calidad del SCA, aqu\u00ed hay una diferencia fundamental.<\/p>\n<p>Dependency Track no acepta un proyecto como entrada, sino que toma un BOM. Esto significa que si queremos verificar el proyecto, primero debemos generar un bom.xml, por ejemplo, usando CycloneDX. As\u00ed, Dependency Track depende directamente de CycloneDX. Al mismo tiempo, esto permite la personalizaci\u00f3n. As\u00ed, el equipo de OZON escribi\u00f3 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ozonru\/cyclonedx-go\">el m\u00f3dulo CycloneDX<\/a><\/noindex> para construir archivos BOM para proyectos en Golang con el fin de escanearlos posteriormente a trav\u00e9s de Dependency Track.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/sonatype.ru\/#nexusiq\">Nexus IQ<\/a><\/noindex> es una soluci\u00f3n comercial SCA de la empresa Sonatype, que es parte del ecosistema de Sonatype, que tambi\u00e9n incluye Nexus Repository Manager. Nexus IQ puede aceptar como entrada tanto archivos war (para proyectos de Java) a trav\u00e9s de la interfaz web o API, como un BOM, si su organizaci\u00f3n no ha tenido tiempo para cambiar de CycloneDX a la nueva soluci\u00f3n. A diferencia de las soluciones de c\u00f3digo abierto, IQ no solo se dirige al CP\/PURL de un componente identificado y a la vulnerabilidad correspondiente en la base de datos, sino que tambi\u00e9n tiene en cuenta investigaciones propias, por ejemplo, el nombre de la funci\u00f3n o clase vulnerable. Los mecanismos de IQ se discutir\u00e1n m\u00e1s adelante al analizar los resultados.<\/p>\n<p>Resumamos algunas conclusiones sobre las caracter\u00edsticas funcionales, as\u00ed como sobre los lenguajes compatibles para el an\u00e1lisis:<\/p>\n<p>Lenguaje<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Java<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>C\/C++<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>C#<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>.Net<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Erlang<br \/>\n\u2014<br \/>\n\u2014<br \/>\n+<\/p>\n<p>JavaScript (NodeJS)<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>PHP<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Python<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Ruby<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Perl<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Scala<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Objective C<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>Swift<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>R<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Go<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>\nCaracter\u00edsticas funcionales<\/p>\n<p>Caracter\u00edsticas funcionales<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Capacidad para verificar la limpieza de licencias de los componentes utilizados en el c\u00f3digo fuente<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Capacidad de escanear y analizar im\u00e1genes de Docker en busca de vulnerabilidades y limpieza de licencias<br \/>\n+ Integraci\u00f3n con Clair<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Capacidad para configurar pol\u00edticas de seguridad para el uso de bibliotecas de c\u00f3digo abierto<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Capacidad para escanear repositorios de c\u00f3digo abierto en busca de componentes vulnerables<br \/>\n+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS<br \/>\n\u2014<br \/>\n+ Hex, RubyGems, Maven, NPM, Nuget, Pypi<\/p>\n<p>Existencia de un grupo de investigaci\u00f3n especializado<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Trabajo en un contorno cerrado<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Uso de bases de datos externas<br \/>\n+ Base de datos privada de Sonatype<br \/>\n+ Sonatype OSS, NPM Public Advisors<br \/>\n+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, soporte para base de datos de vulnerabilidades propia<\/p>\n<p>Capacidad para filtrar componentes de c\u00f3digo abierto al intentar cargar en el entorno de desarrollo seg\u00fan las pol\u00edticas configuradas<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Recomendaciones para corregir vulnerabilidades, incluyendo enlaces a correcciones<br \/>\n+<br \/>\n+- (depende de la descripci\u00f3n en bases de datos p\u00fablicas)<br \/>\n+- (depende de la descripci\u00f3n en bases de datos p\u00fablicas)<\/p>\n<p>Clasificaci\u00f3n de vulnerabilidades encontradas seg\u00fan su criticidad<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Modelo de rol de acceso<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Soporte para la interfaz de l\u00ednea de comandos CLI<br \/>\n+<br \/>\n+<br \/>\n+- (solo para CycloneDX)<\/p>\n<p>Filtrado \/ ordenaci\u00f3n de vulnerabilidades seg\u00fan criterios especificados<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Tablero de estado de aplicaciones<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Generaci\u00f3n de informes en formato PDF<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Generaci\u00f3n de informes en formato JSONCSV<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>Soporte para el idioma ruso<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nCapacidades de integraci\u00f3n<\/p>\n<p>Integraci\u00f3n<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Integraci\u00f3n con LDAP\/Active Directory<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Integraci\u00f3n con el sistema de integraci\u00f3n continua (continuous integration) Bamboo<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integraci\u00f3n con el sistema de integraci\u00f3n continua (continuous integration) TeamCity<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integraci\u00f3n con el sistema de integraci\u00f3n continua (continuous integration) GitLab<br \/>\n+<br \/>\n+- (como un plugin para GitLab)<br \/>\n+<\/p>\n<p>Integraci\u00f3n con el sistema de integraci\u00f3n continua (continuous integration) Jenkins<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Disponibilidad de plugins para IDE<br \/>\n+ IntelliJ, Eclipse, Visual Studio<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Soporte para integraci\u00f3n personalizada a trav\u00e9s de servicios web (API) de la herramienta<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<h3>Dependency Check<\/h3>\n<p><\/p>\n<h4>Primera ejecuci\u00f3n<\/h4>\n<p>\nEjecutaremos Dependency Check en una aplicaci\u00f3n intencionadamente vulnerable <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appsecco\/dvja\">DVJA<\/a><\/noindex>.<\/p>\n<p>Para ello utilizaremos <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jeremylong\/DependencyCheck\">Dependency Check Maven Plugin<\/a><\/noindex>:<\/p>\n<pre><code class=\"plaintext\">mvn org.owasp:dependency-check-maven:check<\/code><\/pre>\n<p>\nComo resultado, aparecer\u00e1 dependency-check-report.html en el directorio target.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/d5b9fe5a8eb68569387dd0bfd38af459.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAbramos el archivo. Despu\u00e9s de la informaci\u00f3n resumida sobre el total de vulnerabilidades, podemos ver informaci\u00f3n sobre vulnerabilidades de alto nivel de Severidad y Confianza, indicando el paquete, CPE, n\u00famero de CVE.<\/p>\n<p>A continuaci\u00f3n, se presenta informaci\u00f3n m\u00e1s detallada, en particular sobre la base de la cual se tom\u00f3 la decisi\u00f3n (evidence), es decir, un BOM.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/53dd89b0ff20c4c51aaf7412399e7fd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLuego se presentan CPE, PURL y la descripci\u00f3n de CVE. Las recomendaciones para su correcci\u00f3n, por cierto, no se incluyen debido a su ausencia en la base NVD.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/ba2021aa8b6bf175383298b2c2a71670.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPara revisar sistem\u00e1ticamente los resultados del escaneo, se puede configurar Nginx con configuraciones m\u00ednimas, o enviar los defectos obtenidos a un sistema de gesti\u00f3n de defectos que soporte conectores para Dependency Check. Por ejemplo, Defect Dojo. <\/p>\n<h3>Dependency Track<\/h3>\n<p><\/p>\n<h4>Instalaci\u00f3n<\/h4>\n<p>\nDependency Track, a su vez, es una plataforma web con gr\u00e1ficos, por lo que la cuesti\u00f3n de almacenar defectos en una soluci\u00f3n externa no se plantea aqu\u00ed. <br \/>\nPara la instalaci\u00f3n hay los siguientes escenarios soportados: Docker, WAR, Executable WAR. <\/p>\n<h4>Primera ejecuci\u00f3n<\/h4>\n<p>\nAccedemos a la URL del servicio iniciado. Ingresamos con admin\/admin, cambiamos el nombre de usuario y la contrase\u00f1a, despu\u00e9s de lo cual llegamos al Dashboard. Lo siguiente que haremos es crear un proyecto para una aplicaci\u00f3n de prueba en Java en<i> Home\/Projects \u2192 Crear Proyecto <\/i>. Tomaremos como ejemplo DVJA.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/338aaa1c9ca0ac99f2e857f8ce001a02.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDado que Dependency Track solo puede aceptar BOM como entrada, es necesario obtener este BOM. Utilizaremos <noindex><a rel=\"nofollow\" href=\"https:\/\/github.coam\/CycloneDX\/cyclonedx-maven-plugin\">CycloneDX Maven Plugin<\/a><\/noindex>:<\/p>\n<pre><code class=\"plaintext\">mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom<\/code><\/pre>\n<p>\nObtenemos bom.xml y subimos el archivo en el proyecto creado <i>DVJA \u2192 Dependencias \u2192 Cargar BOM<\/i>.<\/p>\n<p>Entramos en Administraci\u00f3n \u2192 Analizadores. Entendemos que solo tenemos habilitado el Analizador Interno, que incluye NVD. Tambi\u00e9n conectaremos Sonatype OSS Index.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/3879a9a3d5f227d9740a984e7b1b91b2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAs\u00ed, obtendremos la siguiente vista para nuestro proyecto:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/004f2ab3383acb87e3d5e8c0fba1f3c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTambi\u00e9n en la lista podemos encontrar una vulnerabilidad aplicable a Sonatype OSS:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/e459f08218f890b46fb4050c30da63c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa principal decepci\u00f3n fue que Dependency Track ya no acepta informes xml de Dependency Check. Las \u00faltimas versiones compatibles con la integraci\u00f3n de Dependency Check fueron 1.0.0 a 4.0.2, mientras que yo prob\u00e9 la 5.3.2.<\/p>\n<p>Aqu\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d2WMONyBbTw\">videos<\/a><\/noindex> (y <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/IPWPISSk5rc\">aqu\u00ed<\/a><\/noindex>), cuando esto a\u00fan era posible. <\/p>\n<h3>Nexus IQ <\/h3>\n<p><\/p>\n<h4>Primera ejecuci\u00f3n<\/h4>\n<p>\nLa instalaci\u00f3n de Nexus IQ se realiza desde archivos comprimidos a trav\u00e9s de <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/iqserver\/installing\/iq-server-installation\">la documentaci\u00f3n<\/a><\/noindex>, pero para estos fines hemos creado una imagen de Docker.<\/p>\n<p>Despu\u00e9s de ingresar a la consola, es necesario crear una Organizaci\u00f3n y una Aplicaci\u00f3n.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/4c6df91bad77e87ea066ff3514a03644.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/d8580ba46852e4d97625a22e215c21d3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/d99ce4e47218001fd1a76722e2633bea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo se puede observar, la configuraci\u00f3n en el caso de IQ es un poco m\u00e1s compleja, ya que tambi\u00e9n necesitamos crear pol\u00edticas aplicables para diferentes \"etapas\" (dev, build, stage, release). Esto es necesario para bloquear componentes vulnerables a medida que avanzan por el pipeline hacia producci\u00f3n, o bloquearlos tan pronto como lleguen al Nexus Repo al ser descargados por los desarrolladores.<\/p>\n<p>Para sentir la diferencia entre open source y enterprise, realizaremos un escaneo similar a trav\u00e9s de Nexus IQ de manera an\u00e1loga a <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/integrations\/sonatype-clm-for-maven\">Maven plugin<\/a><\/noindex>, previamente creando una aplicaci\u00f3n de prueba en la interfaz de NexusIQ <code>dvja-test-and-compare<\/code>:<\/p>\n<pre><code class=\"plaintext\">mvn com.sonatype.clm:clm-maven-plugin:evaluate -Dclm.applicationId=dvja-test-and-compare -Dclm.serverUrl= -Dclm.username= -Dclm.password=\n<\/code><\/pre>\n<p>\nAccedemos a la URL del informe generado en la interfaz web de IQ:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/f81f998037ba53ef62298955077d044d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAqu\u00ed se pueden ver todas las violaciones de pol\u00edticas con diferentes niveles de gravedad (de Info a Security Critical). La letra D junto al componente indica que es una Dependencia Directa, y la letra T junto al componente indica que es una Dependencia Transitiva.<\/p>\n<p>Por cierto, el informe <noindex><a rel=\"nofollow\" href=\"https:\/\/snyk.io\/open-source-security\/\">State of Open Source Security Report 2020<\/a><\/noindex> de Snyk informa que m\u00e1s del 70% de las vulnerabilidades de open source detectadas en Node.js, Java y Ruby se encuentran en dependencias transitivas.<\/p>\n<p>Si abrimos una de las violaciones de la pol\u00edtica de Nexus IQ, podemos ver la descripci\u00f3n del componente, as\u00ed como el Gr\u00e1fico de Versiones, que muestra la ubicaci\u00f3n de la versi\u00f3n actual en la l\u00ednea de tiempo, as\u00ed como en qu\u00e9 momento la vulnerabilidad deja de ser vulnerable. La altura de las velas en el gr\u00e1fico muestra la popularidad de uso de este componente.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/d33968a5ce5904da6f50133f882521fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi vamos a la secci\u00f3n de vulnerabilidades y desplegamos el CVE, podremos leer la descripci\u00f3n de esta vulnerabilidad, las recomendaciones para su remediaci\u00f3n, as\u00ed como la raz\u00f3n por la que este componente ha sido se\u00f1alado, es decir, la existencia de la clase <code>DiskFileitem.class<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/6d91b98a9a9a1a62264f1b4194f33ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/c9e580ad178a9c0307ed1e63d6dd244d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nResumamos solo lo que concierne a los componentes de terceros en Java, omitiendo componentes js. En par\u00e9ntesis indicaremos el n\u00famero de vulnerabilidades que se encontraron fuera de la NVD.<\/p>\n<p><b>Total Nexus IQ: <\/b><\/p>\n<ul>\n<li>Dependencias Escaneadas: 62<\/li>\n<li>Dependencias Vulnerables: 16<\/li>\n<li>Vulnerabilidades Encontradas: 42 (8 base de datos de sonatype)<\/li>\n<\/ul>\n<p>\n<b>Total Dependency Check: <\/b><\/p>\n<ul>\n<li>Dependencias Escaneadas: 47<\/li>\n<li>Dependencias Vulnerables: 13<\/li>\n<li>Vulnerabilidades Encontradas: 91 (14 sonatype oss)<\/li>\n<\/ul>\n<p>\n<b>Total Dependency Track: <\/b><\/p>\n<ul>\n<li>Dependencias Escaneadas: 59<\/li>\n<li>Dependencias Vulnerables: 10<\/li>\n<li>Vulnerabilidades Encontradas: 51 (1 sonatype oss)<\/li>\n<\/ul>\n<p>\nEl siguiente paso es analizar los resultados obtenidos y determinar qu\u00e9 vulnerabilidades son defectos reales y cu\u00e1les son falsos positivos.<\/p>\n<h3>Descargo de responsabilidad<\/h3>\n<p>\nEsta revisi\u00f3n no es una verdad incuestionable. El autor no ten\u00eda como objetivo destacar una herramienta sobre las dem\u00e1s. El prop\u00f3sito de la revisi\u00f3n fue mostrar los mecanismos de funcionamiento de las herramientas SCA y las formas de verificar sus resultados.<\/p>\n<h3>Comparaci\u00f3n de resultados<\/h3>\n<p>\n<b>Condiciones:<\/b><\/p>\n<p><b>Un falso positivo en relaci\u00f3n a vulnerabilidades de componentes de terceros es:<\/b><\/p>\n<ul>\n<li><b>Inconsistencia del CVE con el componente identificado<\/b><\/li>\n<li>Por ejemplo, si la vulnerabilidad se identifica en el framework struts2, y la herramienta se\u00f1ala un componente del framework struts-tiles, al que esta vulnerabilidad no se aplica, ser\u00eda un falso positivo.<\/li>\n<li><b>Inconsistencia del CVE con la versi\u00f3n identificada del componente<\/b><\/li>\n<li>Por ejemplo, si la vulnerabilidad est\u00e1 ligada a la versi\u00f3n python &gt; 3.5 y la herramienta marca como vulnerable la versi\u00f3n 2.7, esto ser\u00eda un falso positivo, ya que la vulnerabilidad realmente solo se refiere a la rama del producto 3.x. <\/li>\n<li> <b>Duplicaci\u00f3n de CVE<\/b><\/li>\n<li>Por ejemplo, si el SCA se\u00f1ala un CVE que permite la ejecuci\u00f3n remota de c\u00f3digo (RCE), y luego el SCA indica para este mismo componente un CVE aplicable a productos de Cisco, que son susceptibles a esta RCE. En tal caso, ser\u00eda un falso positivo.<\/li>\n<li>Por ejemplo, se encontr\u00f3 una CVE en el componente spring-web, despu\u00e9s de lo cual SCA indica la misma CVE en otros componentes del marco de trabajo Spring Framework, mientras que la CVE no tiene relaci\u00f3n con otros componentes. En tal caso, ser\u00eda un falso positivo. <\/li>\n<\/ul>\n<p>\nEl objeto de estudio elegido fue el proyecto de c\u00f3digo abierto DVJA. En el estudio participaron solo componentes de Java (sin js).<\/p>\n<h3>Resultados generales<\/h3>\n<p>\nPasemos directamente a los resultados de la revisi\u00f3n manual de las vulnerabilidades identificadas. El informe completo para cada CVE se puede consultar en el Ap\u00e9ndice. <\/p>\n<p><i>Resultados generales sobre todas las vulnerabilidades:<\/i><\/p>\n<p>Par\u00e1metro<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Se han identificado un total de vulnerabilidades<br \/>\n42<br \/>\n91<br \/>\n51<\/p>\n<p>Vulnerabilidades identificadas incorrectamente (falsos positivos)<br \/>\n2(4.76%)<br \/>\n62(68,13%)<br \/>\n29(56.86%)<\/p>\n<p>No se encontraron vulnerabilidades relevantes (falsos negativos)<br \/>\n10<br \/>\n20<br \/>\n27<\/p>\n<p>\n<i>Resultados generales por componentes:<\/i><\/p>\n<p>Par\u00e1metro<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Total de componentes identificados<br \/>\n62<br \/>\n47<br \/>\n59<\/p>\n<p>Total de componentes vulnerables<br \/>\n16<br \/>\n13<br \/>\n10<\/p>\n<p>Componentes vulnerables identificados incorrectamente (falsos positivos)<br \/>\n1<br \/>\n5<br \/>\n0<\/p>\n<p>Componentes vulnerables identificados incorrectamente (falsos positivos)<br \/>\n0<br \/>\n6<br \/>\n6<\/p>\n<p>\nConstruyamos gr\u00e1ficos visuales para evaluar la relaci\u00f3n entre falsos positivos y falsos negativos respecto al total de vulnerabilidades. En el eje horizontal se indican los componentes, y en el eje vertical las vulnerabilidades identificadas en ellos. <\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/967b8e168383299d4a1bf4065f1905ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/2e128ee59e551894c25e4c9e28997008.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/585d7bcef052ef24e4de6c7e1a4e7c0b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPara comparar, un estudio similar fue realizado por el equipo de Sonatype probando un proyecto de 1531 componentes usando OWASP Dependency Check. Como podemos ver, la relaci\u00f3n entre el ruido y las activaciones correctas es comparable con nuestros resultados.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/286c34b84f1400af0285b711b3fe87f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fuente: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.sonatype.com\/why-precision-matters-ebook\">www.sonatype.com\/why-precision-matters-ebook<\/a><\/noindex><\/i><\/p>\n<p>Analicemos algunas CVE de los resultados de nuestro escaneo para entender la raz\u00f3n de tales resultados.<\/p>\n<h3>M\u00e1s informaci\u00f3n<\/h3>\n<p><\/p>\n<h4>\u21161<\/h4>\n<p>\nPrimero, analicemos algunos puntos interesantes de Sonatype Nexus IQ.<\/p>\n<p>Nexus IQ se\u00f1ala un problema con la deserializaci\u00f3n que puede permitir la ejecuci\u00f3n remota de c\u00f3digo (RCE) en Spring Framework varias veces. CVE-2016-1000027 en spring-web:3.0.5 por primera vez, y CVE-2011-2894 en spring-context:3.0.5 y spring-core:3.0.5. Al principio, parece que hay duplicaci\u00f3n de vulnerabilidad por varias CVE. Porque, si miramos CVE-2016-1000027 y CVE-2011-2894 en la base de datos NVD, parece que todo es obvio.<\/p>\n<p>Componente<br \/>\nVulnerabilidad<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2016-1000027<\/p>\n<p>spring-context:3.0.5<br \/>\nCVE-2011-2894<\/p>\n<p>spring-core:3.0.5<br \/>\nCVE-2011-2894<\/p>\n<p>\nDescripci\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2011-2894\">CVE-2011-2894<\/a><\/noindex> de la NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/31b403eca6d7541c766c9a560bfbe6b7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDescripci\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2016-1000027\">CVE-2016-1000027<\/a><\/noindex> de la NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/d5b54a6ac15070b12f013eaacd2878f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCVE-2011-2894 es bastante conocida por s\u00ed misma. En el informe <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pwntester.com\/blog\/2013\/12\/16\/cve-2011-2894-deserialization-spring-rce\/\">de White Source de 2011<\/a><\/noindex> esta CVE fue reconocida como una de las m\u00e1s comunes. Las descripciones para CVE-2016-100027 son en general escasas en NVD, y parece que es aplicable solo a Spring Framework 4.1.4. Echemos un vistazo a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">reference<\/a><\/noindex> y aqu\u00ed se vuelve m\u00e1s o menos claro. De <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">el art\u00edculo de Tenable<\/a><\/noindex> entendemos que adem\u00e1s de la vulnerabilidad en <code>RemoteInvocationSerializingExporter<\/code> en CVE-2011-2894, la vulnerabilidad tambi\u00e9n se observa en <code>HttpInvokerServiceExporter<\/code>. Esto es lo que nos dice Nexus IQ:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/a33f0853ce892d28eafafe2c8e7b2228.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSin embargo, no hay nada parecido en el NVD, lo que provoca que Dependency Check y Dependency Track generen falsos negativos.<\/p>\n<p>Tambi\u00e9n se puede deducir del CVE-2011-2894 que la vulnerabilidad est\u00e1 efectivamente presente en spring-context:3.0.5 y en spring-core:3.0.5. Se puede encontrar confirmaci\u00f3n de esto en el art\u00edculo del descubridor de esta vulnerabilidad.<\/p>\n<h4>N\u00ba2<\/h4>\n<p><\/p>\n<p>Componente<br \/>\nVulnerabilidad<br \/>\nResultado<\/p>\n<p>struts2-core:2.3.30<br \/>\nCVE-2016-4003<br \/>\nFALSO<\/p>\n<p>\nSi examinamos la vulnerabilidad CVE-2016-4003, entendemos que fue corregida en la versi\u00f3n 2.3.28, sin embargo, Nexus IQ nos alerta sobre ella. En la descripci\u00f3n de la vulnerabilidad hay una nota:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principios de trabajo y comparaci\u00f3n de SCA. Parte uno\" src=\"\/wp-content\/uploads\/2020\/08\/081f9006748083727e424b709a338d60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs decir, la vulnerabilidad solo existe en combinaci\u00f3n con una versi\u00f3n obsoleta de JRE, lo cual se nos quiso advertir. Sin embargo, consideramos esto un falso positivo, aunque no el m\u00e1s grave.<\/p>\n<h4>N\u00ba3<\/h4>\n<p><\/p>\n<p>Componente<br \/>\nVulnerabilidad<br \/>\nResultado<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\nVERDADERO<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-7672<br \/>\nFALSO<\/p>\n<p>\nSi observamos la descripci\u00f3n de CVE-2017-9804 y CVE-2017-7672, entenderemos que el problema radica en <code>la clase URLValidator<\/code>, y CVE-2017-9804 deriva de CVE-2017-7672. La existencia de la segunda vulnerabilidad no aporta ninguna utilidad adicional excepto que su severidad aument\u00f3 a Alta, por lo que se puede considerar un ruido innecesario.<\/p>\n<p>En general, no se encontraron otros falsos positivos para Nexus IQ.<\/p>\n<h3>N\u00ba4<\/h3>\n<p>\nHay varios aspectos que destacan a IQ frente a otras soluciones.<\/p>\n<p>Componente<br \/>\nVulnerabilidad<br \/>\nResultado<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2020-5398<br \/>\nVERDADERO<\/p>\n<p>El CVE en NVD indica que es aplicable solo a las versiones 5.2.x hasta 5.2.3, 5.1.x hasta 5.1.13 y versiones 5.0.x hasta 5.0.16, sin embargo, si miramos la descripci\u00f3n del CVE en Nexus IQ, veremos lo siguiente:<br \/>\n<i>Aviso de desviaci\u00f3n de asesor\u00eda: el equipo de investigaci\u00f3n de seguridad de Sonatype descubri\u00f3 que esta vulnerabilidad se introdujo en la versi\u00f3n 3.0.2.RELEASE y no en 5.0.x como se indica en la asesor\u00eda.<\/i><\/p>\n<p>Despu\u00e9s de esto, se presenta un PoC para esta vulnerabilidad, que indica que est\u00e1 presente en la versi\u00f3n 3.0.5.<\/p>\n<p>El falso negativo se env\u00eda a Dependency Check y Dependency Track.<\/p>\n<h3>N\u00ba5<\/h3>\n<p>\nVeamos los falsos positivos para Dependency Check y Dependency Track.<\/p>\n<p>Dependency Check se distingue en particular porque refleja los CVE que se relacionan con todo el marco en NVD, en los componentes a los que estos CVE no son aplicables. Esto incluye CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, que Dependency Check \"asoci\u00f3\" a struts-taglib:1.3.8 y struts-tiles-1.3.8. Estos componentes nada tienen que ver con lo que se describe en el CVE: el procesamiento de solicitudes, la validaci\u00f3n de p\u00e1ginas, etc. Esto se debe a que lo \u00fanico que los une a estos CVE y componentes es el marco, lo que llev\u00f3 a Dependency Check a considerar esto como una vulnerabilidad.<\/p>\n<p>La misma situaci\u00f3n ocurre con spring-tx:3.0.5, y una situaci\u00f3n similar con struts-core:1.3.8. Para struts-core, Dependency Check y Dependency Track encontraron muchas vulnerabilidades que en realidad son aplicables a struts2-core, que es en esencia un marco separado. En este caso, Nexus IQ entendi\u00f3 correctamente la situaci\u00f3n y en los CVE que emiti\u00f3, indic\u00f3 que struts-core lleg\u00f3 al final de su vida \u00fatil y es necesario migrar a struts2-core.<\/p>\n<h3>N\u00ba6<\/h3>\n<p>\nEn algunas situaciones, interpretar un error evidente de Dependency Check y Dependency Track es injusto. En particular, los CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, que Dependency Check y Dependency Track asignaron a spring-core:3.0.5, en realidad pertenecen a spring-web:3.0.5. Al mismo tiempo, parte de estos CVE fueron encontrados por Nexus IQ, sin embargo, IQ los identific\u00f3 correctamente para otro componente. El hecho de que estas vulnerabilidades no fueran encontradas en spring-core no significa que no existan en el marco en general y las herramientas de c\u00f3digo abierto se\u00f1alaron correctamente estas vulnerabilidades (simplemente se equivocaron un poco). <\/p>\n<h3>Conclusiones<\/h3>\n<p>\nComo podemos ver, determinar la veracidad de las vulnerabilidades identificadas mediante una revisi\u00f3n manual no proporciona resultados claros, lo que genera momentos de disputa. Los resultados son tales que la soluci\u00f3n de Nexus IQ posee la menor tasa de falsos positivos y la mayor precisi\u00f3n. <\/p>\n<p>En primer lugar, esto se debe a que el equipo de Sonatype ampli\u00f3 la descripci\u00f3n de cada vulnerabilidad CVE del NVD en sus bases, indicando con precisi\u00f3n hasta la clase o funci\u00f3n de la vulnerabilidad para cada versi\u00f3n del componente, realizando investigaciones adicionales (por ejemplo, verificando vulnerabilidades en versiones m\u00e1s antiguas del software). <\/p>\n<p>Un impacto significativo en los resultados tambi\u00e9n lo tienen las vulnerabilidades que no se incluyeron en el NVD, pero que sin embargo est\u00e1n presentes en la base de Sonatype con la etiqueta SONATYPE. Seg\u00fan el informe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">El Estado de las Vulnerabilidades de Seguridad en C\u00f3digo Abierto 2020<\/a><\/noindex> el 45% de las vulnerabilidades de c\u00f3digo abierto detectadas no se reportan en el NVD. Seg\u00fan la base de datos de WhiteSource, solo el 29% de todas las vulnerabilidades de c\u00f3digo abierto, registradas fuera del NVD, terminan public\u00e1ndose en \u00e9l, por lo que es tan importante buscar vulnerabilidades tambi\u00e9n en otras fuentes.<\/p>\n<p>Como resultado, Dependency Check genera mucho ruido, omitiendo parte de los componentes vulnerables. Dependency Track produce menos ruido y detecta un gran n\u00famero de componentes, lo que visualmente no resulta tan alarmante en la interfaz web.<\/p>\n<p>Sin embargo, la pr\u00e1ctica muestra que el c\u00f3digo abierto deber\u00eda ser el primer paso hacia un DevSecOps maduro. Lo primero en lo que se debe reflexionar para integrar SCA en el desarrollo son los procesos, es decir, pensar junto a la direcci\u00f3n y departamentos afines sobre c\u00f3mo deber\u00edan ser los procesos ideales en la organizaci\u00f3n. Puede resultar que, para su organizaci\u00f3n, en un principio, Dependency Check o Dependency Track cubran todas las necesidades relevantes del negocio, mientras que las soluciones Enterprise ser\u00e1n una continuaci\u00f3n l\u00f3gica debido al aumento de la complejidad de las aplicaciones desarrolladas.<\/p>\n<p>                        <b class=\"spoiler_title\">Ap\u00e9ndice A. Resultados relacionados con los componentes<\/b><br \/>\n                        <b>Leyenda:<\/b><\/p>\n<ul>\n<li>Alto \u2014 vulnerabilidades de alta y cr\u00edtica gravedad en el componente<\/li>\n<li>Medio \u2014 vulnerabilidades de gravedad media en el componente<\/li>\n<li>VERDADERO \u2014 vulnerabilidad correctamente identificada (Problema positivo verdadero)<\/li>\n<li>FALSO \u2014 falso positivo (Problema positivo falso)<\/li>\n<\/ul>\n<p><\/p>\n<p>Componente<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nResultado<\/p>\n<p>dom4j: 1.6.1<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>log4j-core: 2.3<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>log4j: 1.2.14<br \/>\nAlto<br \/>\nAlto<br \/>\n\u2014<br \/>\nVERDADERO<\/p>\n<p>commons-collections:3.1<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>commons-codec:1:10<br \/>\nMedio<br \/>\n\u2014<br \/>\n\u2014<br \/>\nVERDADERO<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>spring-expression:3.0.5<br \/>\nAlto<br \/>\ncomponente no encontrado<\/p>\n<p>VERDADERO<\/p>\n<p>spring-web:3.0.5<br \/>\nAlto<br \/>\ncomponente no encontrado<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>spring-context:3.0.5<br \/>\nMedio<br \/>\ncomponente no encontrado<br \/>\n\u2014<br \/>\nVERDADERO<\/p>\n<p>spring-core:3.0.5<br \/>\nMedio<br \/>\nAlto<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nMedio<br \/>\n\u2014<br \/>\n\u2014<br \/>\nVERDADERO<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nAlto<br \/>\n\u2014<br \/>\nFALSO<\/p>\n<p>struts-core:1.3.8<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>xwork-core: 2.3.30<br \/>\nAlto<br \/>\n\u2014<br \/>\n\u2014<br \/>\nVERDADERO<\/p>\n<p>struts2-core: 2.3.30<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nAlto<br \/>\n\u2014<br \/>\nFALSO<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nAlto<br \/>\n\u2014<br \/>\nFALSO<\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Ap\u00e9ndice B. Resultados relacionados con las vulnerabilidades<\/b><br \/>\n                        <b>Leyenda:<\/b><\/p>\n<ul>\n<li>Alto \u2014 vulnerabilidades de alta y cr\u00edtica gravedad en el componente<\/li>\n<li>Medio \u2014 vulnerabilidades de gravedad media en el componente<\/li>\n<li>VERDADERO \u2014 vulnerabilidad correctamente identificada (Problema positivo verdadero)<\/li>\n<li>FALSO \u2014 falso positivo (Problema positivo falso)<\/li>\n<\/ul>\n<p><\/p>\n<p>Componente<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nGravedad<br \/>\nResultado<br \/>\nComentario<\/p>\n<p>dom4j: 1.6.1<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>log4j-core: 2.3<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nBajo<br \/>\nVERDADERO<\/p>\n<p>log4j: 1.2.14<br \/>\nCVE-2019-17571<br \/>\nCVE-2019-17571<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2020-9488<br \/>\n\u2014<br \/>\nBajo<br \/>\nVERDADERO<\/p>\n<p>SONATYPE-2010-0053<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>commons-collections:3.1<br \/>\n\u2014<br \/>\nCVE-2015-6420<br \/>\nCVE-2015-6420<br \/>\nAlto<br \/>\nFALSO<br \/>\nDuplica RCE(OSSINDEX)<\/p>\n<p>\u2014<br \/>\nCVE-2017-15708<br \/>\nCVE-2017-15708<br \/>\nAlto<br \/>\nFALSO<br \/>\nDuplica RCE(OSSINDEX)<\/p>\n<p>SONATYPE-2015-0002<br \/>\nRCE (OSSINDEX)<br \/>\nRCE(OSSINDEX)<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>SONATYPE-2014-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2019-10086<br \/>\nCVE-2019-10086<br \/>\nAlto<br \/>\nFALSO<br \/>\nLa vulnerabilidad solo es aplicable a versiones 1.9.2+<\/p>\n<p>commons-codec:1:10<br \/>\nSONATYPE-2012-0050<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2019-2692<br \/>\nCVE-2019-2692<br \/>\n\u2014<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2020-2875<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa misma vulnerabilidad que CVE-2019-2692, pero con el ap\u00e9ndice 'los ataques pueden impactar significativamente a productos adicionales'<\/p>\n<p>\u2014<br \/>\nCVE-2017-15945<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nNo aplica a mysql-connector-java<\/p>\n<p>\u2014<br \/>\nCVE-2020-2933<br \/>\n\u2014<br \/>\nBajo<br \/>\nFALSO<br \/>\nDuplicado de CVE-2020-2934<\/p>\n<p>CVE-2020-2934<br \/>\nCVE-2020-2934<br \/>\n\u2014<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>spring-expression:3.0.5<br \/>\nCVE-2018-1270<br \/>\ncomponente no encontrado<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2018-1257<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2016-1000027<br \/>\ncomponente no encontrado<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2014-0225<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2011-2730<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>CVE-2018-1272<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2020-5398<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<br \/>\nEjemplo notable a favor de IQ: 'El equipo de investigaci\u00f3n de seguridad de Sonatype descubri\u00f3 que esta vulnerabilidad fue introducida en la versi\u00f3n 3.0.2.RELEASE y no en 5.0.x como se indica en el aviso.'<\/p>\n<p>CVE-2013-6429<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>CVE-2014-0054<br \/>\n\u2014<br \/>\nCVE-2014-0054<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>CVE-2013-6430<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>spring-context:3.0.5<br \/>\nCVE-2011-2894<br \/>\ncomponente no encontrado<br \/>\n\u2014<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>spring-core:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\nCVE-2011-2730<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\nMedio<br \/>\nFALSO<br \/>\nDuplicado de esta misma vulnerabilidad en spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad se refiere al componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\nCVE-2013-6429<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad se refiere al componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad se refiere al componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\nCVE-2013-7315<br \/>\nMedio<br \/>\nFALSO<br \/>\nSPLIT de CVE-2013-4152. + La vulnerabilidad se refiere al componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\nCVE-2014-0054<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad se refiere al componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nLa vulnerabilidad se refiere al componente spring-web<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nAlto<br \/>\nFALSO<br \/>\nDuplicado de esta misma vulnerabilidad en spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\nCVE-2014-1904<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad se refiere al componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\nCVE-2014-3625<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad se refiere al componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\nCVE-2016-9878<br \/>\nAlto<br \/>\nFALSO<br \/>\nLa vulnerabilidad se refiere al componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\nCVE-2018-1270<br \/>\nAlto<br \/>\nFALSO<br \/>\nPara spring-expression \/ spring-messages<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\nCVE-2018-1271<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad se refiere al componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\nCVE-2018-1272<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2014-3578<br \/>\nCVE-2014-3578 (OSSINDEX)<br \/>\nCVE-2014-3578<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>SONATYPE-2015-0327<br \/>\n\u2014<br \/>\n\u2014<br \/>\nBajo<br \/>\nVERDADERO<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nSONATYPE-2016-0104<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedio<br \/>\nVERDADERO<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2011-2894<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nLa vulnerabilidad no se refiere a spring-tx<\/p>\n<p>struts-core:1.3.8<br \/>\n\u2014<br \/>\nCVE-2011-5057 (OSSINDEX)<\/p>\n<p>Medio<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0391 (OSSINDEX)<br \/>\nCVE-2012-0391<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0094 (OSSINDEX)<br \/>\nCVE-2014-0094<br \/>\nMedio<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0113 (OSSINDEX)<br \/>\nCVE-2014-0113<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>CVE-2016-1182<br \/>\n3VE-2016-1182<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2011-5057<br \/>\nMedio<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0392 (OSSINDEX)<br \/>\nCVE-2012-0392<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0393 (OSSINDEX)<br \/>\nCVE-2012-0393<br \/>\nMedio<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>CVE-2015-0899<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2012-0394<br \/>\nCVE-2012-0394<br \/>\nMedio<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0838 (OSSINDEX)<br \/>\nCVE-2012-0838<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1965 (OSSINDEX)<br \/>\nCVE-2013-1965<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1966 (OSSINDEX)<br \/>\nCVE-2013-1966<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\nCVE-2013-2115<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2134 (OSSINDEX)<br \/>\nCVE-2013-2134<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2135 (OSSINDEX)<br \/>\nCVE-2013-2135<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>CVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\nCVE-2015-2992<br \/>\nMedio<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2016-0785 (OSSINDEX)<br \/>\nCVE-2016-0785<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>CVE-2016-1181<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2016-4003 (OSSINDEX)<br \/>\nCVE-2016-4003<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidad en Struts 2<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>SONATYPE-2017-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2017-7672<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nDuplicado de CVE-2017-9804<\/p>\n<p>SONATYPE-2016-0127<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>struts2-core:2.3.30<br \/>\n\u2014<br \/>\nCVE-2016-6795<br \/>\nCVE-2016-6795<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2017-9787<br \/>\nCVE-2017-9787<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2017-9791<br \/>\nCVE-2017-9791<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2017-9793<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nDuplicado de CVE-2018-1327<\/p>\n<p>\u2014<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>\u2014<br \/>\nCVE-2017-9805<br \/>\nCVE-2017-9805<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2016-4003<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nAplicable a Apache Struts 2.x hasta 2.3.28, pero esta es la versi\u00f3n 2.3.30. Sin embargo, a partir de la descripci\u00f3n, el CVE se aplica a cualquier versi\u00f3n de Struts 2 si se utiliza JRE 1.7 o anterior. Parece que aqu\u00ed decidieron ser cautelosos, pero parece m\u00e1s un FALSE.<\/p>\n<p>\u2014<br \/>\nCVE-2018-1327<br \/>\nCVE-2018-1327<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nAlto<br \/>\nVERDADERO<br \/>\nLa vulnerabilidad que aprovecharon los atacantes en Equifax en 2017.<\/p>\n<p>CVE-2017-12611<br \/>\nCVE-2017-12611<br \/>\n\u2014<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>CVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nAlto<br \/>\nVERDADERO<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nPara commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nNo aplicable a taglib<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nAplicable a struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nNo aplicable a taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nNo aplicable a taglib<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nBajo commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nNo aplicable a tiles<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedio<br \/>\nFALSO<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nNo aplicable a taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSO<br \/>\nNo aplicable a taglib<\/p>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/516660\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b. Software Composition Analysis \u2014 SCA) \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0430\u0441\u0442\u0435\u0442 \u043f\u043e \u043c\u0435\u0440\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u044b\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043e\u0431 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u0445 open source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u043c\u0438 Synopsys, Sonatype, Snyk, White Source. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u0442\u0447\u0435\u0442\u0443 The State of Open Source Security Vulnerabilities 2020 \u0447\u0438\u0441\u043b\u043e \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 open source \u0432 2019 \u0432\u044b\u0440\u043e\u0441\u043b\u043e \u043f\u043e\u0447\u0442\u0438 \u0432 1.5 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92520,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92519","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47DevSecOps: \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 SCA. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-28T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-28T05:42:26+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47DevSecOps: principios de operaci\u00f3n y comparaci\u00f3n de SCA. Parte uno | ProHoster","description":"Importancia del an\u00e1lisis de componentes de software de terceros (ingl\u00e9s.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47DevSecOps: \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 SCA. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f | ProHoster","og:description":"\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-28T05:42:26+00:00","article:modified_time":"2020-08-28T05:42:26+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92519","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:06:40","updated":"2022-10-01 01:38:08","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/92519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=92519"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/92519\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/92520"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=92519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=92519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=92519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}