{"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 lavoro e confronto SCA. Prima parte","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>L'importanza dell'analisi dei componenti software di terze parti (Software Composition Analysis \u2014 SCA) aumenta durante il processo di sviluppo, mano a mano che vengono pubblicati report annuali sulle vulnerabilit\u00e0 delle librerie open source dalle aziende Synopsys, Sonatype, Snyk e White Source. Secondo il rapporto <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">Lo stato delle vulnerabilit\u00e0 nella sicurezza open source 2020<\/a><\/noindex> il numero di vulnerabilit\u00e0 identificate nell'open source \u00e8 aumentato quasi di 1.5 volte nel 2019 rispetto all'anno precedente, mentre i componenti open source sono utilizzati in dal 60% all'80% dei progetti. Se consideriamo l'opinione di esperti, i processi SCA sono una pratica distinta secondo OWASP SAMM e BSIMM come indicatore di maturit\u00e0. Nella prima met\u00e0 del 2020, OWASP ha rilasciato un nuovo standard, l'OWASP Software Component Verification Standard (SCVS), che offre le migliori pratiche per la verifica dei componenti di terze parti nella catena di fornitura del software.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" 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 significativi <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 la compagnia Equifax a maggio 2017. Sconosciuti hacker hanno ottenuto informazioni su 143 milioni di americani, comprese le loro nomi completi, indirizzi, numeri di previdenza sociale e patenti di guida. In 209.000 casi, erano presenti anche informazioni sulle carte di credito delle vittime. Questa violazione \u00e8 avvenuta a causa di un'importante vulnerabilit\u00e0 in Apache Struts 2 (CVE-2017-5638), mentre una patch era gi\u00e0 stata rilasciata a marzo 2017. L'azienda ha avuto due mesi per installare l'aggiornamento, ma nessuno se ne \u00e8 occupato.<\/p>\n<p>In questo articolo si discuter\u00e0 la scelta dello strumento per effettuare SCA dal punto di vista della qualit\u00e0 dei risultati dell'analisi. Verr\u00e0 inoltre 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 gamma di strumenti \u00e8 stata presentata da OWASP <noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-community\/Component_Analysis\">sul suo sito web<\/a><\/noindex>, ma in questo articolo ci concentreremo solo sugli strumenti open source pi\u00f9 popolari: Dependency Check, la piattaforma open source meno conosciuta Dependency Track e la soluzione Enterprise Sonatype Nexus IQ. Inoltre, analizzeremo come funzionano queste soluzioni e confronteremo i risultati ottenuti in termini di falsi positivi.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/0580758082abd9950aa9c483d546f1ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>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, modulo maven, modulo jenkins, ant) che analizza i file di progetto, raccoglie frammenti di informazioni sulle dipendenze (nome pacchetto, groupid, titolo di specifica, versione\u2026), costruisce una stringa CPE \u2014 (Common Platform Enumeration), Package URL (PURL) e identifica vulnerabilit\u00e0 per CPE\/PURL da database (NVD, Sonatype OSS Index, NPM Audit API\u2026), dopodich\u00e9 genera un rapporto unico in formato HTML, JSON, XML\u2026<\/p>\n<p>Vediamo come appare una 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 appartiene a un'applicazione (a), sistema operativo (o), hardware (h) (Obbligatorio)<\/li>\n<li><b>Vendor:<\/b> Nome del produttore del prodotto (Obbligatorio)<\/li>\n<li><b>Product:<\/b> Nome del prodotto (Obbligatorio)<\/li>\n<li><b>Versione:<\/b> Versione del componente (Voce obsoleta)<\/li>\n<li><b>Aggiornamento:<\/b> Aggiornamento del pacchetto<\/li>\n<li><b>Edition:<\/b> Versione ereditata (Voce obsoleta)<\/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>HW target:<\/b> Ambiente hardware in cui opera il prodotto<\/li>\n<li><b>Altro:<\/b> Informazioni sul fornitore o sul prodotto<\/li>\n<\/ul>\n<p>\nUn esempio di CPE \u00e8 il seguente:<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*<\/code><\/pre>\n<p>\nQuesta stringa indica che la CPE versione 2.3 descrive un componente di applicazione dal 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 il riferimento a questa CPE. Il primo problema da notare \u00e8 che il CVE in NVD, secondo la CPE, segnala la presenza di una vulnerabilit\u00e0 nel framework, non in un componente specifico. Ci\u00f2 significa che se gli sviluppatori sono fortemente legati al framework e la vulnerabilit\u00e0 identificata non riguarda i moduli utilizzati dagli sviluppatori, il professionista della sicurezza dovr\u00e0 comunque esaminare questo CVE e considerare un aggiornamento.<\/p>\n<p>L'URL \u00e8 utilizzato anche da 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>Schema: <\/b>\u0412\u0441\u0435\u0433\u0434\u0430 \u0431\u0443\u0434\u0435\u0442 &#8216;pkg&#8217;, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439, \u0447\u0442\u043e \u044d\u0442\u043e URL-\u0430\u0434\u0440\u0435\u0441 \u043f\u0430\u043a\u0435\u0442\u0430 (\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u043d\u043a\u0442)<\/li>\n<li><b>Tipo:<\/b> Il \u2018tipo\u2019 del pacchetto o \u2018protocollo\u2019 del pacchetto, ad esempio maven, npm, nuget, gem, pypi, ecc. (Obbligatorio)<\/li>\n<li><b>Namespace:<\/b> Un certo prefisso del nome, come l'identificatore del gruppo Maven, il proprietario dell'immagine Docker, l'utente o l'organizzazione GitHub. Facoltativo e dipendente dal tipo.<\/li>\n<li><b>Nome:<\/b> Nome del pacchetto (campo obbligatorio)<\/li>\n<li><b>Versione:<\/b> Versione del pacchetto<\/li>\n<li><b>Qualificatori:<\/b> Dati qualificativi aggiuntivi per il pacchetto, come SO, architettura, distribuzione, ecc. Facoltativo e dipendente dal tipo.<\/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 pronti generati <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 riguardo le dipendenze esistenti. Questo \u00e8 un file XML con descrizione delle dipendenze: nome, hash, url del pacchetto, pubblicatore, licenza. Successivamente, Dependency Track analizza il BOM, esamina le vulnerabilit\u00e0 CVE associate nelle dipendenze dalla base di dati delle vulnerabilit\u00e0 (NVD, Sonatype OSS Index \u2026), quindi costruisce grafici, calcola metriche e aggiorna regolarmente i dati sullo stato delle vulnerabilit\u00e0 delle componenti. <\/p>\n<p>Ecco un esempio di come potrebbe apparire un BOM in formato XML:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;bom xmlns=&quot;http:\/\/cyclonedx.org\/schema\/bom\/1.2&quot; serialNumber=&quot;urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79&quot; version=&quot;1&quot;&gt;\n  &lt;components&gt;\n    &lt;component type=&quot;library&quot;&gt;\n      &lt;publisher&gt;Apache&lt;\/publisher&gt;\n      &lt;group&gt;org.apache.tomcat&lt;\/group&gt;\n      &lt;name&gt;tomcat-catalina&lt;\/name&gt;\n      &lt;version&gt;9.0.14&lt;\/version&gt;\n      &lt;hashes&gt;\n        &lt;hash alg=&quot;MD5&quot;&gt;3942447fac867ae5cdb3229b658f4d48&lt;\/hash&gt;\n        &lt;hash alg=&quot;SHA-1&quot;&gt;e6b1000b94e835ffd37f4c6dcbdad43f4b48a02a&lt;\/hash&gt;\n        &lt;hash alg=&quot;SHA-256&quot;&gt;f498a8ff2dd007e29c2074f5e4b01a9a01775c3ff3aeaf6906ea503bc5791b7b&lt;\/hash&gt;\n        &lt;hash alg=&quot;SHA-512&quot;&gt;e8f33e424f3f4ed6db76a482fde1a5298970e442c531729119e37991884bdffab4f9426b7ee11fccd074eeda0634d71697d6f88a460dce0ac8d627a29f7d1282&lt;\/hash&gt;\n      &lt;\/hashes&gt;\n      &lt;licenses&gt;\n        &lt;license&gt;\n          &lt;id&gt;Apache-2.0&lt;\/id&gt;\n        &lt;\/license&gt;\n      &lt;\/licenses&gt;\n      &lt;purl&gt;pkg:maven\/org.apache.tomcat\/tomcat-catalina@9.0.14&lt;\/purl&gt;\n    &lt;\/component&gt;\n      &lt;!-- More components here --&gt;\n  &lt;\/components&gt;\n&lt;\/bom&gt;<\/code><\/pre>\n<p>\nIl BOM pu\u00f2 essere utilizzato non solo come parametri di input per Dependency Track, ma anche per l'inventario dei componenti software nella catena di fornitura, ad esempio, per fornire ai clienti 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 affermava che al momento dell'acquisto di software qualsiasi ente pubblico dovrebbe richiedere un BOM per prevenire l'uso di componenti vulnerabili, tuttavia, a causa di ci\u00f2, la legge non \u00e8 mai entrata in vigore.<\/p>\n<p>Tornando a SCA, Dependency Track ha integrazioni pronte con piattaforme di notifica come Slack e sistemi di gestione delle vulnerabilit\u00e0 come Kenna Security. Va anche detto che Dependency Track identifica versioni obsolete di pacchetti e fornisce informazioni sulle licenze (grazie al supporto di SPDX).<\/p>\n<p>Se parliamo specificamente della qualit\u00e0 SCA, qui c'\u00e8 una differenza fondamentale.<\/p>\n<p>Dependency Track non accetta un progetto come input, ma accetta un BOM. Ci\u00f2 significa che se vogliamo controllare un progetto, dobbiamo prima generare bom.xml, ad esempio, utilizzando CycloneDX. In questo modo, Dependency Track dipende direttamente da CycloneDX. Allo stesso tempo, questo offre la possibilit\u00e0 di personalizzazione. Cos\u00ec, il team di OZON ha scritto <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ozonru\/cyclonedx-go\">un modulo CycloneDX<\/a><\/noindex> per la creazione di file BOM per progetti in Golang con l'obiettivo di una successiva scansione tramite Dependency Track.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/sonatype.ru\/#nexusiq\">Nexus IQ<\/a><\/noindex> \u2014 soluzione commerciale SCA di Sonatype che fa parte dell'ecosistema Sonatype, che include anche Nexus Repository Manager. Nexus IQ pu\u00f2 accettare in input sia archivi war (per progetti Java) tramite interfaccia web o API, sia BOM, se la vostra organizzazione non ha ancora effettuato il passaggio da CycloneDX alla nuova soluzione. A differenza delle soluzioni open source, IQ si riferisce non solo a CP\/PURL per il componente identificato e alla relativa vulnerabilit\u00e0 nel database, ma considera anche ricerche interne, come il nome della funzione o della classe vulnerabile. I meccanismi di IQ saranno esaminati pi\u00f9 avanti nella valutazione dei risultati.<\/p>\n<p>Riassumiamo alcune conclusioni sulle caratteristiche funzionali e consideriamo i linguaggi supportati per l'analisi:<\/p>\n<p>Linguaggio<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>\nFunzionalit\u00e0<\/p>\n<p>Funzionalit\u00e0<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Capacit\u00e0 di verificare la conformit\u00e0 delle licenze per i componenti utilizzati nel codice sorgente<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Possibilit\u00e0 di scansione e analisi per vulnerabilit\u00e0 e conformit\u00e0 delle licenze per le immagini Docker<br \/>\n+ Integrazione con Clair<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Possibilit\u00e0 di impostare politiche di sicurezza per l'utilizzo di librerie open source<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Possibilit\u00e0 di eseguire la scansione di repository open source per componenti vulnerabili<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>Presenza di un gruppo di ricerca specializzato<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Operativit\u00e0 in un ambiente chiuso<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Utilizzo di database esterni<br \/>\n+ Database Sonatype privato<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 componenti open source durante il tentativo di caricamento nell'ambiente di sviluppo secondo le politiche configurate<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Raccomandazioni per la correzione delle vulnerabilit\u00e0, presenza di link per la correzione<br \/>\n+<br \/>\n+- (dipende dalla descrizione nei database pubblici)<br \/>\n+- (dipende dalla descrizione nei database pubblici)<\/p>\n<p>Classificazione delle vulnerabilit\u00e0 scoperte in base alla gravit\u00e0<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Modello di accesso basato sui ruoli<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Supporto per interfaccia a linea di comando CLI<br \/>\n+<br \/>\n+<br \/>\n+- (solo per CycloneDX)<\/p>\n<p>Estrazione \/ ordinamento delle vulnerabilit\u00e0 in base a criteri definiti<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Dashboard sullo stato delle applicazioni<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Generazione di report in formato PDF<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Generazione di report in formato JSONCSV<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>Supporto per la lingua russa<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u2014<\/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\u2014<br \/>\n+<\/p>\n<p>Integrazione con il sistema di integrazione continua (continuous integration) Bamboo<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integrazione con il sistema di integrazione continua (continuous integration) TeamCity<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integrazione con il sistema di integrazione continua (continuous integration) GitLab<br \/>\n+<br \/>\n+- (come plug-in per GitLab)<br \/>\n+<\/p>\n<p>Integrazione con il sistema di integrazione continua (continuous integration) Jenkins<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Disponibilit\u00e0 di plug-in per IDE<br \/>\n+ IntelliJ, Eclipse, Visual Studio<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Supporto per integrazione personalizzata tramite web-services (API) dello strumento<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<h3>Dependency Check<\/h3>\n<p><\/p>\n<h4>Primo avvio<\/h4>\n<p>\nEseguiamo il Dependency Check su un'applicazione volutamente vulnerabile <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appsecco\/dvja\">DVJA<\/a><\/noindex>.<\/p>\n<p>Per 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 lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/d5b9fe5a8eb68569387dd0bfd38af459.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nApriamo il file. Dopo una panoramica sulle vulnerabilit\u00e0 totali, possiamo vedere informazioni sulle vulnerabilit\u00e0 con un alto livello di gravit\u00e0 e fiducia, con riferimento al pacchetto, CPE, numero CVE.<\/p>\n<p>Successivamente, seguir\u00e0 informazioni pi\u00f9 dettagliate, in particolare su quale sia stata la motivazione (evidence), ovvero un certo BOM.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/53dd89b0ff20c4c51aaf7412399e7fd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDopo, ci saranno CPE, PURL e descrizione CVE. Le raccomandazioni per la correzione, tra l'altro, non vengono fornite a causa della loro assenza nel database NVD.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/ba2021aa8b6bf175383298b2c2a71670.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPer un'analisi sistematica dei risultati della scansione, \u00e8 possibile configurare Nginx con impostazioni minime o inviare i difetti rilevati a un sistema di gestione dei difetti che supporta connettori per il Dependency Check. Ad esempio, Defect Dojo. <\/p>\n<h3>Dependency Track<\/h3>\n<p><\/p>\n<h4>Installazione<\/h4>\n<p>\nDependency Track, d'altra parte, \u00e8 una piattaforma web con rappresentazioni grafiche, quindi la questione del salvataggio dei difetti in una soluzione esterna non si pone. <br \/>\nI seguenti scenari sono supportati per l'installazione: Docker, WAR, Executable WAR. <\/p>\n<h4>Primo avvio<\/h4>\n<p>\nAccedi all'URL del servizio avviato. Entra con admin\/admin, cambia login e password, dopo di che accederai al Dashboard. La prossima cosa che faremo sar\u00e0 creare un progetto per l'applicazione di test in Java in<i> Home\/Projects \u2192 Create Project <\/i>. Prenderemo come esempio DVJA.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" 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>\nOtteniamo bom.xml e carichiamo il file nel progetto creato <i>DVJA \u2192 Dependencies \u2192 Upload BOM<\/i>.<\/p>\n<p>Andiamo su Administration \u2192 Analyzers. Siamo consapevoli che \u00e8 attivato solo l'Internal Analyzer, incluso NVD. Colleghiamo anche Sonatype OSS Index.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/3879a9a3d5f227d9740a984e7b1b91b2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCos\u00ec, otteniamo il seguente scenario per il nostro progetto:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/004f2ab3383acb87e3d5e8c0fba1f3c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNell'elenco \u00e8 presente anche una vulnerabilit\u00e0 applicabile a Sonatype OSS:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" 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 report xml di Dependency Check. Le ultime versioni supportate per l'integrazione con Dependency Check erano 1.0.0 \u2014 4.0.2, mentre io testavo la 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 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 dai pacchetti scaricati da <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/iqserver\/installing\/iq-server-installation\">documentazione<\/a><\/noindex>, ma per questo scopo abbiamo creato 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 lavoro e confronto SCA. Prima parte\" 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 lavoro e confronto SCA. Prima parte\" 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 lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/d99ce4e47218001fd1a76722e2633bea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCome si pu\u00f2 vedere, la configurazione nel caso di IQ \u00e8 un po' pi\u00f9 complessa, poich\u00e9 dobbiamo anche creare politiche applicabili per i diversi \u201cstadi\u201d (dev, build, stage, release). Questo \u00e8 necessario per bloccare i componenti vulnerabili man mano che avanzano nel pipeline verso la produzione, oppure bloccarli appena arrivano nel Nexus Repo durante il download da parte degli sviluppatori.<\/p>\n<p>Per percepire la differenza tra open source ed enterprise, eseguiremo una scansione analoga tramite Nexus IQ <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/integrations\/sonatype-clm-for-maven\">plugin Maven<\/a><\/noindex>, creando preventivamente 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>\nAndiamo all'URL per il rapporto generato nell'interfaccia web di IQ:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/f81f998037ba53ef62298955077d044d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQui puoi vedere tutte le violazioni della politica con indicazioni di vari livelli di gravit\u00e0 (da Info a Security Critical). La lettera D accanto a un componente indica che \u00e8 una Direct Dependency, mentre la lettera T accanto a un componente indica che \u00e8 una Transitive Dependency, ovvero \u00e8 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 individuate in Node.js, Java e Ruby si trovano nelle dipendenze transitive.<\/p>\n<p>Se apriamo una delle violazioni della politica di Nexus IQ, possiamo vedere una descrizione del componente, cos\u00ec come il Version Graph, che mostra la posizione della versione attuale sulla linea temporale, e in quale momento la vulnerabilit\u00e0 smette di essere tale. L'altezza delle candele sul grafico indica la popolarit\u00e0 di utilizzo di questo componente.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/d33968a5ce5904da6f50133f882521fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSe si accede alla sezione delle vulnerabilit\u00e0 e si espande il CVE, \u00e8 possibile leggere la descrizione di questa vulnerabilit\u00e0, le raccomandazioni per la risoluzione e il motivo per cui questo componente \u00e8 stato considerato in violazione, cio\u00e8 la presenza della classe. <code>DiskFileitem.class<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" 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 lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/c9e580ad178a9c0307ed1e63d6dd244d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nRiassumiamo solo le vulnerabilit\u00e0 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 analizzate: 62<\/li>\n<li>Dipendenze vulnerabili: 16<\/li>\n<li>Vulnerabilit\u00e0 trovate: 42 (8 db sonatype)<\/li>\n<\/ul>\n<p>\n<b>Totale Dependency Check: <\/b><\/p>\n<ul>\n<li>Dipendenze analizzate: 47<\/li>\n<li>Dipendenze vulnerabili: 13<\/li>\n<li>Vulnerabilit\u00e0 trovate: 91 (14 oss sonatype)<\/li>\n<\/ul>\n<p>\n<b>Totale Dependency Track: <\/b><\/p>\n<ul>\n<li>Dipendenze analizzate: 59<\/li>\n<li>Dipendenze vulnerabili: 10<\/li>\n<li>Vulnerabilit\u00e0 trovate: 51 (1 oss sonatype)<\/li>\n<\/ul>\n<p>\nIl passo successivo sar\u00e0 analizzare i risultati ottenuti e capire quali di queste vulnerabilit\u00e0 rappresentano un reale difetto e quali sono falsi positivi.<\/p>\n<h3>Disclaimer<\/h3>\n<p>\nQuesta revisione non \u00e8 una verit\u00e0 indiscutibile. L'autore non aveva l'obiettivo di mettere in evidenza uno strumento rispetto agli altri. Il senso della revisione era dimostrare i meccanismi di funzionamento degli strumenti SCA e i modi di 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>Incongruenza CVE con il componente identificato<\/b><\/li>\n<li>Ad esempio, se la vulnerabilit\u00e0 \u00e8 stata trovata nel framework struts2 e lo strumento indica il componente del framework struts-tiles, al quale questa vulnerabilit\u00e0 non si aplica, si tratta di un falso positivo<\/li>\n<li><b>Incongruenza CVE con la versione identificata del componente<\/b><\/li>\n<li>Ad esempio, se la vulnerabilit\u00e0 \u00e8 legata alla versione di python &gt; 3.5 e lo strumento segnala come vulnerabile la versione 2.7 \u2014 si tratta di un falso positivo, poich\u00e9 in realt\u00e0 la vulnerabilit\u00e0 si applica solo alla serie di prodotti 3.x <\/li>\n<li> <b>Duplicazione di CVE<\/b><\/li>\n<li>Ad esempio, se SCA ha indicato un CVE che consente di implementare RCE, dopo di che SCA indica per lo stesso componente un CVE applicabile ai prodotti Cisco, soggetti a questa RCE. In tal caso si tratta di un falso positivo.<\/li>\n<li>Ad esempio, se una CVE \u00e8 stata trovata nel componente spring-web, dopo di che SCA fa riferimento a questa stessa CVE in altri componenti del framework Spring, mentre la CVE non si applica ad altri componenti. In tal caso si tratta di un falso positivo. <\/li>\n<\/ul>\n<p>\nL'oggetto della ricerca \u00e8 il progetto Open Source DVJA. Nello studio sono stati inclusi solo componenti java (senza js).<\/p>\n<h3>Risultati complessivi<\/h3>\n<p>\nPassiamo subito ai risultati della revisione manuale delle vulnerabilit\u00e0 identificate. \u00c8 possibile consultare il rapporto completo per ogni CVE nell'Allegato. <\/p>\n<p><i>Risultati complessivi su tutte le vulnerabilit\u00e0:<\/i><\/p>\n<p>Caratteristica<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Vulnerabilit\u00e0 totali identificate<br \/>\n42<br \/>\n91<br \/>\n51<\/p>\n<p>Falsi positivi (vulnerabilit\u00e0 identificate erroneamente)<br \/>\n2(4.76%)<br \/>\n62(68,13%)<br \/>\n29(56.86%)<\/p>\n<p>Nessuna vulnerabilit\u00e0 pertinente identificata (falsi negativi)<br \/>\n10<br \/>\n20<br \/>\n27<\/p>\n<p>\n<i>Risultati complessivi per componenti:<\/i><\/p>\n<p>Caratteristica<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>Falsi positivi identificati per componenti vulnerabili<br \/>\n1<br \/>\n5<br \/>\n0<\/p>\n<p>Falsi positivi identificati per componenti vulnerabili<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 indicati i componenti, e su quello verticale le vulnerabilit\u00e0 identificate al loro interno. <\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" 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 lavoro e confronto SCA. Prima parte\" 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 lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/585d7bcef052ef24e4de6c7e1a4e7c0b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA titolo di confronto, uno studio analogo \u00e8 stato condotto dal team di Sonatype testando un progetto composto da 1531 componenti utilizzando OWASP Dependency Check. Come possiamo vedere, il rapporto tra rumore e allarmi corretti \u00e8 simile ai nostri risultati.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" 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>Esaminiamo alcune CVE dai risultati della nostra scansione per capire le ragioni di tali risultati.<\/p>\n<h3>Scopri di pi\u00f9<\/h3>\n<p><\/p>\n<h4>\u21161<\/h4>\n<p>\nIniziamo a esplorare alcuni aspetti interessanti di Sonatype Nexus IQ.<\/p>\n<p>Nexus IQ indica un problema di deserializzazione con la possibilit\u00e0 di eseguire RCE nel Spring Framework pi\u00f9 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. Inizialmente sembra che ci sia una duplicazione della vulnerabilit\u00e0 in pi\u00f9 CVE. Infatti, se guardiamo CVE-2016-1000027 e CVE-2011-2894 nel database NVD, tutto appare 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 lavoro e confronto SCA. Prima parte\" 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 lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/d5b54a6ac15070b12f013eaacd2878f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCVE-2011-2894 \u00e8 abbastanza nota di per s\u00e9. Nella relazione <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> questo CVE \u00e8 stato riconosciuto come uno dei pi\u00f9 frequenti. Le descrizioni per 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 o meno chiaro. Da <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">un articolo di Tenable<\/a><\/noindex> comprendiamo che, oltre alla vulnerabilit\u00e0 in <code>RemoteInvocationSerializingExporter<\/code> in CVE-2011-2894, la vulnerabilit\u00e0 \u00e8 presente anche in <code>HttpInvokerServiceExporter<\/code>. Questo \u00e8 ci\u00f2 che ci dice Nexus IQ:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/a33f0853ce892d28eafafe2c8e7b2228.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTuttavia, niente di simile si trova in NVD, per cui Dependency Check e Dependency Track ricevono falsi negativi.<\/p>\n<p>Inoltre, dalla descrizione di CVE-2011-2894 si pu\u00f2 capire che la vulnerabilit\u00e0 \u00e8 effettivamente presente sia in spring-context:3.0.5 che in spring-core:3.0.5. Questa conferma pu\u00f2 essere trovata nell'articolo di colui che 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 approfondiamo la vulnerabilit\u00e0 CVE-2016-4003, capiremo che \u00e8 stata corretta gi\u00e0 nella versione 2.3.28; tuttavia, Nexus IQ ci avvisa di essa. Nella descrizione della vulnerabilit\u00e0 c'\u00e8 una nota:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principi di lavoro e confronto SCA. Prima parte\" src=\"\/wp-content\/uploads\/2020\/08\/081f9006748083727e424b709a338d60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn altre parole, la vulnerabilit\u00e0 esiste solo in combinazione con una versione obsoleta di JRE, di cui siamo stati avvisati. Riteniamo comunque che si tratti di un False Positive, anche se non 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 analizziamo la descrizione di CVE-2017-9804 e CVE-2017-7672, comprendiamo che il problema riguarda la <code>classe URLValidator<\/code>, e CVE-2017-9804 deriva da CVE-2017-7672. La presenza della seconda vulnerabilit\u00e0 non apporta alcun valore utile se non quello che la sua severit\u00e0 \u00e8 aumentata a High, quindi possiamo considerarla un rumore superfluo.<\/p>\n<p>In generale non sono stati trovati altri false positive per Nexus IQ.<\/p>\n<h3>\u21164<\/h3>\n<p>\nCi sono diversi aspetti che fanno risaltare 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>Il CVE in NVD segnala che \u00e8 applicabile solo per le versioni 5.2.x fino a 5.2.3, 5.1.x fino a 5.1.13, e versioni 5.0.x fino a 5.0.16; tuttavia, se guardiamo la descrizione del CVE in Nexus IQ, vediamo quanto segue:<br \/>\n<i>Avviso di Deviazione del Consiglio: 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 indicato nell'avviso.<\/i><\/p>\n<p>Dopo questo, segue un PoC per questa vulnerabilit\u00e0, che segnala la sua presenza nella versione 3.0.5.<\/p>\n<p>Un falso negativo viene inviato a Dependency Check e Dependency Track.<\/p>\n<h3>\u21165<\/h3>\n<p>\nEsaminiamo il falso positivo per Dependency Check e Dependency Track.<\/p>\n<p>Dependency Check si distingue per il fatto di riflettere quelle CVE che si riferiscono all'intero framework in NVD, per i componenti a cui queste CVE non sono applicabili. Questo riguarda le 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 \"assieme\" 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 nelle CVE \u2014 gestione delle richieste, validazione delle pagine e cos\u00ec via. Ci\u00f2 \u00e8 dovuto al fatto che ci\u00f2 che \u00e8 comune tra queste 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 applicano a struts2-core, che \u00e8 sostanzialmente un framework separato. In questo caso, Nexus IQ ha compreso correttamente la situazione e nelle CVE che ha fornito ha indicato che struts-core era a fine vita e che era necessario passare a struts2-core.<\/p>\n<h3>\u21166<\/h3>\n<p>\nIn alcune situazioni, \u00e8 ingiusto interpretare gli errori evidenti di Dependency Check e Dependency Track. In particolare, le vulnerabilit\u00e0 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, in realt\u00e0 appartengono a spring-web:3.0.5. Inoltre, alcune di queste vulnerabilit\u00e0 sono state trovate anche in Nexus IQ; tuttavia, IQ le ha correttamente identificate come appartenenti a un'altra componente. Dal fatto che queste vulnerabilit\u00e0 non siano state trovate in spring-core, non si pu\u00f2 affermare che non esistano nel framework in generale, e gli strumenti open source hanno giustamente indicato queste vulnerabilit\u00e0 (solo che hanno fatto un piccolo errore di attribuzione). <\/p>\n<h3>Conclusioni<\/h3>\n<p>\nCome possiamo vedere, la valutazione della validit\u00e0 delle vulnerabilit\u00e0 identificate tramite revisione manuale non fornisce risultati chiari, causando momenti controversi. I risultati mostrano che la soluzione 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 per ciascuna vulnerabilit\u00e0 CVE del NVD nelle proprie banche dati, specificando con precisione la classe o la funzione di vulnerabilit\u00e0 per ciascuna versione del componente, avendo condotto ulteriori ricerche (ad esempio, verificando le vulnerabilit\u00e0 su versioni precedenti del software). <\/p>\n<p>Un fattore non trascurabile nei risultati \u00e8 rappresentato anche da quelle vulnerabilit\u00e0 che non sono state incluse nel NVD, ma che sono comunque presenti nel database di Sonatype contrassegnate come SONATYPE. Secondo il rapporto <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">Lo stato delle vulnerabilit\u00e0 nella sicurezza open source 2020<\/a><\/noindex> il 45% delle vulnerabilit\u00e0 scoperte nel software open source non viene riportato nel NVD. Secondo il database di WhiteSource, solo il 29% di tutte le vulnerabilit\u00e0 open source registrate al di fuori del NVD viene infine pubblicato l\u00ec, rendendo cos\u00ec fondamentale cercare vulnerabilit\u00e0 anche in altre fonti.<\/p>\n<p>Come risultato, Dependency Check genera un elevato numero di falsi positivi, tralasciando alcune componenti vulnerabili. Dependency Track genera meno falsi positivi e identifica un numero maggiore di componenti, risultando visivamente pi\u00f9 chiaro nell'interfaccia web.<\/p>\n<p>Tuttavia, la pratica dimostra che il software open source deve diventare il primo passo verso una solida implementazione del DevSecOps. Il primo aspetto da considerare per integrare l'SCA nello sviluppo \u00e8 rappresentato dai processi, in particolare riflettendo insieme alla direzione e ai reparti correlati su come dovrebbero apparire i processi ideali all'interno della propria organizzazione. Potrebbe rivelarsi che per la tua organizzazione, inizialmente, Dependency Check o Dependency Track coprano tutte le esigenze aziendali, mentre le soluzioni enterprise rappresentino un naturale proseguimento per via dell'aumento della complessit\u00e0 delle applicazioni in fase di sviluppo.<\/p>\n<p>                        <b class=\"spoiler_title\">Appendice A. Risultati relativi ai componenti<\/b><br \/>\n                        <b>Legende:<\/b><\/p>\n<ul>\n<li>High \u2014 vulnerabilit\u00e0 di alto e critico livello nel componente<\/li>\n<li>Medium \u2014 vulnerabilit\u00e0 di livello medio di criticit\u00e0 nel componente<\/li>\n<li>TRUE \u2014 Vulnerabilit\u00e0 correttamente identificata (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 \/>\nRisultato<\/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 non trovato<\/p>\n<p>TRUE<\/p>\n<p>spring-web:3.0.5<br \/>\nAlto<br \/>\ncomponente non trovato<br \/>\nAlto<br \/>\nTRUE<\/p>\n<p>spring-context:3.0.5<br \/>\nMedium<br \/>\ncomponente non trovato<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\">Appendice B. Risultati relativi alle vulnerabilit\u00e0<\/b><br \/>\n                        <b>Legende:<\/b><\/p>\n<ul>\n<li>High \u2014 vulnerabilit\u00e0 di alto e critico livello nel componente<\/li>\n<li>Medium \u2014 vulnerabilit\u00e0 di livello medio di criticit\u00e0 nel componente<\/li>\n<li>TRUE \u2014 Vulnerabilit\u00e0 correttamente identificata (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 \/>\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 \/>\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 \/>\nBasso<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 \/>\nBasso<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 \/>\nLa vulnerabilit\u00e0 si applica solo alle versioni 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 \/>\nLa stessa vulnerabilit\u00e0 di CVE-2019-2692, con l'aggiunta \u00abgli attacchi possono avere un impatto significativo su ulteriori prodotti\u00bb<\/p>\n<p>\u2014<br \/>\nCVE-2017-15945<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nNon relativo a mysql-connector-java<\/p>\n<p>\u2014<br \/>\nCVE-2020-2933<br \/>\n\u2014<br \/>\nBasso<br \/>\nFALSE<br \/>\nDuplicato di 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 non trovato<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 non trovato<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 \/>\nEsempio esemplare a favore di IQ: \u00abIl 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 indicato nell'avviso.\u00bb<\/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 non trovato<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 \/>\nDuplicato di questa stessa vulnerabilit\u00e0 in spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 riguarda il componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\nCVE-2013-6429<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 riguarda il componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 riguarda il componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\nCVE-2013-7315<br \/>\nMedium<br \/>\nFALSE<br \/>\nSPLIT di CVE-2013-4152. + La vulnerabilit\u00e0 riguarda il componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 riguarda il componente spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 riguarda il componente spring-web<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nAlto<br \/>\nFALSE<br \/>\nDuplicato di questa stessa vulnerabilit\u00e0 in spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\nCVE-2014-1904<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 riguarda il componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\nCVE-2014-3625<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 riguarda il componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\nCVE-2016-9878<br \/>\nAlto<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 riguarda il componente spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\nCVE-2018-1270<br \/>\nAlto<br \/>\nFALSE<br \/>\nPer spring-expression \/ spring-messages<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\nCVE-2018-1271<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 riguarda il 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 \/>\nBasso<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 \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2011-2894<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nLa vulnerabilit\u00e0 non \u00e8 relativa a spring-tx<\/p>\n<p>struts-core:1.3.8<br \/>\n\u2014<br \/>\nCVE-2011-5057 (OSSINDEX)<\/p>\n<p>Medium<br \/>\nFASLE<br \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0391 (OSSINDEX)<br \/>\nCVE-2012-0391<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0094 (OSSINDEX)<br \/>\nCVE-2014-0094<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0113 (OSSINDEX)<br \/>\nCVE-2014-0113<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 relativa a 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 \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0392 (OSSINDEX)<br \/>\nCVE-2012-0392<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0393 (OSSINDEX)<br \/>\nCVE-2012-0393<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 relativa a 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 \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0838 (OSSINDEX)<br \/>\nCVE-2012-0838<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1965 (OSSINDEX)<br \/>\nCVE-2013-1965<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1966 (OSSINDEX)<br \/>\nCVE-2013-1966<br \/>\nAlto<br \/>\nFASLE<br \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\nCVE-2013-2115<br \/>\nAlto<br \/>\nFASLE<br \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2134 (OSSINDEX)<br \/>\nCVE-2013-2134<br \/>\nAlto<br \/>\nFASLE<br \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2135 (OSSINDEX)<br \/>\nCVE-2013-2135<br \/>\nAlto<br \/>\nFASLE<br \/>\nVulnerabilit\u00e0 relativa a 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 \/>\nVulnerabilit\u00e0 relativa a Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2016-0785 (OSSINDEX)<br \/>\nCVE-2016-0785<br \/>\nAlto<br \/>\nFALSE<br \/>\nVulnerabilit\u00e0 relativa a 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 \/>\nVulnerabilit\u00e0 relativa a 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 \/>\nDuplice di 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 \/>\nDuplicato di 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 \/>\nApplicabile ad Apache Struts 2.x fino alla versione 2.3.28, mentre attualmente \u00e8 in uso la versione 2.3.30. Tuttavia, in base alla descrizione, il CVE \u00e8 valido per tutte le versioni di Struts 2, se si utilizza JRE 1.7 o inferiore. Sembra che qui ci abbiano voluto tutelare, ma pi\u00f9 che altro assomiglia a un FALSE<\/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 \/>\nQuesta \u00e8 la vulnerabilit\u00e0 sfruttata dagli attaccanti in Equifax nel 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 \/>\nPer struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nPer struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nPer commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nNon si applica a taglib<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nSi applica a struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nNon si applica a taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nNon si applica 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 \/>\nPer struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nPer struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nSotto commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nNon si applica a tiles<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nPer struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nNon si applica a taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nAlto<br \/>\nFALSE<br \/>\nNon si applica 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 4.9.10 - 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. 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\" \/>\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) 4.9.10\" \/>\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. 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\" \/>\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 funzionamento e confronto SCA. Parte prima | ProHoster","description":"L'importanza dell'analisi dei componenti software di terze parti (Software Composition Analysis - SCA) nel processo di sviluppo cresce con il rilascio dei rapporti annuali sulle vulnerabilit\u00e0 delle librerie open source pubblicati da aziende come Synopsys, Sonatype, Snyk, White Source. Secondo il rapporto The State of Open Source Security Vulnerabilities 2020, il numero di vulnerabilit\u00e0 identificate nell'open source nel 2019 \u00e8 aumentato di quasi 1.5","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. 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","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"},"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}]}}