{"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\/it\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","title":{"rendered":"DevSecOps: principi di funzionamento e confronto SCA. Parte prima","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>L'importanza dell'analisi dei componenti software di terze parti (inglese: Software Composition Analysis - SCA) nel processo di sviluppo cresce man mano che vengono pubblicati annualmente rapporti sulle vulnerabilit\u00e0 delle librerie open source dalle aziende Synopsys, Sonatype, Snyk, White Source. Secondo il rapporto <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">La situazione delle vulnerabilit\u00e0 di sicurezza nel software open source 2020<\/a><\/noindex> il numero di vulnerabilit\u00e0 scoperte nel software open source nel 2019 \u00e8 aumentato di quasi 1,5 volte rispetto all'anno precedente, mentre i componenti open source sono utilizzati nel 60% - 80% dei progetti. Secondo un parere indipendente, i processi SCA rappresentano una pratica separata all'interno degli standard OWASP SAMM e BSIMM come indicatore di maturit\u00e0, e nella prima met\u00e0 del 2020, OWASP ha pubblicato un nuovo standard, l'OWASP Software Component Verification Standard (SCVS), che fornisce le migliori pratiche per la verifica dei componenti di terze parti nella catena di approvvigionamento software.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" 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 dei casi pi\u00f9 emblematici <noindex><a rel=\"nofollow\" href=\"https:\/\/xakep.ru\/2017\/09\/14\/equifax-dejstvitelno-vzlomali-cherez-bag-v-apache-struts-no-uyazvimost-okazalas-staroj\/\">\u00e8 avvenuto<\/a><\/noindex> con l'azienda Equifax nel maggio 2017. Sconosciuti hacker hanno ottenuto informazioni su 143 milioni di americani, incluse le loro nomi completi, indirizzi, numeri di previdenza sociale e patenti di guida. In 209.000 casi, nei documenti era anche presente l'informazione sulle carte di credito delle vittime. Questa violazione \u00e8 avvenuta a seguito dello sfruttamento di una vulnerabilit\u00e0 critica in Apache Struts 2 (CVE-2017-5638), mentre la patch era stata rilasciata gi\u00e0 a marzo 2017. L'azienda aveva due mesi per installare l'aggiornamento, ma nessuno si \u00e8 preoccupato di farlo.<\/p>\n<p>In questo articolo si discuter\u00e0 della scelta dello strumento per condurre la SCA dal punto di vista della qualit\u00e0 dei risultati dell'analisi. Sar\u00e0 anche fornito un confronto funzionale degli strumenti. Il processo di integrazione in CI\/CD e le possibilit\u00e0 di integrazione saranno trattati in pubblicazioni successive. Una vasta lista di strumenti \u00e8 stata presentata da OWASP <noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-community\/Component_Analysis\">sul proprio sito<\/a><\/noindex>, ma nel presente studio ci concentreremo solo sullo strumento open source pi\u00f9 popolare, Dependency Check, sulla piattaforma open source meno conosciuta Dependency Track e sulla soluzione enterprise Sonatype Nexus IQ. Analizzeremo anche come funzionano queste soluzioni e confronteremo i risultati ottenuti riguardo ai falsi positivi.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/0580758082abd9950aa9c483d546f1ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Il principio di funzionamento<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/jeremylong.github.io\/DependencyCheck\/\">Dependency Check<\/a><\/noindex> \u00e8 uno strumento (CLI, maven, modulo jenkins, ant) che analizza i file del progetto, raccoglie frammenti di informazioni sulle dipendenze (nome pacchetto, groupid, titolo specifica, versione\u2026), costruisce una stringa CPE \u2014 (Common Platform Enumeration), Package URL (PURL) e identifica per CPE\/PURL vulnerabilit\u00e0 da database (NVD, Sonatype OSS Index, NPM Audit API\u2026), dopodich\u00e9 genera un rapporto una tantum in formato HTML, JSON, XML\u2026<\/p>\n<p>Vediamo come appare 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>Part:<\/b> Indicazione che il componente riguarda un'applicazione (a), un sistema operativo (o), hardware (h) (Punto obbligatorio)<\/li>\n<li><b>Vendor:<\/b> Nome del produttore del prodotto (Punto obbligatorio)<\/li>\n<li><b>Product:<\/b> Nome del prodotto (Punto obbligatorio)<\/li>\n<li><b>Versione:<\/b> Versione del componente (Punto obsoleto)<\/li>\n<li><b>Aggiornamento:<\/b> Aggiornamento del pacchetto<\/li>\n<li><b>Edition:<\/b> Versione ereditata (Punto obsoleto)<\/li>\n<li><b>Language:<\/b> Lingua definita in RFC-5646<\/li>\n<li><b>SW Edition:<\/b> Versione del software<\/li>\n<li><b>Target SW:<\/b> Ambiente software in cui opera il prodotto<\/li>\n<li><b>Target HW:<\/b> Ambiente hardware in cui opera il prodotto<\/li>\n<li><b>Other:<\/b> Informazioni sul fornitore o sul prodotto<\/li>\n<\/ul>\n<p>\nUn esempio di CPE appare nel seguente modo:<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*<\/code><\/pre>\n<p>\nLa stringa indica che il CPE versione 2.3 descrive un componente di applicazione del produttore <code>pivotal_software <\/code>con il nome <code>spring_framework<\/code> versione 3.0.0. Se apriamo la vulnerabilit\u00e0 <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2014-0225\">CVE-2014-0225<\/a><\/noindex> in NVD, possiamo vedere un riferimento a questo CPE. Il primo problema su cui vale la pena prestare attenzione \u00e8 che il CVE in NVD, secondo il CPE, segnala la presenza di un problema nel framework, e non in un componente specifico. Cio\u00e8, se gli sviluppatori sono fortemente legati al framework e la vulnerabilit\u00e0 identificata non riguarda i moduli usati dagli sviluppatori, il professionista della sicurezza dovr\u00e0 comunque analizzare questo CVE e considerare un aggiornamento.<\/p>\n<p>L'URL \u00e8 inoltre utilizzato dagli strumenti SCA. Il formato dell'URL del pacchetto \u00e8 il seguente:<\/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>Ci sar\u00e0 sempre 'pkg' che indica l'indirizzo URL del pacchetto (Elemento obbligatorio)<\/li>\n<li><b>Type:<\/b> \u00abTipo\u00bb del pacchetto o \u00abprotocollo\u00bb del pacchetto, ad esempio maven, npm, nuget, gem, pypi ecc. (Punto obbligatorio)<\/li>\n<li><b>Namespace:<\/b> Un prefisso del nome, come l'identificatore del gruppo Maven, il proprietario dell'immagine Docker, l'utente o l'organizzazione GitHub. Facoltativo e dipende dal tipo.<\/li>\n<li><b>Nome:<\/b> Nome del pacchetto (Punto obbligatorio)<\/li>\n<li><b>Versione:<\/b> Versione del pacchetto<\/li>\n<li><b>Qualifiers:<\/b> Dati di qualificazione aggiuntivi per il pacchetto, come SO, architettura, distribuzione, ecc. Non obbligatori e dipendenti dal tipo di voce.<\/li>\n<li><b>Sotto percorso:<\/b> Percorso aggiuntivo nel pacchetto relativo alla radice del pacchetto<\/li>\n<\/ul>\n<p>\nAd esempio:<\/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 piattaforma web on-premise che accetta Bill of Materials (BOM) gi\u00e0 formati <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>, ovvero specifiche pronte delle dipendenze esistenti. Questo \u00e8 un file XML con descrizione delle dipendenze \u2014 nome, hash, url del pacchetto, editore, licenza. Successivamente, Dependency Track analizza il BOM, verifica le dipendenze identificate contro le vulnerabilit\u00e0 CVE nel database delle vulnerabilit\u00e0 (NVD, Sonatype OSS Index \u2026), quindi costruisce grafici e calcola metriche, aggiornando regolarmente i dati sullo stato delle vulnerabilit\u00e0 dei componenti. <\/p>\n<p>Esempio di come potrebbe apparire un BOM in 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>\nIl BOM pu\u00f2 essere utilizzato non solo come parametri di ingresso per Dependency Track, ma anche per l'inventario dei componenti software nella catena di fornitura, ad esempio, per fornire al cliente software. Nel 2014, negli Stati Uniti \u00e8 stata persino proposta una legge <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>, che stabiliva che, all'acquisto di software, qualsiasi ente pubblico dovesse richiedere un BOM per prevenire l'uso di componenti vulnerabili; tuttavia, la legge non \u00e8 mai entrata in vigore.<\/p>\n<p>Tornando a SCA, Dependency Track ha integrazioni pronte con le piattaforme di notifica come Slack e con sistemi di gestione delle vulnerabilit\u00e0 come Kenna Security. Va anche detto che Dependency Track identifica versioni obsolete dei pacchetti e fornisce informazioni sulle licenze (grazie al supporto di SPDX).<\/p>\n<p>Se si parla specificamente della qualit\u00e0 SCA, qui c'\u00e8 una differenza fondamentale.<\/p>\n<p>Dependency Track non accetta il progetto come input, ma accetta precisamente il BOM. Questo significa che se vogliamo verificare il progetto, prima dobbiamo generare bom.xml, ad esempio, utilizzando CycloneDX. In questo modo, Dependency Track dipende direttamente da CycloneDX. Allo stesso tempo, ci\u00f2 consente la personalizzazione. Cos\u00ec, il team di OZON ha scritto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ozonru\/cyclonedx-go\">il modulo CycloneDX<\/a><\/noindex> per la creazione di file BOM per progetti in Golang al fine di effettuare una successiva scansione tramite Dependency Track.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/sonatype.ru\/#nexusiq\">Nexus IQ<\/a><\/noindex> \u00e8 una soluzione SCA commerciale offerta da Sonatype, che fa parte dell'ecosistema Sonatype, al quale appartiene anche Nexus Repository Manager. Nexus IQ pu\u00f2 accettare come input sia archivi war (per i progetti java) tramite l'interfaccia web o API, sia BOM, se la vostra organizzazione non \u00e8 riuscita a passare da CycloneDX a una nuova soluzione. A differenza delle soluzioni open source, IQ non si basa solo su CP\/PURL della componente identificata e sulla relativa vulnerabilit\u00e0 nel database, ma considera anche le proprie ricerche, ad esempio, il nome della funzione o della classe vulnerabile. I meccanismi di IQ saranno esaminati pi\u00f9 avanti nell'analisi dei risultati.<\/p>\n<p>Riassumiamo alcune conclusioni sulle caratteristiche funzionali e vediamo anche i linguaggi supportati per l'analisi:<\/p>\n<p>Lingua<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&#8212;<\/p>\n<p>C#<br \/>\n+<br \/>\n+<br \/>\n&#8212;<\/p>\n<p>.Net<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Erlang<br \/>\n&#8212;<br \/>\n&#8212;<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&#8212;<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Scala<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Objective C<br \/>\n+<br \/>\n+<br \/>\n&#8212;<\/p>\n<p>Swift<br \/>\n+<br \/>\n+<br \/>\n&#8212;<\/p>\n<p>R<br \/>\n+<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Go<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>\nFunzionalit\u00e0<\/p>\n<p>Funzionalit\u00e0<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Possibilit\u00e0 di verificare la conformit\u00e0 licenziale dei componenti utilizzati nel codice sorgente<br \/>\n+<br \/>\n&#8212;<br \/>\n+<\/p>\n<p>Possibilit\u00e0 di scansione e analisi alla ricerca di vulnerabilit\u00e0 e conformit\u00e0 licenziale per le immagini Docker<br \/>\n+ Integrazione con Clair<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Possibilit\u00e0 di impostare politiche di sicurezza per l'uso di biblioteche open source<br \/>\n+<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Possibilit\u00e0 di eseguire scansioni di repository open source alla ricerca di componenti vulnerabili<br \/>\n+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS<br \/>\n&#8212;<br \/>\n+ Hex, RubyGems, Maven, NPM, Nuget, Pypi<\/p>\n<p>Presenza di un gruppo di ricerca specializzato<br \/>\n+<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Operare in un contesto chiuso<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Utilizzo di database esterni<br \/>\n+ Database chiuso Sonatype<br \/>\n+ Sonatype OSS, NPM Public Advisors<br \/>\n+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, supporto per un proprio database di vulnerabilit\u00e0<\/p>\n<p>Possibilit\u00e0 di filtrare i componenti open source al momento del caricamento nel contesto di sviluppo secondo le politiche configurate<br \/>\n+<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Raccomandazioni per la correzione delle vulnerabilit\u00e0, inclusi collegamenti ai rimedi<br \/>\n+<br \/>\n+- (dipende dalla descrizione nelle basi di dati pubbliche)<br \/>\n+- (dipende dalla descrizione nelle basi di dati pubbliche)<\/p>\n<p>Classificazione delle vulnerabilit\u00e0 identificate in base al grado di criticit\u00e0<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Modello di accesso per ruoli<br \/>\n+<br \/>\n&#8212;<br \/>\n+<\/p>\n<p>Supporto per interfaccia a riga di comando CLI<br \/>\n+<br \/>\n+<br \/>\n+- (solo per CycloneDX)<\/p>\n<p>Campionamento \/ ordinamento delle vulnerabilit\u00e0 in base a criteri definiti<br \/>\n+<br \/>\n&#8212;<br \/>\n+<\/p>\n<p>Dashboard sullo stato delle applicazioni<br \/>\n+<br \/>\n&#8212;<br \/>\n+<\/p>\n<p>Generazione di report in formato PDF<br \/>\n+<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Generazione di report in formato JSONCSV<br \/>\n+<br \/>\n+<br \/>\n&#8212;<\/p>\n<p>Supporto per la lingua russa<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>\nCapacit\u00e0 di integrazione<\/p>\n<p>Integrazione<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Integrazione con LDAP\/Active Directory<br \/>\n+<br \/>\n&#8212;<br \/>\n+<\/p>\n<p>Integrazione con sistema di integrazione continua (continuous integration) Bamboo<br \/>\n+<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Integrazione con sistema di integrazione continua (continuous integration) TeamCity<br \/>\n+<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Integrazione con sistema di integrazione continua (continuous integration) GitLab<br \/>\n+<br \/>\n+- (in forma di plugin per GitLab)<br \/>\n+<\/p>\n<p>Integrazione con sistema di integrazione continua (continuous integration) Jenkins<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Disponibilit\u00e0 di plugin per IDE<br \/>\n+ IntelliJ, Eclipse, Visual Studio<br \/>\n&#8212;<br \/>\n&#8212;<\/p>\n<p>Supporto per integrazioni personalizzate tramite web-services (API) dello strumento<br \/>\n+<br \/>\n&#8212;<br \/>\n+<\/p>\n<h3>Dependency Check<\/h3>\n<p><\/p>\n<h4>Primo avvio<\/h4>\n<p>\nAvviamo Dependency Check su un'applicazione vulnerabile intenzionalmente <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appsecco\/dvja\">DVJA<\/a><\/noindex>.<\/p>\n<p>Per fare questo utilizzeremo <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>\nDi conseguenza, nella directory target apparir\u00e0 dependency-check-report.html.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/d5b9fe5a8eb68569387dd0bfd38af459.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApriamo il file. Dopo le informazioni generali sul numero totale di vulnerabilit\u00e0 possiamo vedere le informazioni sulle vulnerabilit\u00e0 ad alto livello di severit\u00e0 e confidenza con riferimento al pacchetto, CPE, numero CVE.<\/p>\n<p>Segue una informazione pi\u00f9 dettagliata, in particolare ci\u00f2 su cui si basa la decisione (evidence), cio\u00e8 un certo BOM.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/53dd89b0ff20c4c51aaf7412399e7fd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSuccessivamente troviamo CPE, PURL e descrizione CVE. Le raccomandazioni per le correzioni non sono incluse in quanto non presenti nel database NVD.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/ba2021aa8b6bf175383298b2c2a71670.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer una visione sistematica dei risultati della scansione, \u00e8 possibile configurare Nginx con impostazioni minime, oppure inviare i difetti ottenuti a un sistema di gestione dei difetti che supporta connettori per Dependency Check. Ad esempio, Defect Dojo. <\/p>\n<h3>Dependency Track<\/h3>\n<p><\/p>\n<h4>Installazione<\/h4>\n<p>\nDependency Track, a sua volta, \u00e8 una piattaforma web con grafici visivi, quindi il problema di archiviare i difetti in una soluzione di terzi non si pone qui. <br \/>\nPer l'installazione sono disponibili i seguenti scenari supportati: Docker, WAR, Executable WAR. <\/p>\n<h4>Primo avvio<\/h4>\n<p>\nAccediamo all'URL del servizio avviato. Accediamo tramite admin\/admin, cambiamo il nome utente e la password, dopo di che arriviamo alla Dashboard. La prossima cosa che faremo \u00e8 creare un progetto per un'applicazione di prova su Java in<i> Home\/Projects \u2192 Crea Progetto <\/i>. Come esempio, prendiamo DVJA.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/338aaa1c9ca0ac99f2e857f8ce001a02.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPoich\u00e9 Dependency Track pu\u00f2 accettare solo BOM come input, \u00e8 necessario ottenere questo BOM. Utilizziamo <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>\nOttenendo bom.xml e caricando il file nel progetto creato <i>DVJA \u2192 Dipendenze \u2192 Carica BOM<\/i>.<\/p>\n<p>Andiamo in Amministrazione \u2192 Analizzatori. Comprendiamo che abbiamo abilitato solo l'Analizzatore Interno, che include il NVD. Colleghiamo anche Sonatype OSS Index.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/3879a9a3d5f227d9740a984e7b1b91b2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCos\u00ec facendo, otteniamo la seguente situazione per il nostro progetto:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/004f2ab3383acb87e3d5e8c0fba1f3c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00c8 possibile trovare un'altra vulnerabilit\u00e0 applicabile a Sonatype OSS:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/e459f08218f890b46fb4050c30da63c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa principale delusione \u00e8 stata che Dependency Track non accetta pi\u00f9 i rapporti XML di Dependency Check. Le ultime versioni supportate per l'integrazione con Dependency Check erano 1.0.0 \u2014 4.0.2, mentre testavo la versione 5.3.2.<\/p>\n<p>Ecco <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d2WMONyBbTw\">video<\/a><\/noindex> (e <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/IPWPISSk5rc\">ecco<\/a><\/noindex>), quando ci\u00f2 era ancora possibile. <\/p>\n<h3>Nexus IQ <\/h3>\n<p><\/p>\n<h4>Primo avvio<\/h4>\n<p>\nL'installazione di Nexus IQ avviene da archivi tramite <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/iqserver\/installing\/iq-server-installation\">documentazione<\/a><\/noindex>, ma per questi scopi abbiamo assemblato un'immagine Docker.<\/p>\n<p>Dopo aver effettuato l'accesso alla console, \u00e8 necessario creare un'Organizzazione e un'Applicazione.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/4c6df91bad77e87ea066ff3514a03644.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/d8580ba46852e4d97625a22e215c21d3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/d99ce4e47218001fd1a76722e2633bea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome si pu\u00f2 vedere, la configurazione per IQ \u00e8 un po' pi\u00f9 complessa, poich\u00e9 \u00e8 necessario anche creare politiche applicabili ai diversi \u201cstadi\u201d (dev, build, stage, release). Questo \u00e8 necessario per bloccare i componenti vulnerabili man mano che avanzano nel pipeline verso la produzione, o bloccarli non appena entrano nel Nexus Repo durante il download da parte degli sviluppatori.<\/p>\n<p>Per percepire la differenza tra open source e enterprise, eseguiremo una scansione simile tramite Nexus IQ analogamente a <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/integrations\/sonatype-clm-for-maven\">Maven plugin<\/a><\/noindex>, creando in precedenza un'applicazione di test nell'interfaccia di 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>\nAccediamo all'URL del rapporto generato nell'interfaccia web di IQ:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/f81f998037ba53ef62298955077d044d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQui \u00e8 possibile vedere tutte le violazioni della politica con indicazione di diversi livelli di gravit\u00e0 (da Info a Security Critical). La lettera D accanto a un componente significa che il componente \u00e8 una Dipendenza Diretta, mentre la lettera T accanto a un componente significa che il componente \u00e8 una Dipendenza Transitiva.<\/p>\n<p>A proposito, il rapporto <noindex><a rel=\"nofollow\" href=\"https:\/\/snyk.io\/open-source-security\/\">State of Open Source Security Report 2020<\/a><\/noindex> di Snyk riporta che oltre il 70% delle vulnerabilit\u00e0 open source scoperte in Node.js, Java e Ruby si trovano nelle dipendenze transitive.<\/p>\n<p>Se apriamo una delle violazioni della politica Nexus IQ, possiamo vedere la descrizione del componente, cos\u00ec come il Version Graph, che mostra la posizione dell'attuale versione sulla linea temporale, oltre a quando la vulnerabilit\u00e0 smette di essere tale. L'altezza delle barre sul grafico indica la popolarit\u00e0 d'uso di questo componente.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/d33968a5ce5904da6f50133f882521fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe andiamo alla sezione delle vulnerabilit\u00e0 e espandiamo il CVE, possiamo leggere la descrizione di questa vulnerabilit\u00e0, le raccomandazioni per la risoluzione e il motivo per cui questo componente \u00e8 stato segnalato come una violazione, cio\u00e8 la presenza della classe <code>DiskFileitem.class<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/6d91b98a9a9a1a62264f1b4194f33ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/c9e580ad178a9c0307ed1e63d6dd244d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRiassumiamo solo le questioni relative ai componenti Java di terze parti, escludendo i componenti js. Tra parentesi indichiamo il numero di vulnerabilit\u00e0 trovate al di fuori della NVD.<\/p>\n<p><b>Totale Nexus IQ: <\/b><\/p>\n<ul>\n<li>Dipendenze scansionate: 62<\/li>\n<li>Dipendenze vulnerabili: 16<\/li>\n<li>Vulnerabilit\u00e0 trovate: 42 (8 sonatype db)<\/li>\n<\/ul>\n<p>\n<b>Totale Dependency Check: <\/b><\/p>\n<ul>\n<li>Dipendenze scansionate: 47<\/li>\n<li>Dipendenze vulnerabili: 13<\/li>\n<li>Vulnerabilit\u00e0 trovate: 91 (14 sonatype oss)<\/li>\n<\/ul>\n<p>\n<b>Totale Dependency Track: <\/b><\/p>\n<ul>\n<li>Dipendenze scansionate: 59<\/li>\n<li>Dipendenze vulnerabili: 10<\/li>\n<li>Vulnerabilit\u00e0 trovate: 51 (1 sonatype oss)<\/li>\n<\/ul>\n<p>\nNel passo successivo analizzeremo i risultati ottenuti e capiremo quali di queste vulnerabilit\u00e0 rappresentino un difetto reale e quali siano falsi positivi.<\/p>\n<h3>Disclaimer<\/h3>\n<p>\nQuesta revisione non \u00e8 un'affermazione incontestabile. L'autore non aveva il compito di isolare uno specifico strumento rispetto ad altri. Lo scopo della revisione era dimostrare i meccanismi operativi degli strumenti SCA e i metodi per verificare i loro risultati.<\/p>\n<h3>Confronto dei risultati<\/h3>\n<p>\n<b>Condizioni:<\/b><\/p>\n<p><b>Un falso positivo rispetto alle vulnerabilit\u00e0 dei componenti di terze parti \u00e8:<\/b><\/p>\n<ul>\n<li><b>Discrepanza tra il CVE e il componente rilevato<\/b><\/li>\n<li>Ad esempio, se una vulnerabilit\u00e0 \u00e8 stata identificata nel framework struts2, e lo strumento indica un componente del framework struts-tiles, al quale questa vulnerabilit\u00e0 non si applica, questo \u00e8 un falso positivo.<\/li>\n<li><b>Discrepanza tra il CVE e la versione del componente rilevata<\/b><\/li>\n<li>Ad esempio, se la vulnerabilit\u00e0 \u00e8 legata alla versione python &gt; 3.5 e lo strumento segnala come vulnerabile la versione 2.7, questo \u00e8 un falso positivo, in quanto in realt\u00e0 la vulnerabilit\u00e0 si riferisce solo alla branch di prodotto 3.x. <\/li>\n<li> <b>Duplicazione del CVE<\/b><\/li>\n<li>Ad esempio, se lo SCA ha segnalato un CVE che consente di realizzare RCE, e successivamente lo SCA indica per lo stesso componente un CVE applicabile a prodotti Cisco soggetti a tale RCE. In tal caso, si tratter\u00e0 di un falso positivo.<\/li>\n<li>Ad esempio, la CVE \u00e8 stata trovata nel componente spring-web, dopo di che l'SCA indica la stessa CVE in altri componenti del framework Spring Framework, mentre la CVE non ha nulla a che fare con altri componenti. In tal caso si tratta di un falso positivo. <\/li>\n<\/ul>\n<p>\nIl soggetto di studio scelto \u00e8 il progetto Open Source DVJA. Nello studio sono stati coinvolti solo componenti Java (senza JS).<\/p>\n<h3>Risultati riassuntivi<\/h3>\n<p>\nPassiamo subito ai risultati della revisione manuale delle vulnerabilit\u00e0 identificate. Il rapporto completo per ogni CVE \u00e8 disponibile nell'Appendice. <\/p>\n<p><i>Risultati riassuntivi su tutte le vulnerabilit\u00e0:<\/i><\/p>\n<p>Parametro<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Totale vulnerabilit\u00e0 identificate<br \/>\n42<br \/>\n91<br \/>\n51<\/p>\n<p>Vulnerabilit\u00e0 rilevate erroneamente (falso positivo)<br \/>\n2(4.76%)<br \/>\n62(68,13%)<br \/>\n29(56.86%)<\/p>\n<p>Nessuna vulnerabilit\u00e0 rilevante trovata (falso negativo)<br \/>\n10<br \/>\n20<br \/>\n27<\/p>\n<p>\n<i>Risultati riassuntivi per componenti:<\/i><\/p>\n<p>Parametro<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Totale componenti identificati<br \/>\n62<br \/>\n47<br \/>\n59<\/p>\n<p>Totale componenti vulnerabili<br \/>\n16<br \/>\n13<br \/>\n10<\/p>\n<p>Componenti vulnerabili identificati erroneamente (falso positivo)<br \/>\n1<br \/>\n5<br \/>\n0<\/p>\n<p>Componenti vulnerabili identificati erroneamente (falso positivo)<br \/>\n0<br \/>\n6<br \/>\n6<\/p>\n<p>\nCostruiamo grafici visivi per valutare il rapporto tra falsi positivi e falsi negativi rispetto al numero totale di vulnerabilit\u00e0. Sull'asse orizzontale sono segnati i componenti, mentre sull'asse verticale le vulnerabilit\u00e0 rilevate in essi. <\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/967b8e168383299d4a1bf4065f1905ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/2e128ee59e551894c25e4c9e28997008.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/585d7bcef052ef24e4de6c7e1a4e7c0b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer confronto, uno studio analogo \u00e8 stato condotto dal team di Sonatype testando un progetto di 1531 componenti utilizzando OWASP Dependency Check. Come possiamo vedere, il rapporto tra rumore e corretti esiti \u00e8 paragonabile ai nostri risultati.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" 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>Consideriamo alcune CVE dai risultati della nostra scansione per comprendere il motivo di tali risultati.<\/p>\n<h3>Ulteriori informazioni<\/h3>\n<p><\/p>\n<h4>\u21161<\/h4>\n<p>\nIniziamo ad analizzare alcuni punti interessanti di Sonatype Nexus IQ.<\/p>\n<p>Nexus IQ indica un problema di deserializzazione con la possibilit\u00e0 di eseguire un RCE nel Spring Framework diverse volte. CVE-2016-1000027 in spring-web:3.0.5 per la prima volta, e CVE-2011-2894 in spring-context:3.0.5 e spring-core:3.0.5. A prima vista sembra che ci sia una duplicazione della vulnerabilit\u00e0 attraverso pi\u00f9 CVE. Infatti, se guardiamo la CVE-2016-1000027 e la CVE-2011-2894 nel database NVD, sembra tutto chiaro.<\/p>\n<p>Componente<br \/>\nVulnerabilit\u00e0<\/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>\nDescrizione <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2011-2894\">CVE-2011-2894<\/a><\/noindex> da NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/31b403eca6d7541c766c9a560bfbe6b7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDescrizione <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2016-1000027\">CVE-2016-1000027<\/a><\/noindex> da NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/d5b54a6ac15070b12f013eaacd2878f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa CVE-2011-2894 \u00e8 di per s\u00e9 piuttosto nota. Nel rapporto <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pwntester.com\/blog\/2013\/12\/16\/cve-2011-2894-deserialization-spring-rce\/\">White Source del 2011<\/a><\/noindex> questa CVE \u00e8 stata riconosciuta come una delle pi\u00f9 comuni. Le descrizioni della CVE-2016-100027 sono piuttosto scarse in NVD, e sembra applicabile solo per Spring Framework 4.1.4. Diamo un'occhiata a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">reference<\/a><\/noindex> e qui diventa tutto pi\u00f9 chiaro. Dall' <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">articolo di Tenable<\/a><\/noindex> comprendiamo che oltre alla vulnerabilit\u00e0 in <code>RemoteInvocationSerializingExporter<\/code> nella CVE-2011-2894, la vulnerabilit\u00e0 \u00e8 osservata in <code>HttpInvokerServiceExporter<\/code>. Questo \u00e8 ci\u00f2 che ci dice Nexus IQ:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/a33f0853ce892d28eafafe2c8e7b2228.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTuttavia, nulla di simile \u00e8 presente in NVD, il che provoca false negative per Dependency Check e Dependency Track.<\/p>\n<p>Dalla descrizione di CVE-2011-2894 si pu\u00f2 comprendere che la vulnerabilit\u00e0 \u00e8 effettivamente presente sia in spring-context:3.0.5 che in spring-core:3.0.5. Una conferma di questo si pu\u00f2 trovare in un articolo di chi ha scoperto questa vulnerabilit\u00e0.<\/p>\n<h4>\u21162<\/h4>\n<p><\/p>\n<p>Componente<br \/>\nVulnerabilit\u00e0<br \/>\nRisultato<\/p>\n<p>struts2-core:2.3.30<br \/>\nCVE-2016-4003<br \/>\nFALSE<\/p>\n<p>\nSe analizziamo la vulnerabilit\u00e0 CVE-2016-4003, possiamo capire che \u00e8 stata risolta gi\u00e0 nella versione 2.3.28, tuttavia Nexus IQ ci informa ancora a riguardo. Nella descrizione della vulnerabilit\u00e0 c'\u00e8 una nota:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di funzionamento e confronto SCA. Parte prima\" src=\"\/wp-content\/uploads\/2020\/08\/081f9006748083727e424b709a338d60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCio\u00e8, la vulnerabilit\u00e0 esiste solo in combinazione con una versione obsoleta di JRE, di cui ci preavvisano. Tuttavia, consideriamo questo un False Positive, anche se non \u00e8 tra i pi\u00f9 gravi.<\/p>\n<h4>\u2116 3<\/h4>\n<p><\/p>\n<p>Componente<br \/>\nVulnerabilit\u00e0<br \/>\nRisultato<\/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 guardiamo la descrizione di CVE-2017-9804 e CVE-2017-7672, possiamo capire che il problema riguarda <code>la classe URLValidator<\/code>, e CVE-2017-9804 deriva da CVE-2017-7672. La presenza della seconda vulnerabilit\u00e0 non porta alcun valore aggiunto se non l\u2019aumento della sua severit\u00e0 a High, quindi si pu\u00f2 considerare un rumore superfluo.<\/p>\n<p>In generale, non sono stati riscontrati altri false positive per Nexus IQ.<\/p>\n<h3>\u21164<\/h3>\n<p>\nCi sono diversi aspetti che distinguono IQ rispetto ad altre soluzioni.<\/p>\n<p>Componente<br \/>\nVulnerabilit\u00e0<br \/>\nRisultato<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2020-5398<br \/>\nTRUE<\/p>\n<p>NVD riporta che questo CVE \u00e8 applicabile solo alle versioni 5.2.x fino a 5.2.3, 5.1.x fino a 5.1.13 e alle versioni 5.0.x fino a 5.0.16, tuttavia, se esaminiamo la descrizione del CVE in Nexus IQ, vediamo quanto segue:<br \/>\n<i>Avviso di Deviamento: Il team di ricerca sulla sicurezza di Sonatype ha scoperto che questa vulnerabilit\u00e0 \u00e8 stata introdotta nella versione 3.0.2.RELEASE e non 5.0.x come indicato nell'avviso.<\/i><\/p>\n<p>Dopo segue un PoC per questa vulnerabilit\u00e0, che informa che \u00e8 presente nella versione 3.0.5.<\/p>\n<p>Il false negative viene inviato a Dependency Check e Dependency Track.<\/p>\n<h3>\u21165<\/h3>\n<p>\nEsaminiamo i false positive per Dependency Check e Dependency Track.<\/p>\n<p>Dependency Check si distingue per il fatto che riflette i CVE che riguardano l'intero framework in NVD, in componenti a cui questi CVE non si applicano. Questo riguarda CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, che Dependency Check ha \u201cagganciato\u201d a struts-taglib:1.3.8 e struts-tiles-1.3.8. Questi componenti non hanno nulla a che fare con ci\u00f2 che \u00e8 descritto nel CVE \u2014 elaborazione delle richieste, validazione delle pagine e cos\u00ec via. Questo \u00e8 dovuto al fatto che l'unico elemento in comune tra questi CVE e i componenti \u00e8 solo il framework, il che ha portato Dependency Check a considerarlo una vulnerabilit\u00e0.<\/p>\n<p>La stessa situazione si verifica con spring-tx:3.0.5, e una situazione simile con struts-core:1.3.8. Per struts-core, Dependency Check e Dependency Track hanno trovato molte vulnerabilit\u00e0 che in realt\u00e0 si riferiscono a struts2-core, che \u00e8 sostanzialmente un framework separato. In questo caso, Nexus IQ ha interpretato correttamente la situazione e nei CVE che ha fornito ha indicato che struts-core \u00e8 giunto a fine vita e che \u00e8 necessario passare a struts2-core.<\/p>\n<h3>\u21166<\/h3>\n<p>\nIn alcune situazioni, \u00e8 iniquo interpretare in modo esplicito gli errori di Dependency Check e Dependency Track. In particolare, CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, che Dependency Check e Dependency Track hanno attribuito a spring-core:3.0.5, si riferiscono in realt\u00e0 a spring-web:3.0.5. Tuttavia, alcune di queste CVE sono state trovate anche da Nexus IQ; tuttavia, IQ le ha correttamente identificate come relative a un'altra componente. Non si pu\u00f2 affermare che poich\u00e9 queste vulnerabilit\u00e0 non sono state trovate in spring-core, non esistano nel framework in generale e gli strumenti open source hanno giustamente segnalato queste vulnerabilit\u00e0 (hanno semplicemente mancato il bersaglio). <\/p>\n<h3>Conclusioni<\/h3>\n<p>\nCome possiamo vedere, la determinazione dell'affidabilit\u00e0 delle vulnerabilit\u00e0 identificate tramite revisione manuale non produce risultati chiari, il che porta a questioni controverse. I risultati indicano che la soluzione di Nexus IQ ha il tasso pi\u00f9 basso di falsi positivi e la massima precisione. <\/p>\n<p>In primo luogo, ci\u00f2 \u00e8 dovuto al fatto che il team di Sonatype ha ampliato la descrizione di ciascuna vulnerabilit\u00e0 CVE proveniente da NVD nelle proprie banche dati, specificando con precisione fino alla classe o alla funzione della vulnerabilit\u00e0 per ciascuna versione della componente, conducendo ulteriori ricerche (ad esempio, verificando le vulnerabilit\u00e0 su versioni pi\u00f9 vecchie del software). <\/p>\n<p>Un'importante influenza sui risultati proviene anche da quelle vulnerabilit\u00e0 che non sono entrate in NVD, ma che sono comunque presenti nel database di Sonatype con la nota SONATYPE. Secondo il rapporto <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">La situazione delle vulnerabilit\u00e0 di sicurezza nel software open source 2020<\/a><\/noindex> il 45% delle vulnerabilit\u00e0 scoperte con codice sorgente aperto non \u00e8 segnalato in NVD. Secondo il database di WhiteSource, solo il 29% di tutte le vulnerabilit\u00e0 con codice sorgente aperto, registrate al di fuori di NVD, vengono infine pubblicate l\u00ec, quindi \u00e8 fondamentale cercare vulnerabilit\u00e0 anche in altre fonti.<\/p>\n<p>Di conseguenza, Dependency Check genera un alto numero di falsi positivi, trascurando alcune componenti vulnerabili. Dependency Track produce meno rumore e identifica un numero maggiore di componenti, il che non risulta visivamente fastidioso nell'interfaccia web.<\/p>\n<p>Tuttavia, la pratica dimostra che l'open source dovrebbe essere il primo passo verso un DevSecOps maturo. La prima cosa su cui riflettere per integrare l'SCA nello sviluppo \u00e8 rappresentata dai processi, in particolare le riflessioni con la direzione e i dipartimenti affini su come dovrebbero apparire i processi ideali nella propria organizzazione. Potrebbe infatti rivelarsi che, inizialmente, per la vostra organizzazione, Dependency Check o Dependency Track soddisfano tutte le esigenze aziendali, mentre le soluzioni Enterprise rappresenteranno una continuazione logica a causa della crescente complessit\u00e0 delle applicazioni sviluppate.<\/p>\n<p>                        <b class=\"spoiler_title\">Appendice A. Risultati relativi ai componenti<\/b><br \/>\n                        <b>Abbreviazioni:<\/b><\/p>\n<ul>\n<li>Alto \u2014 vulnerabilit\u00e0 di alto e critico livello nel componente<\/li>\n<li>Medio \u2014 vulnerabilit\u00e0 di livello critico medio nel componente<\/li>\n<li>VERO \u2014 Vulnerabilit\u00e0 identificata correttamente (True positive issue)<\/li>\n<li>FALSO \u2014 Falso allerta (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Componente<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nRisultato<\/p>\n<p>dom4j: 1.6.1<br \/>\nHigh<br \/>\nHigh<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>log4j-core: 2.3<br \/>\nHigh<br \/>\nHigh<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>log4j: 1.2.14<br \/>\nHigh<br \/>\nHigh<br \/>\n&#8212;<br \/>\nTRUE<\/p>\n<p>commons-collections:3.1<br \/>\nHigh<br \/>\nHigh<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nHigh<br \/>\nHigh<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nHigh<br \/>\nHigh<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>commons-codec:1:10<br \/>\nMedium<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nTRUE<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nHigh<br \/>\nHigh<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>spring-expression:3.0.5<br \/>\nHigh<br \/>\ncomponente non trovato<\/p>\n<p>TRUE<\/p>\n<p>spring-web:3.0.5<br \/>\nHigh<br \/>\ncomponente non trovato<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>spring-context:3.0.5<br \/>\nMedium<br \/>\ncomponente non trovato<br \/>\n&#8212;<br \/>\nTRUE<\/p>\n<p>spring-core:3.0.5<br \/>\nMedium<br \/>\nHigh<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nMedium<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nTRUE<\/p>\n<p>spring-tx:3.0.5<br \/>\n&#8212;<br \/>\nHigh<br \/>\n&#8212;<br \/>\nFALSE<\/p>\n<p>struts-core:1.3.8<br \/>\nHigh<br \/>\nHigh<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>xwork-core: 2.3.30<br \/>\nHigh<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nTRUE<\/p>\n<p>struts2-core: 2.3.30<br \/>\nHigh<br \/>\nHigh<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>struts-taglib:1.3.8<br \/>\n&#8212;<br \/>\nHigh<br \/>\n&#8212;<br \/>\nFALSE<\/p>\n<p>struts-tiles-1.3.8<br \/>\n&#8212;<br \/>\nHigh<br \/>\n&#8212;<br \/>\nFALSE<\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Appendice B. Risultati relativi alle vulnerabilit\u00e0<\/b><br \/>\n                        <b>Abbreviazioni:<\/b><\/p>\n<ul>\n<li>Alto \u2014 vulnerabilit\u00e0 di alto e critico livello nel componente<\/li>\n<li>Medio \u2014 vulnerabilit\u00e0 di livello critico medio nel componente<\/li>\n<li>VERO \u2014 Vulnerabilit\u00e0 identificata correttamente (True positive issue)<\/li>\n<li>FALSO \u2014 Falso allerta (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Componente<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nSeverit\u00e0<br \/>\nRisultato<br \/>\nCommento<\/p>\n<p>dom4j: 1.6.1<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>log4j-core: 2.3<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nBasso<br \/>\nTRUE<\/p>\n<p>log4j: 1.2.14<br \/>\nCVE-2019-17571<br \/>\nCVE-2019-17571<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2020-9488<br \/>\n&#8212;<br \/>\nBasso<br \/>\nTRUE<\/p>\n<p>SONATYPE-2010-0053<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>commons-collections:3.1<br \/>\n&#8212;<br \/>\nCVE-2015-6420<br \/>\nCVE-2015-6420<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplica RCE(OSSINDEX)<\/p>\n<p>&#8212;<br \/>\nCVE-2017-15708<br \/>\nCVE-2017-15708<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplica RCE(OSSINDEX)<\/p>\n<p>SONATYPE-2015-0002<br \/>\nRCE (OSSINDEX)<br \/>\nRCE(OSSINDEX)<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>SONATYPE-2014-0173<br \/>\n&#8212;<br \/>\n&#8212;<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 \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2019-10086<br \/>\nCVE-2019-10086<br \/>\nHigh<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 \u00e8 applicabile solo per le versioni 1.9.2+<\/p>\n<p>commons-codec:1:10<br \/>\nSONATYPE-2012-0050<br \/>\n&#8212;<br \/>\n&#8212;<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 \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2019-2692<br \/>\nCVE-2019-2692<br \/>\n&#8212;<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2020-2875<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\n\u00c8 la stessa vulnerabilit\u00e0 di CVE-2019-2692, ma con la nota \u201cgli attacchi possono influenzare significativamente prodotti aggiuntivi\u201d<\/p>\n<p>&#8212;<br \/>\nCVE-2017-15945<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nNon applicabile a mysql-connector-java<\/p>\n<p>&#8212;<br \/>\nCVE-2020-2933<br \/>\n&#8212;<br \/>\nBasso<br \/>\nFALSE<br \/>\nDuplicato di CVE-2020-2934<\/p>\n<p>CVE-2020-2934<br \/>\nCVE-2020-2934<br \/>\n&#8212;<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-expression:3.0.5<br \/>\nCVE-2018-1270<br \/>\ncomponente non trovato<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2018-1257<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2016-1000027<br \/>\ncomponente non trovato<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2014-0225<br \/>\n&#8212;<br \/>\nCVE-2014-0225<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2011-2730<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\n&#8212;<br \/>\nCVE-2013-4152<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>CVE-2018-1272<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2020-5398<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<br \/>\nUn esempio significativo per IQ: \"Il team di ricerca sulla sicurezza di Sonatype ha scoperto che questa vulnerabilit\u00e0 \u00e8 stata introdotta nella versione 3.0.2.RELEASE e non nella 5.0.x come affermato nell'avviso.\"<\/p>\n<p>CVE-2013-6429<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>CVE-2014-0054<br \/>\n&#8212;<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>CVE-2013-6430<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-context:3.0.5<br \/>\nCVE-2011-2894<br \/>\ncomponente non trovato<br \/>\n&#8212;<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-core:3.0.5<br \/>\n&#8212;<br \/>\nCVE-2011-2730<br \/>\nCVE-2011-2730<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\n&#8212;<br \/>\nCVE-2013-4152<br \/>\nMedium<br \/>\nFALSE<br \/>\nDuplicato della stessa vulnerabilit\u00e0 in spring-web<\/p>\n<p>&#8212;<br \/>\nCVE-2013-4152<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 si applica al componente spring-web<\/p>\n<p>&#8212;<br \/>\nCVE-2013-6429<br \/>\nCVE-2013-6429<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 si applica al componente spring-web<\/p>\n<p>&#8212;<br \/>\nCVE-2013-6430<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 si applica al componente spring-web<\/p>\n<p>&#8212;<br \/>\nCVE-2013-7315<br \/>\nCVE-2013-7315<br \/>\nMedium<br \/>\nFALSE<br \/>\nSPLIT da CVE-2013-4152. + La vulnerabilit\u00e0 si applica al componente spring-web<\/p>\n<p>&#8212;<br \/>\nCVE-2014-0054<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 si applica al componente spring-web<\/p>\n<p>&#8212;<br \/>\nCVE-2014-0225<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 si applica al componente spring-web<\/p>\n<p>&#8212;<br \/>\n&#8212;<br \/>\nCVE-2014-0225<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplicato della stessa vulnerabilit\u00e0 in spring-web<\/p>\n<p>&#8212;<br \/>\nCVE-2014-1904<br \/>\nCVE-2014-1904<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 si applica al componente spring-web-mvc<\/p>\n<p>&#8212;<br \/>\nCVE-2014-3625<br \/>\nCVE-2014-3625<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 si applica al componente spring-web-mvc<\/p>\n<p>&#8212;<br \/>\nCVE-2016-9878<br \/>\nCVE-2016-9878<br \/>\nHigh<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 si applica al componente spring-web-mvc<\/p>\n<p>&#8212;<br \/>\nCVE-2018-1270<br \/>\nCVE-2018-1270<br \/>\nHigh<br \/>\nFALSE<br \/>\nPer spring-expression \/ spring-messages<\/p>\n<p>&#8212;<br \/>\nCVE-2018-1271<br \/>\nCVE-2018-1271<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 si applica al componente spring-web-mvc<\/p>\n<p>&#8212;<br \/>\nCVE-2018-1272<br \/>\nCVE-2018-1272<br \/>\nHigh<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&#8212;<br \/>\n&#8212;<br \/>\nBasso<br \/>\nTRUE<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nSONATYPE-2016-0104<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nMedium<br \/>\nTRUE<\/p>\n<p>spring-tx:3.0.5<br \/>\n&#8212;<br \/>\nCVE-2011-2730<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2011-2894<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2013-4152<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2013-6429<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2013-6430<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2013-7315<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2014-0054<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2014-0225<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2014-1904<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2014-3625<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2016-9878<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2018-1270<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2018-1271<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>&#8212;<br \/>\nCVE-2018-1272<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non si applica a spring-tx<\/p>\n<p>struts-core:1.3.8<br \/>\n&#8212;<br \/>\nCVE-2011-5057 (OSSINDEX)<\/p>\n<p>Medium<br \/>\nFALSO<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2012-0391 (OSSINDEX)<br \/>\nCVE-2012-0391<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2014-0094 (OSSINDEX)<br \/>\nCVE-2014-0094<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2014-0113 (OSSINDEX)<br \/>\nCVE-2014-0113<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>CVE-2016-1182<br \/>\n3VE-2016-1182<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\n&#8212;<br \/>\nCVE-2011-5057<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2012-0392 (OSSINDEX)<br \/>\nCVE-2012-0392<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2012-0393 (OSSINDEX)<br \/>\nCVE-2012-0393<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>CVE-2015-0899<br \/>\nCVE-2015-0899<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2012-0394<br \/>\nCVE-2012-0394<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2012-0838 (OSSINDEX)<br \/>\nCVE-2012-0838<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2013-1965 (OSSINDEX)<br \/>\nCVE-2013-1965<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2013-1966 (OSSINDEX)<br \/>\nCVE-2013-1966<br \/>\nHigh<br \/>\nFALSO<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2013-2115<br \/>\nCVE-2013-2115<br \/>\nHigh<br \/>\nFALSO<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2013-2134 (OSSINDEX)<br \/>\nCVE-2013-2134<br \/>\nHigh<br \/>\nFALSO<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2013-2135 (OSSINDEX)<br \/>\nCVE-2013-2135<br \/>\nHigh<br \/>\nFALSO<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>CVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2015-2992<br \/>\nCVE-2015-2992<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>&#8212;<br \/>\nCVE-2016-0785 (OSSINDEX)<br \/>\nCVE-2016-0785<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>CVE-2016-1181<br \/>\nCVE-2016-1181<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2016-4003 (OSSINDEX)<br \/>\nCVE-2016-4003<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 a Struts 2<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>SONATYPE-2017-0173<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2017-7672<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplicato di CVE-2017-9804<\/p>\n<p>SONATYPE-2016-0127<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>struts2-core:2.3.30<br \/>\n&#8212;<br \/>\nCVE-2016-6795<br \/>\nCVE-2016-6795<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2017-9787<br \/>\nCVE-2017-9787<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2017-9791<br \/>\nCVE-2017-9791<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2017-9793<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplicato di CVE-2018-1327<\/p>\n<p>&#8212;<br \/>\nCVE-2017-9804<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>&#8212;<br \/>\nCVE-2017-9805<br \/>\nCVE-2017-9805<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2016-4003<br \/>\n&#8212;<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nApplicabile ad Apache Struts 2.x fino alla versione 2.3.28, mentre attualmente \u00e8 disponibile la versione 2.3.30. Tuttavia, a giudicare dalla descrizione, il CVE si applica a tutte le versioni di Struts 2, se si utilizza JRE 1.7 o inferiore. Sembra che qui stiamo cercando di fare il doppio controllo, ma somiglia molto a un FALSE<\/p>\n<p>&#8212;<br \/>\nCVE-2018-1327<br \/>\nCVE-2018-1327<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nHigh<br \/>\nTRUE<br \/>\nQuella vulnerabilit\u00e0 che \u00e8 stata sfruttata dagli hacker in Equifax nel 2017<\/p>\n<p>CVE-2017-12611<br \/>\nCVE-2017-12611<br \/>\n&#8212;<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>struts-taglib:1.3.8<br \/>\n&#8212;<br \/>\nCVE-2012-0394<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nPer struts2-core<\/p>\n<p>&#8212;<br \/>\nCVE-2013-2115<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nPer struts2-core<\/p>\n<p>&#8212;<br \/>\nCVE-2014-0114<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nPer commons-beanutils<\/p>\n<p>&#8212;<br \/>\nCVE-2015-0899<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nNon pertinente a taglib<\/p>\n<p>&#8212;<br \/>\nCVE-2015-2992<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nPertinente a struts2-core<\/p>\n<p>&#8212;<br \/>\nCVE-2016-1181<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nNon pertinente a taglib<\/p>\n<p>&#8212;<br \/>\nCVE-2016-1182<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nNon pertinente a taglib<\/p>\n<p>struts-tiles-1.3.8<br \/>\n&#8212;<br \/>\nCVE-2012-0394<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nPer struts2-core<\/p>\n<p>&#8212;<br \/>\nCVE-2013-2115<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nPer struts2-core<\/p>\n<p>&#8212;<br \/>\nCVE-2014-0114<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nSotto commons-beanutils<\/p>\n<p>&#8212;<br \/>\nCVE-2015-0899<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nNon pertinente a tiles<\/p>\n<p>&#8212;<br \/>\nCVE-2015-2992<br \/>\n&#8212;<br \/>\nMedium<br \/>\nFALSE<br \/>\nPer struts2-core<\/p>\n<p>&#8212;<br \/>\nCVE-2016-1181<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nNon pertinente a taglib<\/p>\n<p>&#8212;<br \/>\nCVE-2016-1182<br \/>\n&#8212;<br \/>\nHigh<br \/>\nFALSE<br \/>\nNon pertinente 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.1.1 - 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\/it\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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: principi di lavoro e confronto SCA. Parte prima | ProHoster","description":"Importanza dell'analisi dei componenti software di terze parti (eng.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/92519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=92519"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/92519\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/92520"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=92519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=92519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=92519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}