{"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\/pt\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","title":{"rendered":"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A import\u00e2ncia da an\u00e1lise de componentes de software de terceiros (em ingl\u00eas, Software Composition Analysis \u2014 SCA) no processo de desenvolvimento cresce \u00e0 medida que novos relat\u00f3rios anuais sobre vulnerabilidades de bibliotecas open source s\u00e3o publicados por empresas como Synopsys, Sonatype, Snyk e White Source. De acordo com o relat\u00f3rio <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">O Estado das Vulnerabilidades de Seguran\u00e7a em Open Source 2020<\/a><\/noindex> o n\u00famero de vulnerabilidades identificadas em open source em 2019 aumentou quase 1,5 vezes em compara\u00e7\u00e3o ao ano anterior, enquanto componentes de c\u00f3digo aberto s\u00e3o usados em 60% a 80% dos projetos. Se considerarmos a opini\u00e3o independente, os processos SCA s\u00e3o uma pr\u00e1tica separada do OWASP SAMM e do BSIMM como indicador de maturidade, e na primeira metade de 2020, o OWASP lan\u00e7ou um novo padr\u00e3o, o OWASP Software Component Verification Standard (SCVS), que fornece melhores pr\u00e1ticas para a verifica\u00e7\u00e3o de componentes de terceiros na cadeia de suprimento de software.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" 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 \/>\nUm dos casos mais emblem\u00e1ticos <noindex><a rel=\"nofollow\" href=\"https:\/\/xakep.ru\/2017\/09\/14\/equifax-dejstvitelno-vzlomali-cherez-bag-v-apache-struts-no-uyazvimost-okazalas-staroj\/\">ocorreu<\/a><\/noindex> com a empresa Equifax em maio de 2017. Criminosos desconhecidos obtiveram informa\u00e7\u00f5es de 143 milh\u00f5es de americanos, incluindo nomes completos, endere\u00e7os, n\u00fameros de seguro social e carteiras de motorista. Em 209 mil casos, tamb\u00e9m havia informa\u00e7\u00f5es sobre cart\u00f5es de cr\u00e9dito das v\u00edtimas nos documentos. Esse vazamento ocorreu devido \u00e0 explora\u00e7\u00e3o de uma vulnerabilidade cr\u00edtica no Apache Struts 2 (CVE-2017-5638), enquanto a corre\u00e7\u00e3o foi lan\u00e7ada em mar\u00e7o de 2017. A empresa teve dois meses para implementar a atualiza\u00e7\u00e3o, mas ningu\u00e9m se preocupou com isso.<\/p>\n<p>Neste artigo, ser\u00e1 discutida a escolha da ferramenta para realizar SCA do ponto de vista da qualidade dos resultados da an\u00e1lise. Tamb\u00e9m ser\u00e1 feita uma compara\u00e7\u00e3o funcional das ferramentas. O processo de integra\u00e7\u00e3o em CI\/CD e as capacidades de integra\u00e7\u00e3o ser\u00e3o abordados em publica\u00e7\u00f5es futuras. Uma ampla lista de ferramentas foi apresentada pelo OWASP <noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-community\/Component_Analysis\">em seu site<\/a><\/noindex>, mas no \u00e2mbito da atual revis\u00e3o, iremos abordar apenas a ferramenta open source mais popular, Dependency Check, a plataforma open source um pouco menos conhecida, Dependency Track, e a solu\u00e7\u00e3o Enterprise Sonatype Nexus IQ. Tamb\u00e9m analisaremos como essas solu\u00e7\u00f5es funcionam e compararemos os resultados obtidos quanto a falsos positivos.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/0580758082abd9950aa9c483d546f1ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Princ\u00edpio de funcionamento<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/jeremylong.github.io\/DependencyCheck\/\">Dependency Check<\/a><\/noindex> \u2014 \u00e9 uma ferramenta (CLI, m\u00f3dulo maven, jenkins, ant) que analisa os arquivos do projeto, coleta fragmentos de informa\u00e7\u00f5es sobre depend\u00eancias (nome do pacote, groupid, t\u00edtulo da especifica\u00e7\u00e3o, vers\u00e3o\u2026), constr\u00f3i uma string CPE \u2014 (Common Platform Enumeration), Package URL (PURL) e identifica vulnerabilidades para CPE\/PURL a partir de bancos de dados (NVD, Sonatype OSS Index, NPM Audit API\u2026), ap\u00f3s o que gera um relat\u00f3rio \u00fanico nos formatos HTML, JSON, XML\u2026<\/p>\n<p>Vamos ver como \u00e9 o 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>Part:<\/b> Indica\u00e7\u00e3o de que o componente se refere a um aplicativo (a), sistema operacional (o), hardware (h) (Item obrigat\u00f3rio)<\/li>\n<li><b>Vendor:<\/b> Nome do fabricante do produto (Item obrigat\u00f3rio)<\/li>\n<li><b>Product:<\/b> Nome do produto (Item obrigat\u00f3rio)<\/li>\n<li><b>Version:<\/b> Vers\u00e3o do componente (Item obsoleto)<\/li>\n<li><b>Update:<\/b> Atualiza\u00e7\u00e3o do pacote<\/li>\n<li><b>Edition:<\/b> Vers\u00e3o herdada (Item obsoleto)<\/li>\n<li><b>Language:<\/b> Idioma definido no RFC-5646<\/li>\n<li><b>SW Edition:<\/b> Vers\u00e3o de software<\/li>\n<li><b>Target SW:<\/b> Ambiente de software em que o produto opera<\/li>\n<li><b>Target HW:<\/b> Ambiente de hardware em que o produto opera<\/li>\n<li><b>Other:<\/b> Informa\u00e7\u00f5es sobre o fornecedor ou produto<\/li>\n<\/ul>\n<p>\nUm exemplo de CPE \u00e9 o seguinte:<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*<\/code><\/pre>\n<p>\nA string significa que o CPE vers\u00e3o 2.3 descreve um componente de aplicativo do fabricante <code>pivotal_software <\/code>com o nome <code>spring_framework<\/code> vers\u00e3o 3.0.0. Se abrirmos a vulnerabilidade <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2014-0225\">CVE-2014-0225<\/a><\/noindex> no NVD, podemos ver a men\u00e7\u00e3o a esse CPE. O primeiro problema ao qual devemos prestar aten\u00e7\u00e3o \u00e9 que o CVE no NVD, de acordo com o CPE, informa sobre uma vulnerabilidade no framework, e n\u00e3o em um componente espec\u00edfico. Ou seja, se os desenvolvedores est\u00e3o intimamente ligados ao framework e a vulnerabilidade identificada n\u00e3o afeta os m\u00f3dulos que os desenvolvedores utilizam, o especialista em seguran\u00e7a ter\u00e1 que analisar esse CVE e considerar uma atualiza\u00e7\u00e3o.<\/p>\n<p>O URL tamb\u00e9m \u00e9 utilizado por ferramentas SCA. O formato do URL do pacote \u00e9 o seguinte:<\/p>\n<pre><code class=\"plaintext\">scheme:type\/namespace\/name@version?qualifiers#subpath<\/code><\/pre>\n<p><\/p>\n<ul>\n<li><b>S\u0441heme: <\/b>Sempre haver\u00e1 'pkg', indicando que este \u00e9 um URL de pacote (Campo Obrigat\u00f3rio)<\/li>\n<li><b>Type:<\/b> Tipo do pacote ou protocolo do pacote, por exemplo, maven, npm, nuget, gem, pypi etc. (Item obrigat\u00f3rio)<\/li>\n<li><b>Namespace:<\/b> Algum prefixo do nome, como o identificador do grupo Maven, propriet\u00e1rio da imagem Docker, usu\u00e1rio ou organiza\u00e7\u00e3o do GitHub. Opcional e depende do tipo.<\/li>\n<li><b>Name:<\/b> Nome do pacote (Item obrigat\u00f3rio)<\/li>\n<li><b>Version:<\/b> Vers\u00e3o do pacote<\/li>\n<li><b>Qualifiers:<\/b> Dados qualificativos adicionais para o pacote, como sistema operacional, arquitetura, distribui\u00e7\u00e3o, etc. Opcional e dependente do tipo de item.<\/li>\n<li><b>Subcaminho:<\/b> Caminho adicional no pacote em rela\u00e7\u00e3o ao raiz do pacote<\/li>\n<\/ul>\n<p>\nPor exemplo:<\/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 aceita Bill of Materials (BOM) prontos <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/CycloneDX\">CycloneDX<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/spdx.org\/licenses\/\">SPDX<\/a><\/noindex>, ou seja, especifica\u00e7\u00f5es prontas sobre as depend\u00eancias existentes. Este \u00e9 um arquivo XML que descreve as depend\u00eancias \u2014 nome, hashes, URL do pacote, editor, licen\u00e7a. Em seguida, o Dependency Track analisa o BOM, verifica as depend\u00eancias identificadas em busca de CVEs em um banco de dados de vulnerabilidades (NVD, Sonatype OSS Index \u2026), ap\u00f3s o que constr\u00f3i gr\u00e1ficos, calcula m\u00e9tricas, atualizando regularmente as informa\u00e7\u00f5es sobre o status das vulnerabilidades dos componentes. <\/p>\n<p>Um exemplo de como um BOM pode parecer em 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      <!-- Mais componentes aqui --><\/code><\/pre>\n<p>\nO BOM pode ser utilizado n\u00e3o apenas como par\u00e2metros de entrada para o Dependency Track, mas tamb\u00e9m para inventariar componentes de software na cadeia de suprimento, por exemplo, para fornecer ao cliente do software. Em 2014, um projeto de lei foi at\u00e9 proposto nos EUA <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 estipulava que ao adquirir software, qualquer \u00f3rg\u00e3o p\u00fablico deveria solicitar um BOM para evitar o uso de componentes vulner\u00e1veis, no entanto, o ato n\u00e3o foi implementado.<\/p>\n<p>Voltando ao SCA, o Dependency Track tem integra\u00e7\u00f5es prontas com Plataformas de Notifica\u00e7\u00e3o como Slack, sistemas de gerenciamento de vulnerabilidades como Kenna Security. Vale tamb\u00e9m mencionar que o Dependency Track identifica vers\u00f5es desatualizadas de pacotes e fornece informa\u00e7\u00f5es sobre licen\u00e7as (gra\u00e7as ao suporte a SPDX).<\/p>\n<p>Quando se trata de qualidade SCA, h\u00e1 uma diferen\u00e7a fundamental aqui.<\/p>\n<p>O Dependency Track n\u00e3o aceita um projeto como entrada, mas sim um BOM. Isso significa que, se quisermos verificar um projeto, primeiro precisamos gerar um bom.xml, por exemplo, usando o CycloneDX. Assim, o Dependency Track depende diretamente do CycloneDX. Ao mesmo tempo, isso permite personaliza\u00e7\u00e3o. A equipe da OZON escreveu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ozonru\/cyclonedx-go\">o m\u00f3dulo CycloneDX<\/a><\/noindex> para construir arquivos BOM para projetos em Golang com o objetivo de posterior varredura atrav\u00e9s do Dependency Track.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/sonatype.ru\/#nexusiq\">Nexus IQ<\/a><\/noindex> \u00e9 uma solu\u00e7\u00e3o comercial de SCA da Sonatype, que faz parte do ecossistema Sonatype, que tamb\u00e9m inclui o Nexus Repository Manager. O Nexus IQ pode aceitar como entrada tanto arquivos war (para projetos Java) atrav\u00e9s da interface web ou API, quanto BOM, se sua organiza\u00e7\u00e3o n\u00e3o tiver conseguido migrar do CycloneDX para a nova solu\u00e7\u00e3o. Ao contr\u00e1rio das solu\u00e7\u00f5es de c\u00f3digo aberto, o IQ n\u00e3o apenas consulta o CP\/PURL do componente identificado e a vulnerabilidade correspondente no banco de dados, mas tamb\u00e9m considera pesquisas pr\u00f3prias, como o nome da fun\u00e7\u00e3o ou classe vulner\u00e1vel. Os mecanismos do IQ ser\u00e3o discutidos mais tarde ao analisar os resultados.<\/p>\n<p>Vamos resumir algumas conclus\u00f5es sobre as caracter\u00edsticas funcionais, bem como revisar as linguagens suportadas para an\u00e1lise:<\/p>\n<p>Linguagem<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>\nFuncionalidades<\/p>\n<p>Funcionalidades<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Capacidade de garantir a verifica\u00e7\u00e3o de componentes usados no c\u00f3digo-fonte quanto \u00e0 conformidade de licenciamento<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Capacidade de escanear e analisar em busca de vulnerabilidades e conformidade de licenciamento para imagens Docker<br \/>\n+ Integra\u00e7\u00e3o com Clair<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Capacidade de configurar pol\u00edticas de seguran\u00e7a para o uso de bibliotecas de c\u00f3digo aberto<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Capacidade de escanear reposit\u00f3rios de c\u00f3digo aberto em busca de componentes vulner\u00e1veis<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>Exist\u00eancia de um grupo de pesquisa especializado<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Opera\u00e7\u00e3o em contornos fechados<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Uso de bancos de dados de terceiros<br \/>\n+ Banco de dados privado da Sonatype<br \/>\n+ Sonatype OSS, NPM Public Advisors<br \/>\n+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, suporte a banco de dados de vulnerabilidades pr\u00f3prio<\/p>\n<p>Capacidade de filtrar componentes de c\u00f3digo aberto ao tentar carreg\u00e1-los no contorno de desenvolvimento de acordo com as pol\u00edticas configuradas<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Recomenda\u00e7\u00f5es para corrigir vulnerabilidades, com links para a corre\u00e7\u00e3o<br \/>\n+<br \/>\n+- (depende da descri\u00e7\u00e3o em bases p\u00fablicas)<br \/>\n+- (depende da descri\u00e7\u00e3o em bases p\u00fablicas)<\/p>\n<p>Classifica\u00e7\u00e3o das vulnerabilidades detectadas por grau de criticidade<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Modelo de acesso baseado em fun\u00e7\u00f5es<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Suporte \u00e0 interface de linha de comando CLI<br \/>\n+<br \/>\n+<br \/>\n+- (apenas para CycloneDX)<\/p>\n<p>Sele\u00e7\u00e3o \/ ordena\u00e7\u00e3o de vulnerabilidades de acordo com crit\u00e9rios definidos<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Dashboard do estado das aplica\u00e7\u00f5es<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Gera\u00e7\u00e3o de relat\u00f3rios em formato PDF<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Gera\u00e7\u00e3o de relat\u00f3rios em formato JSONCSV<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>Suporte ao idioma russo<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nOportunidades de integra\u00e7\u00e3o<\/p>\n<p>Integra\u00e7\u00e3o<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Integra\u00e7\u00e3o com LDAP \/ Active Directory<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Integra\u00e7\u00e3o com o sistema de integra\u00e7\u00e3o cont\u00ednua (continous integration) Bamboo<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integra\u00e7\u00e3o com o sistema de integra\u00e7\u00e3o cont\u00ednua (continous integration) TeamCity<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integra\u00e7\u00e3o com o sistema de integra\u00e7\u00e3o cont\u00ednua (continous integration) GitLab<br \/>\n+<br \/>\n+- (na forma de um plugin para GitLab)<br \/>\n+<\/p>\n<p>Integra\u00e7\u00e3o com o sistema de integra\u00e7\u00e3o cont\u00ednua (continous integration) Jenkins<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Disponibilidade de plugins para IDE<br \/>\n+ IntelliJ, Eclipse, Visual Studio<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Suporte \u00e0 integra\u00e7\u00e3o personalizada atrav\u00e9s de web-services (API) da ferramenta<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<h3>Dependency Check<\/h3>\n<p><\/p>\n<h4>Primeira execu\u00e7\u00e3o<\/h4>\n<p>\nIremos executar o Dependency Check em uma aplica\u00e7\u00e3o intencionalmente vulner\u00e1vel <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appsecco\/dvja\">DVJA<\/a><\/noindex>.<\/p>\n<p>Para isso, 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, o arquivo dependency-check-report.html aparecer\u00e1 no diret\u00f3rio target.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/d5b9fe5a8eb68569387dd0bfd38af459.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAbriremos o arquivo. Ap\u00f3s as informa\u00e7\u00f5es gerais sobre o n\u00famero total de vulnerabilidades, podemos ver informa\u00e7\u00f5es sobre vulnerabilidades de alto n\u00edvel de severidade e confian\u00e7a, indicando pacote, CPE e n\u00famero CVE.<\/p>\n<p>Em seguida, vem informa\u00e7\u00f5es mais detalhadas, incluindo a base para a decis\u00e3o tomada (evidence), ou seja, um BOM.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/53dd89b0ff20c4c51aaf7412399e7fd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDepois, temos CPE, PURL e descri\u00e7\u00e3o do CVE. As recomenda\u00e7\u00f5es para corre\u00e7\u00e3o n\u00e3o est\u00e3o inclu\u00eddas, pois n\u00e3o existem na base NVD.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/ba2021aa8b6bf175383298b2c2a71670.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPara uma visualiza\u00e7\u00e3o sistem\u00e1tica dos resultados da varredura, pode-se configurar o Nginx com configura\u00e7\u00f5es m\u00ednimas ou enviar os defeitos obtidos para um sistema de gerenciamento de defeitos que suporte conectores para o Dependency Check. Por exemplo, o Defect Dojo. <\/p>\n<h3>Dependency Track<\/h3>\n<p><\/p>\n<h4>Instala\u00e7\u00e3o<\/h4>\n<p>\nDependency Track, por sua vez, \u00e9 uma plataforma web com gr\u00e1ficos, portanto, a quest\u00e3o cr\u00edtica do armazenamento de defeitos em uma solu\u00e7\u00e3o externa n\u00e3o \u00e9 relevante aqui. <br \/>\nOs seguintes cen\u00e1rios suportados est\u00e3o dispon\u00edveis para instala\u00e7\u00e3o: Docker, WAR, Executable WAR. <\/p>\n<h4>Primeira execu\u00e7\u00e3o<\/h4>\n<p>\nAcesse a URL do servi\u00e7o iniciado. Entre com admin\/admin, altere o login e senha, ap\u00f3s o que voc\u00ea ter\u00e1 acesso ao Dashboard. A pr\u00f3xima a\u00e7\u00e3o ser\u00e1 criar um projeto para um aplicativo de teste em Java em<i> Home\/Projects \u2192 Criar Projeto <\/i>Como exemplo, vamos usar DVJA.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/338aaa1c9ca0ac99f2e857f8ce001a02.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo o Dependency Track pode aceitar apenas BOM como entrada, precisamos obter esse BOM. Vamos usar <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>\nObtemos bom.xml e carregamos o arquivo no projeto criado <i>DVJA \u2192 Depend\u00eancias \u2192 Carregar BOM<\/i>.<\/p>\n<p>Vamos em Administra\u00e7\u00e3o \u2192 Analisadores. Sabemos que temos apenas o Analisador Interno ativado, que inclui o NVD. Tamb\u00e9m conectaremos o Sonatype OSS Index.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/3879a9a3d5f227d9740a984e7b1b91b2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAssim, teremos a seguinte vis\u00e3o para nosso projeto:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/004f2ab3383acb87e3d5e8c0fba1f3c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTamb\u00e9m na lista podemos encontrar uma vulnerabilidade aplic\u00e1vel ao Sonatype OSS:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/e459f08218f890b46fb4050c30da63c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA principal decep\u00e7\u00e3o foi que o Dependency Track n\u00e3o aceita mais relat\u00f3rios em xml do Dependency Check. As \u00faltimas vers\u00f5es suportadas de integra\u00e7\u00e3o com o Dependency Check foram 1.0.0 \u2014 4.0.2, enquanto testei a 5.3.2.<\/p>\n<p>Aqui <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d2WMONyBbTw\">v\u00eddeo<\/a><\/noindex> (e <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/IPWPISSk5rc\">aqui<\/a><\/noindex>), quando isso ainda era poss\u00edvel. <\/p>\n<h3>Nexus IQ <\/h3>\n<p><\/p>\n<h4>Primeira execu\u00e7\u00e3o<\/h4>\n<p>\nA instala\u00e7\u00e3o do Nexus IQ \u00e9 feita a partir de arquivos compactados <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/iqserver\/installing\/iq-server-installation\">documenta\u00e7\u00e3o<\/a><\/noindex>, mas n\u00f3s, para esses fins, criamos uma imagem Docker.<\/p>\n<p>Ap\u00f3s entrar no console, \u00e9 necess\u00e1rio criar uma Organiza\u00e7\u00e3o e um Aplicativo.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/4c6df91bad77e87ea066ff3514a03644.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/d8580ba46852e4d97625a22e215c21d3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/d99ce4e47218001fd1a76722e2633bea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo podemos ver, a configura\u00e7\u00e3o no caso do IQ \u00e9 um pouco mais complicada, pois tamb\u00e9m precisamos criar pol\u00edticas aplic\u00e1veis para diferentes \u201cest\u00e1gios\u201d (dev, build, stage, release). Isso \u00e9 necess\u00e1rio para bloquear componentes vulner\u00e1veis \u00e0 medida que avan\u00e7amos pelo pipeline em dire\u00e7\u00e3o \u00e0 produ\u00e7\u00e3o, ou para bloquear assim que eles entram no Nexus Repo ao serem baixados pelos desenvolvedores.<\/p>\n<p>Para sentir a diferen\u00e7a entre open source e enterprise, realizaremos a mesma varredura atrav\u00e9s do Nexus IQ, de forma semelhante a <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/integrations\/sonatype-clm-for-maven\">Maven plugin<\/a><\/noindex>, criando previamente um aplicativo de teste na interface do 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>\nAcessamos a URL do relat\u00f3rio gerado na interface web do IQ:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/f81f998037ba53ef62298955077d044d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAqui podemos ver todas as viola\u00e7\u00f5es de pol\u00edtica com diferentes n\u00edveis de gravidade (de Info a Security Critical). A letra D ao lado do componente significa que ele \u00e9 uma Depend\u00eancia Direta, enquanto a letra T ao lado do componente indica que ele \u00e9 uma Depend\u00eancia Transitiva.<\/p>\n<p>Ali\u00e1s, o relat\u00f3rio <noindex><a rel=\"nofollow\" href=\"https:\/\/snyk.io\/open-source-security\/\">State of Open Source Security Report 2020<\/a><\/noindex> da Snyk informa que mais de 70% das vulnerabilidades de open source encontradas em Node.js, Java e Ruby est\u00e3o em depend\u00eancias transitivas.<\/p>\n<p>Ao abrir uma das viola\u00e7\u00f5es da pol\u00edtica Nexus IQ, podemos ver a descri\u00e7\u00e3o do componente, bem como o Gr\u00e1fico de Vers\u00f5es, que mostra a localiza\u00e7\u00e3o da vers\u00e3o atual em uma linha do tempo, al\u00e9m de quando a vulnerabilidade deixa de ser vulner\u00e1vel. A altura das velas no gr\u00e1fico indica a popularidade do uso deste componente.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/d33968a5ce5904da6f50133f882521fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe voc\u00ea acessar a se\u00e7\u00e3o de vulnerabilidades e expandir o CVE, pode ler a descri\u00e7\u00e3o dessa vulnerabilidade, as recomenda\u00e7\u00f5es para mitiga\u00e7\u00e3o e a raz\u00e3o pela qual este componente foi classificado como uma viola\u00e7\u00e3o, ou seja, a presen\u00e7a do tipo <code>DiskFileitem.class<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/6d91b98a9a9a1a62264f1b4194f33ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/c9e580ad178a9c0307ed1e63d6dd244d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVamos resumir apenas os componentes externos do Java, removendo os componentes js. Entre par\u00eanteses, indicaremos o n\u00famero de vulnerabilidades que foram encontradas fora da NVD.<\/p>\n<p><b>Total do Nexus IQ: <\/b><\/p>\n<ul>\n<li>Depend\u00eancias Analisadas: 62<\/li>\n<li>Depend\u00eancias Vulner\u00e1veis: 16<\/li>\n<li>Vulnerabilidades Encontradas: 42 (8 banco de dados sonatype)<\/li>\n<\/ul>\n<p>\n<b>Total da Verifica\u00e7\u00e3o de Depend\u00eancias: <\/b><\/p>\n<ul>\n<li>Depend\u00eancias Analisadas: 47<\/li>\n<li>Depend\u00eancias Vulner\u00e1veis: 13<\/li>\n<li>Vulnerabilidades Encontradas: 91 (14 sonatype oss)<\/li>\n<\/ul>\n<p>\n<b>Total do Monitoramento de Depend\u00eancias: <\/b><\/p>\n<ul>\n<li>Depend\u00eancias Analisadas: 59<\/li>\n<li>Depend\u00eancias Vulner\u00e1veis: 10<\/li>\n<li>Vulnerabilidades Encontradas: 51 (1 sonatype oss)<\/li>\n<\/ul>\n<p>\nNo pr\u00f3ximo passo, analisaremos os resultados obtidos e entenderemos quais dessas vulnerabilidades representam um defeito real e quais s\u00e3o falsos positivos.<\/p>\n<h3>Isen\u00e7\u00e3o de responsabilidade<\/h3>\n<p>\nEsta revis\u00e3o n\u00e3o \u00e9 uma verdade indiscut\u00edvel. O autor n\u00e3o pretendia destacar uma ferramenta em particular em rela\u00e7\u00e3o a outras. O objetivo da revis\u00e3o era mostrar os mecanismos de funcionamento das ferramentas SCA e as maneiras de verificar seus resultados.<\/p>\n<h3>Compara\u00e7\u00e3o de Resultados<\/h3>\n<p>\n<b>Condi\u00e7\u00f5es:<\/b><\/p>\n<p><b>Um falso positivo em rela\u00e7\u00e3o a vulnerabilidades de componentes externos \u00e9:<\/b><\/p>\n<ul>\n<li><b>Incongru\u00eancia do CVE com o componente identificado<\/b><\/li>\n<li>Por exemplo, se uma vulnerabilidade \u00e9 identificada no framework struts2 e a ferramenta indica o componente do framework struts-tiles, que n\u00e3o est\u00e1 relacionado a essa vulnerabilidade, isso \u00e9 um falso positivo.<\/li>\n<li><b>Incongru\u00eancia do CVE com a vers\u00e3o identificada do componente<\/b><\/li>\n<li>Por exemplo, uma vulnerabilidade est\u00e1 associada a vers\u00f5es do python &gt; 3.5 e a ferramenta marca a vers\u00e3o 2.7 como vulner\u00e1vel \u2014 isso \u00e9 um falso positivo, pois a vulnerabilidade realmente se aplica apenas \u00e0 linha do produto 3.x. <\/li>\n<li> <b>Duplica\u00e7\u00e3o de CVE<\/b><\/li>\n<li>Por exemplo, se a SCA indicou um CVE que permite a execu\u00e7\u00e3o remota de c\u00f3digo, e depois a SCA indica para o mesmo componente um CVE aplic\u00e1vel a produtos Cisco afetados por esse RCE. Nesse caso, ser\u00e1 um falso positivo.<\/li>\n<li>Por exemplo, uma CVE foi encontrada no componente spring-web, ap\u00f3s o qual a SCA indica esta mesma CVE em outros componentes do frameworks Spring Framework, enquanto a CVE n\u00e3o se relaciona com outros componentes. Nesse caso, haver\u00e1 um falso positivo. <\/li>\n<\/ul>\n<p>\nO objeto de estudo escolhido foi o projeto Open Source DVJA. A pesquisa envolveu apenas componentes Java (sem js).<\/p>\n<h3>Resultados resumidos<\/h3>\n<p>\nVamos direto para os resultados da revis\u00e3o manual das vulnerabilidades identificadas. O relat\u00f3rio completo para cada CVE pode ser consultado no Ap\u00eandice. <\/p>\n<p><i>Resultados resumidos para todas as vulnerabilidades:<\/i><\/p>\n<p>Par\u00e2metro<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Total de vulnerabilidades identificadas<br \/>\n42<br \/>\n91<br \/>\n51<\/p>\n<p>Vulnerabilidades erroneamente identificadas (falso positivo)<br \/>\n2(4.76%)<br \/>\n62(68,13%)<br \/>\n29(56.86%)<\/p>\n<p>Vulnerabilidades relevantes n\u00e3o detectadas (falso negativo)<br \/>\n10<br \/>\n20<br \/>\n27<\/p>\n<p>\n<i>Resultados resumidos por componentes:<\/i><\/p>\n<p>Par\u00e2metro<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 vulner\u00e1veis<br \/>\n16<br \/>\n13<br \/>\n10<\/p>\n<p>Componentes vulner\u00e1veis erroneamente identificados (falso positivo)<br \/>\n1<br \/>\n5<br \/>\n0<\/p>\n<p>Componentes vulner\u00e1veis erroneamente identificados (falso positivo)<br \/>\n0<br \/>\n6<br \/>\n6<\/p>\n<p>\nVamos construir gr\u00e1ficos visuais para avaliar a rela\u00e7\u00e3o entre falsos positivos e falsos negativos em rela\u00e7\u00e3o ao n\u00famero total de vulnerabilidades. Os componentes est\u00e3o marcados horizontalmente, e as vulnerabilidades identificadas est\u00e3o marcadas verticalmente. <\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/967b8e168383299d4a1bf4065f1905ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/2e128ee59e551894c25e4c9e28997008.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/585d7bcef052ef24e4de6c7e1a4e7c0b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPara compara\u00e7\u00e3o, uma pesquisa similar foi conduzida pela equipe da Sonatype testando um projeto de 1531 componentes usando o OWASP Dependency Check. Como podemos ver, a propor\u00e7\u00e3o de ru\u00eddo para acertos corretos \u00e9 equivalente aos nossos resultados.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/286c34b84f1400af0285b711b3fe87f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Fonte: <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>Vamos examinar algumas CVEs dos resultados da nossa digitaliza\u00e7\u00e3o para entender a raz\u00e3o desses resultados.<\/p>\n<h3>Saiba mais<\/h3>\n<p><\/p>\n<h4>\u21161<\/h4>\n<p>\nVamos analisar primeiro alguns pontos interessantes do Sonatype Nexus IQ.<\/p>\n<p>O Nexus IQ indica um problema com a desserializa\u00e7\u00e3o com a possibilidade de executar RCE no Spring Framework v\u00e1rias vezes. CVE-2016-1000027 em spring-web:3.0.5 pela primeira vez, e CVE-2011-2894 em spring-context:3.0.5 e spring-core:3.0.5. A princ\u00edpio, parece que h\u00e1 uma duplica\u00e7\u00e3o da vulnerabilidade por v\u00e1rias CVEs. Pois, ao olhar CVE-2016-1000027 e CVE-2011-2894 na base NVD, parece tudo claro.<\/p>\n<p>Componente<br \/>\nVulnerabilidade<\/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>\nDescri\u00e7\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2011-2894\">CVE-2011-2894<\/a><\/noindex> do NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/31b403eca6d7541c766c9a560bfbe6b7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDescri\u00e7\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2016-1000027\">CVE-2016-1000027<\/a><\/noindex> do NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/d5b54a6ac15070b12f013eaacd2878f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA CVE-2011-2894 em si \u00e9 bastante conhecida. No relat\u00f3rio <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pwntester.com\/blog\/2013\/12\/16\/cve-2011-2894-deserialization-spring-rce\/\">White Source de 2011<\/a><\/noindex> essa CVE foi reconhecida como uma das mais frequentes. As descri\u00e7\u00f5es para a CVE-2016-100027 em princ\u00edpio s\u00e3o escassas na NVD e parece se aplicar apenas ao Spring Framework 4.1.4. Vamos olhar para <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">refer\u00eancia<\/a><\/noindex> e aqui tudo come\u00e7a a ficar mais ou menos claro. A partir da <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">artigo da Tenable<\/a><\/noindex> entendemos que al\u00e9m da vulnerabilidade em <code>RemoteInvocationSerializingExporter<\/code> na CVE-2011-2894, a vulnerabilidade tamb\u00e9m \u00e9 observada em <code>HttpInvokerServiceExporter<\/code>. \u00c9 isso que o Nexus IQ nos diz:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/a33f0853ce892d28eafafe2c8e7b2228.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNo entanto, n\u00e3o h\u00e1 nada semelhante no NVD, o que leva o Dependency Check e o Dependency Track a obter falsos negativos.<\/p>\n<p>A partir da descri\u00e7\u00e3o do CVE-2011-2894, podemos entender que a vulnerabilidade realmente est\u00e1 presente tanto em spring-context:3.0.5 quanto em spring-core:3.0.5. A confirma\u00e7\u00e3o disso pode ser encontrada em um artigo de quem descobriu essa vulnerabilidade.<\/p>\n<h4>\u21162<\/h4>\n<p><\/p>\n<p>Componente<br \/>\nVulnerabilidade<br \/>\nResultado<\/p>\n<p>struts2-core:2.3.30<br \/>\nCVE-2016-4003<br \/>\nFALSE<\/p>\n<p>\nSe analisarmos a vulnerabilidade CVE-2016-4003, entenderemos que ela foi corrigida na vers\u00e3o 2.3.28, no entanto, o Nexus IQ nos informa sobre ela. Na descri\u00e7\u00e3o da vulnerabilidade, h\u00e1 um aviso:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o de SCA. Parte um\" src=\"\/wp-content\/uploads\/2020\/08\/081f9006748083727e424b709a338d60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOu seja, a vulnerabilidade existe apenas em conjunto com uma vers\u00e3o desatualizada do JRE, sobre a qual decidiram nos alertar. No entanto, consideramos isso um falso positivo, embora n\u00e3o seja o mais s\u00e9rio.<\/p>\n<h4>\u2116 3<\/h4>\n<p><\/p>\n<p>Componente<br \/>\nVulnerabilidade<br \/>\nResultado<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\nTRUE<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-7672<br \/>\nFALSE<\/p>\n<p>\nSe olharmos a descri\u00e7\u00e3o do CVE-2017-9804 e do CVE-2017-7672, entenderemos que o problema est\u00e1 na <code>classe URLValidator<\/code>, sendo que o CVE-2017-9804 decorre do CVE-2017-7672. A presen\u00e7a da segunda vulnerabilidade n\u00e3o traz nenhuma utilidade al\u00e9m do fato de que sua gravidade aumentou para Alta, portanto, podemos considerar isso um ru\u00eddo desnecess\u00e1rio.<\/p>\n<p>No geral, n\u00e3o foram encontrados outros falsos positivos para o Nexus IQ.<\/p>\n<h3>\u21164<\/h3>\n<p>\nExistem alguns pontos que destacam o IQ em compara\u00e7\u00e3o com outras solu\u00e7\u00f5es.<\/p>\n<p>Componente<br \/>\nVulnerabilidade<br \/>\nResultado<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2020-5398<br \/>\nTRUE<\/p>\n<p>O CVE no NVD informa que ele se aplica apenas \u00e0s vers\u00f5es 5.2.x at\u00e9 5.2.3, 5.1.x at\u00e9 5.1.13 e vers\u00f5es 5.0.x at\u00e9 5.0.16, no entanto, se olharmos a descri\u00e7\u00e3o do CVE no Nexus IQ, veremos o seguinte:<br \/>\n<i>Aviso de Desvio de Assessoria: A equipe de pesquisa de seguran\u00e7a da Sonatype descobriu que essa vulnerabilidade foi introduzida na vers\u00e3o 3.0.2.RELEASE e n\u00e3o na 5.0.x, como afirmado na assessoria.<\/i><\/p>\n<p>Ap\u00f3s isso, segue um PoC para essa vulnerabilidade, que informa que ela est\u00e1 presente na vers\u00e3o 3.0.5.<\/p>\n<p>O falso negativo \u00e9 enviado para o Dependency Check e o Dependency Track.<\/p>\n<h3>\u21165<\/h3>\n<p>\nVamos olhar os falsos positivos para o Dependency Check e o Dependency Track.<\/p>\n<p>O Dependency Check se destaca por refletir os CVEs que se aplicam a todo o framework no NVD, em componentes aos quais esses CVEs n\u00e3o se aplicam. Isso se refere a CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, que o Dependency Check \"atrelou\" ao struts-taglib:1.3.8 e struts-tiles-1.3.8. Esses componentes n\u00e3o t\u00eam nada a ver com o que \u00e9 descrito no CVE \u2014 processamento de solicita\u00e7\u00f5es, valida\u00e7\u00e3o de p\u00e1ginas e assim por diante. Isso se deve ao fato de que a \u00fanica rela\u00e7\u00e3o entre esses CVEs e os componentes \u00e9 o framework, pelo que o Dependency Check os considerou uma vulnerabilidade.<\/p>\n<p>A mesma situa\u00e7\u00e3o ocorre com spring-tx:3.0.5, e uma situa\u00e7\u00e3o semelhante com struts-core:1.3.8. Para struts-core, o Dependency Check e o Dependency Track encontraram muitas vulnerabilidades que, na verdade, se aplicam ao struts2-core, que \u00e9 essencialmente um framework separado. Nesse caso, o Nexus IQ compreendeu corretamente a situa\u00e7\u00e3o e, nos CVEs que emitiu, indicou que o struts-core chegou ao fim da vida \u00fatil e \u00e9 necess\u00e1rio migrar para o struts2-core.<\/p>\n<h3>\u21166<\/h3>\n<p>\nEm algumas situa\u00e7\u00f5es, interpretar um erro expl\u00edcito do Dependency Check e do Dependency Track \u00e9 injusto. Em particular, CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, que o Dependency Check e o Dependency Track atribu\u00edram ao spring-core:3.0.5, na verdade, se referem ao spring-web:3.0.5. Parte desses CVEs foi encontrada pelo Nexus IQ, e mesmo assim o IQ os identificou corretamente como pertencentes a outro componente. O fato de que essas vulnerabilidades n\u00e3o foram encontradas no spring-core n\u00e3o significa que elas n\u00e3o existam no framework como um todo e as ferramentas de c\u00f3digo aberto apontaram corretamente essas vulnerabilidades (apenas erraram um pouco). <\/p>\n<h3>Como resultado, obtemos um servi\u00e7o de \"monitoramento como servi\u00e7o\", automatizado na linha de produ\u00e7\u00e3o de integra\u00e7\u00e3o cont\u00ednua. O desenvolvedor ou testador precisa apenas definir a lista de m\u00e9tricas em um arquivo JSON, e tudo o mais acontece automaticamente. Obtemos um controle de qualidade transparente dos lan\u00e7amentos: todas as notifica\u00e7\u00f5es sobre desempenho, consumo de recursos ou regress\u00f5es arquitet\u00f4nicas.<\/h3>\n<p>\nComo podemos ver, a valida\u00e7\u00e3o da veracidade das vulnerabilidades detectadas por meio de revis\u00f5es manuais n\u00e3o fornece resultados claros, o que gera momentos de controv\u00e9rsia. Os resultados s\u00e3o que a solu\u00e7\u00e3o Nexus IQ apresenta o menor \u00edndice de falsos positivos e a maior precis\u00e3o. <\/p>\n<p>Em primeiro lugar, isso se deve ao fato de que a equipe da Sonatype ampliou a descri\u00e7\u00e3o de cada vulnerabilidade CVE do NVD em suas bases, especificando com precis\u00e3o a classe ou fun\u00e7\u00e3o da vulnerabilidade para cada vers\u00e3o do componente, realizando pesquisas adicionais (por exemplo, testando vulnerabilidades em vers\u00f5es mais antigas de software). <\/p>\n<p>A influ\u00eancia significativa nos resultados tamb\u00e9m prov\u00e9m das vulnerabilidades que n\u00e3o foram inclu\u00eddas no NVD, mas que ainda est\u00e3o presentes na base da Sonatype com a anota\u00e7\u00e3o SONATYPE. De acordo com o relat\u00f3rio <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">O Estado das Vulnerabilidades de Seguran\u00e7a em Open Source 2020<\/a><\/noindex> sobre 45% das vulnerabilidades de c\u00f3digo aberto detectadas n\u00e3o s\u00e3o reportadas no NVD. Segundo a base de dados da WhiteSource, apenas 29% de todas as vulnerabilidades de c\u00f3digo aberto registradas fora do NVD acabam sendo publicadas nele, portanto, \u00e9 t\u00e3o importante buscar vulnerabilidades tamb\u00e9m em outras fontes.<\/p>\n<p>Como resultado, o Dependency Check gera muito ru\u00eddo, perdendo parte dos componentes vulner\u00e1veis. O Dependency Track gera menos ru\u00eddo e identifica um maior n\u00famero de componentes, o que visualmente n\u00e3o \u00e9 t\u00e3o impactante na interface web.<\/p>\n<p>No entanto, a pr\u00e1tica mostra que o open source deve ser o primeiro passo em dire\u00e7\u00e3o a um DevSecOps maduro. A primeira coisa a considerar para integrar o SCA no desenvolvimento \u00e9 a cria\u00e7\u00e3o de processos, refletindo junto \u00e0 gest\u00e3o e aos departamentos relacionados sobre como devem ser os processos ideais dentro da sua organiza\u00e7\u00e3o. Pode ser que, inicialmente, o Dependency Check ou o Dependency Track atendam a todas as necessidades do neg\u00f3cio, enquanto solu\u00e7\u00f5es empresariais se tornem uma progress\u00e3o l\u00f3gica devido ao aumento da complexidade das aplica\u00e7\u00f5es desenvolvidas.<\/p>\n<p>                        <b class=\"spoiler_title\">Ap\u00eandice A. Resultados relacionados aos componentes<\/b><br \/>\n                        <b>Legendas:<\/b><\/p>\n<ul>\n<li>High \u2014 vulnerabilidades de alto e cr\u00edtico n\u00edvel no componente<\/li>\n<li>Medium \u2014 vulnerabilidades de n\u00edvel m\u00e9dio de criticidade no componente<\/li>\n<li>TRUE \u2014 vulnerabilidade corretamente identificada (True positive issue)<\/li>\n<li>FALSE \u2014 falso positivo (False positive issue)<\/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 \/>\nTRUE<\/p>\n<p>log4j-core: 2.3<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>log4j: 1.2.14<br \/>\nAlto<br \/>\nAlto<br \/>\n\u2014<br \/>\nTRUE<\/p>\n<p>commons-collections:3.1<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>commons-codec:1:10<br \/>\nMedium<br \/>\n\u2014<br \/>\n\u2014<br \/>\nTRUE<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>spring-expression:3.0.5<br \/>\nAlto<br \/>\ncomponente n\u00e3o encontrado<\/p>\n<p>TRUE<\/p>\n<p>spring-web:3.0.5<br \/>\nAlto<br \/>\ncomponente n\u00e3o encontrado<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>spring-context:3.0.5<br \/>\nMedium<br \/>\ncomponente n\u00e3o encontrado<br \/>\n\u2014<br \/>\nTRUE<\/p>\n<p>spring-core:3.0.5<br \/>\nMedium<br \/>\nAlto<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nMedium<br \/>\n\u2014<br \/>\n\u2014<br \/>\nTRUE<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nAlto<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p>struts-core:1.3.8<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>xwork-core: 2.3.30<br \/>\nAlto<br \/>\n\u2014<br \/>\n\u2014<br \/>\nTRUE<\/p>\n<p>struts2-core: 2.3.30<br \/>\nAlto<br \/>\nAlto<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nAlto<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nAlto<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Ap\u00eandice B. Resultados relacionados \u00e0s vulnerabilidades<\/b><br \/>\n                        <b>Legendas:<\/b><\/p>\n<ul>\n<li>High \u2014 vulnerabilidades de alto e cr\u00edtico n\u00edvel no componente<\/li>\n<li>Medium \u2014 vulnerabilidades de n\u00edvel m\u00e9dio de criticidade no componente<\/li>\n<li>TRUE \u2014 vulnerabilidade corretamente identificada (True positive issue)<\/li>\n<li>FALSE \u2014 falso positivo (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Componente<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nSeveridade<br \/>\nResultado<br \/>\nComent\u00e1rio<\/p>\n<p>dom4j: 1.6.1<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>log4j-core: 2.3<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nBaixo<br \/>\nTRUE<\/p>\n<p>log4j: 1.2.14<br \/>\nCVE-2019-17571<br \/>\nCVE-2019-17571<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2020-9488<br \/>\n\u2014<br \/>\nBaixo<br \/>\nTRUE<\/p>\n<p>SONATYPE-2010-0053<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>commons-collections:3.1<br \/>\n\u2014<br \/>\nCVE-2015-6420<br \/>\nCVE-2015-6420<br \/>\nAlto<br \/>\nFALSE<br \/>\nDuplica RCE(OSSINDEX)<\/p>\n<p>\u2014<br \/>\nCVE-2017-15708<br \/>\nCVE-2017-15708<br \/>\nAlto<br \/>\nFALSE<br \/>\nDuplica RCE(OSSINDEX)<\/p>\n<p>SONATYPE-2015-0002<br \/>\nRCE (OSSINDEX)<br \/>\nRCE(OSSINDEX)<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>SONATYPE-2014-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2019-10086<br \/>\nCVE-2019-10086<br \/>\nAlto<br \/>\nFALSE<br \/>\nA vulnerabilidade \u00e9 aplic\u00e1vel apenas para vers\u00f5es 1.9.2+<\/p>\n<p>commons-codec:1:10<br \/>\nSONATYPE-2012-0050<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2019-2692<br \/>\nCVE-2019-2692<br \/>\n\u2014<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2020-2875<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\n\u00c9 a mesma vulnerabilidade que a CVE-2019-2692, mas com a adi\u00e7\u00e3o \"os ataques podem impactar significativamente produtos adicionais\"<\/p>\n<p>\u2014<br \/>\nCVE-2017-15945<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nN\u00e3o se aplica ao mysql-connector-java<\/p>\n<p>\u2014<br \/>\nCVE-2020-2933<br \/>\n\u2014<br \/>\nBaixo<br \/>\nFALSE<br \/>\nDuplicata da CVE-2020-2934<\/p>\n<p>CVE-2020-2934<br \/>\nCVE-2020-2934<br \/>\n\u2014<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-expression:3.0.5<br \/>\nCVE-2018-1270<br \/>\ncomponente n\u00e3o encontrado<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2018-1257<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2016-1000027<br \/>\ncomponente n\u00e3o encontrado<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2014-0225<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2011-2730<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>CVE-2018-1272<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2020-5398<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<br \/>\nUm exemplo ilustrativo em prol do IQ: \"A equipe de pesquisa de seguran\u00e7a da Sonatype descobriu que essa vulnerabilidade foi introduzida na vers\u00e3o 3.0.2.RELEASE e n\u00e3o na 5.0.x, conforme afirmado no aviso.\"<\/p>\n<p>CVE-2013-6429<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>CVE-2014-0054<br \/>\n\u2014<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>CVE-2013-6430<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-context:3.0.5<br \/>\nCVE-2011-2894<br \/>\ncomponente n\u00e3o encontrado<br \/>\n\u2014<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-core:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\nCVE-2011-2730<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\nMedium<br \/>\nFALSE<br \/>\nDuplicata desta mesma vulnerabilidade no spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade se aplica ao componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\nCVE-2013-6429<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade se aplica ao componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade se aplica ao componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\nCVE-2013-7315<br \/>\nMedium<br \/>\nFALSE<br \/>\nSPLIT da CVE-2013-4152. + A vulnerabilidade se aplica ao componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade se aplica ao componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nA vulnerabilidade se aplica ao componente spring-web<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nAlto<br \/>\nFALSE<br \/>\nDuplicata desta mesma vulnerabilidade no spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\nCVE-2014-1904<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade se aplica ao componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\nCVE-2014-3625<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade se aplica ao componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\nCVE-2016-9878<br \/>\nAlto<br \/>\nFALSE<br \/>\nA vulnerabilidade se aplica ao componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\nCVE-2018-1270<br \/>\nAlto<br \/>\nFALSE<br \/>\nPara spring-expression \/ spring-messages<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\nCVE-2018-1271<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade se aplica ao componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\nCVE-2018-1272<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2014-3578<br \/>\nCVE-2014-3578 (OSSINDEX)<br \/>\nCVE-2014-3578<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>SONATYPE-2015-0327<br \/>\n\u2014<br \/>\n\u2014<br \/>\nBaixo<br \/>\nTRUE<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nSONATYPE-2016-0104<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2011-2894<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nA vulnerabilidade n\u00e3o se aplica ao spring-tx<\/p>\n<p>struts-core:1.3.8<br \/>\n\u2014<br \/>\nCVE-2011-5057 (OSSINDEX)<\/p>\n<p>Medium<br \/>\nFALSO<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0391 (OSSINDEX)<br \/>\nCVE-2012-0391<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0094 (OSSINDEX)<br \/>\nCVE-2014-0094<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0113 (OSSINDEX)<br \/>\nCVE-2014-0113<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>CVE-2016-1182<br \/>\n3VE-2016-1182<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2011-5057<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0392 (OSSINDEX)<br \/>\nCVE-2012-0392<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0393 (OSSINDEX)<br \/>\nCVE-2012-0393<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>CVE-2015-0899<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2012-0394<br \/>\nCVE-2012-0394<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0838 (OSSINDEX)<br \/>\nCVE-2012-0838<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1965 (OSSINDEX)<br \/>\nCVE-2013-1965<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1966 (OSSINDEX)<br \/>\nCVE-2013-1966<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\nCVE-2013-2115<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2134 (OSSINDEX)<br \/>\nCVE-2013-2134<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2135 (OSSINDEX)<br \/>\nCVE-2013-2135<br \/>\nAlto<br \/>\nFALSO<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>CVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\nCVE-2015-2992<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2016-0785 (OSSINDEX)<br \/>\nCVE-2016-0785<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>CVE-2016-1181<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2016-4003 (OSSINDEX)<br \/>\nCVE-2016-4003<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilidade para Struts 2<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>SONATYPE-2017-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2017-7672<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nDuplicado de CVE-2017-9804<\/p>\n<p>SONATYPE-2016-0127<br \/>\n\u2014<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>struts2-core:2.3.30<br \/>\n\u2014<br \/>\nCVE-2016-6795<br \/>\nCVE-2016-6795<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9787<br \/>\nCVE-2017-9787<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9791<br \/>\nCVE-2017-9791<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9793<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nDuplicado de CVE-2018-1327<\/p>\n<p>\u2014<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9805<br \/>\nCVE-2017-9805<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2016-4003<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nAplic\u00e1vel ao Apache Struts 2.x at\u00e9 2.3.28, mas esta \u00e9 a vers\u00e3o 2.3.30. No entanto, de acordo com a descri\u00e7\u00e3o, o CVE se aplica a todas as vers\u00f5es do Struts 2, se JRE 1.7 ou inferior for utilizado. Parece que aqui decidiram se prevenir, mas parece mais que \u00e9 um FALSO positivo.<\/p>\n<p>\u2014<br \/>\nCVE-2018-1327<br \/>\nCVE-2018-1327<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nAlto<br \/>\nTRUE<br \/>\nA vulnerabilidade que foi explorada por criminosos na Equifax em 2017<\/p>\n<p>CVE-2017-12611<br \/>\nCVE-2017-12611<br \/>\n\u2014<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>CVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nPara commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nN\u00e3o se aplica a taglib<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nAplica-se a struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nN\u00e3o se aplica a taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nN\u00e3o se aplica a taglib<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nSobre commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nN\u00e3o se aplica a tiles<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nPara struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nN\u00e3o se aplica a taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nN\u00e3o se aplica a taglib<\/p>\n<p>Fonte: <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.3 - 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\/pt\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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: princ\u00edpios de opera\u00e7\u00e3o e compara\u00e7\u00e3o SCA. Parte um | ProHoster","description":"Import\u00e2ncia da an\u00e1lise de componentes de software de terceiros (en)","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/92519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=92519"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/92519\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/92520"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=92519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=92519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=92519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}