{"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\/en\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","title":{"rendered":"DevSecOps: principles of operation and comparison of SCA. Part one","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>The significance of Software Composition Analysis (SCA) in the development process is increasing as annual reports on vulnerabilities in open source libraries are published by companies like Synopsys, Sonatype, Snyk, and White Source. According to the report <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">The State of Open Source Security Vulnerabilities 2020<\/a><\/noindex> the number of identified vulnerabilities in open source in 2019 increased by almost 1.5 times compared to the previous year, while components with open source are used in 60% to 80% of projects. According to independent opinion, SCA processes are a separate practice of OWASP SAMM and BSIMM as a maturity indicator, and in the first half of 2020, OWASP released the new OWASP Software Component Verification Standard (SCVS), providing best practices for verifying third-party components in the software supply chain.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" 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 \/>\nOne of the most telling cases <noindex><a rel=\"nofollow\" href=\"https:\/\/xakep.ru\/2017\/09\/14\/equifax-dejstvitelno-vzlomali-cherez-bag-v-apache-struts-no-uyazvimost-okazalas-staroj\/\">occurred<\/a><\/noindex> with Equifax in May 2017. Unknown attackers obtained information about 143 million Americans, including full names, addresses, social security numbers, and driver's license numbers. In 209,000 cases, documents also contained information about the victims' credit cards. This breach occurred due to the exploitation of a critical vulnerability in Apache Struts 2 (CVE-2017-5638), even though a fix had been released back in March 2017. The company had two months to implement the update, but no one addressed this issue.<\/p>\n<p>This article will discuss the selection of a tool for conducting SCA from the perspective of analysis quality. A functional comparison of the tools will also be provided. The process of integration into CI\/CD and integration capabilities will be left for future publications. A wide list of tools was presented by OWASP <noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-community\/Component_Analysis\">on its website<\/a><\/noindex>, but in this overview, we will only touch upon the most popular open source tool Dependency Check, the slightly less well-known open source platform Dependency Track, and the enterprise solution Sonatype Nexus IQ. We will also examine how these solutions work and compare the results regarding false positives.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/0580758082abd9950aa9c483d546f1ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Operating principle<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/jeremylong.github.io\/DependencyCheck\/\">Dependency Check<\/a><\/noindex> is a utility (CLI, maven, jenkins module, ant) that analyzes project files, gathering pieces of information about dependencies (package name, groupid, specification title, version\u2026), constructs a CPE string (Common Platform Enumeration), Package URL (PURL) and identifies vulnerabilities for CPE\/PURL from databases (NVD, Sonatype OSS Index, NPM Audit API\u2026), after which it generates a one-time report in HTML, JSON, XML formats...<\/p>\n<p>Let's see what a CPE looks like:<\/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> Indicates whether the component refers to an application (a), operating system (o), or hardware (h) (Required field)<\/li>\n<li><b>Vendor:<\/b> The name of the product's manufacturer (Required field)<\/li>\n<li><b>Product:<\/b> The name of the product (Required field)<\/li>\n<li><b>Version:<\/b> Component version (Deprecated field)<\/li>\n<li><b>Update:<\/b> Package update<\/li>\n<li><b>Edition:<\/b> Inherited version (Deprecated field)<\/li>\n<li><b>Language:<\/b> Language defined in RFC-5646<\/li>\n<li><b>SW Edition:<\/b> Software version<\/li>\n<li><b>Target SW:<\/b> The software environment in which the product operates<\/li>\n<li><b>Target HW:<\/b> The hardware environment in which the product operates<\/li>\n<li><b>Other:<\/b> Information about the vendor or product<\/li>\n<\/ul>\n<p>\nAn example of a CPE looks as follows:<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*<\/code><\/pre>\n<p>\nThis string indicates that CPE version 2.3 describes an application component from the manufacturer <code>pivotal_software <\/code>with the name <code>spring_framework<\/code> version 3.0.0. If we look up the vulnerability <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2014-0225\">CVE-2014-0225<\/a><\/noindex> in the NVD, we can see a reference to this CPE. The primary issue to note immediately is that the CVE in the NVD, according to the CPE, reports an issue with the framework and not with a specific component. That is, if developers are heavily tied to the framework, and the identified vulnerability does not pertain to the modules used by them, the security specialist will have to delve into this CVE and consider an update.<\/p>\n<p>The URL is also used by SCA tools. The format of the package URL is as follows:<\/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>There will always be 'pkg', indicating that this is a package URL (Required field)<\/li>\n<li><b>Type:<\/b> The 'type' of package or 'protocol' of the package, such as maven, npm, nuget, gem, pypi, etc. (Required field)<\/li>\n<li><b>Namespace:<\/b> Some prefix of the name, such as a Maven group ID, Docker image owner, GitHub user, or organization. Optional and depends on the type.<\/li>\n<li><b>Name:<\/b> Package name (Required field)<\/li>\n<li><b>Version:<\/b> Package version<\/li>\n<li><b>Qualifiers:<\/b> Additional qualification data for the package, such as OS, architecture, distribution, etc. Optional and type-dependent item.<\/li>\n<li><b>Subpath:<\/b> An additional path in the package relative to the package root<\/li>\n<\/ul>\n<p>\nFor example:<\/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 an on-premise web platform that accepts ready-made Bill of Materials (BOM) generated <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/CycloneDX\">CycloneDX<\/a><\/noindex> and <noindex><a rel=\"nofollow\" href=\"https:\/\/spdx.org\/licenses\/\">SPDX<\/a><\/noindex>, that is, ready specifications of existing dependencies. This is an XML file describing dependencies \u2014 name, hashes, package url, publisher, license. Then Dependency Track parses the BOM, checks the existing CVEs related to the identified dependencies from the vulnerability database (NVD, Sonatype OSS Index \u2026), after which it builds graphs, calculates metrics, regularly updating the vulnerability status of components. <\/p>\n<p>An example of what a BOM can look like in XML format:<\/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>\nBOM can be used not only as input parameters for Dependency Track but also for inventorying software components in the supply chain, for instance, to provide to the software customer. In 2014, a law was even proposed in the US <noindex><a rel=\"nofollow\" href=\"https:\/\/www.congress.gov\/bill\/113th-congress\/house-bill\/5793\">\"Cyber Supply Chain Management and Transparency Act of 2014\"<\/a><\/noindex>, which stated that when purchasing software, any government agency must request a BOM to prevent the use of vulnerable components, but for various reasons, the act never came into force.<\/p>\n<p>Returning to SCA, Dependency Track has ready-made integrations with Notification Platforms like Slack and vulnerability management systems like Kenna Security. It is also worth noting that Dependency Track identifies outdated package versions and provides information about licenses (thanks to SPDX support).<\/p>\n<p>When it comes to the quality of SCA, there is a fundamental difference here.<\/p>\n<p>Dependency Track does not accept a project as input, but rather accepts a BOM. This means that if we want to check a project, we first need to generate bom.xml, for example, using CycloneDX. Thus, Dependency Track directly depends on CycloneDX. At the same time, this allows for customization. For instance, the OZON team created <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ozonru\/cyclonedx-go\">the CycloneDX module<\/a><\/noindex> for building BOM files for projects in Golang for further scanning via Dependency Track.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/sonatype.ru\/#nexusiq\">Nexus IQ<\/a><\/noindex> is a commercial SCA solution from Sonatype, which is part of the Sonatype ecosystem that also includes Nexus Repository Manager. Nexus IQ can accept both war archives (for Java projects) via web interface or API, and BOM, if your organization hasn't transitioned from CycloneDX to the new solution. Unlike open-source solutions, IQ not only refers to the CP\/PURL of the identified component and the corresponding vulnerability in its database but also takes into account proprietary research, such as the name of the vulnerable function or class. The mechanisms of IQ will be explored later when analyzing the results.<\/p>\n<p>Let's summarize some key functional features and also look at the supported languages for analysis:<\/p>\n<p>Language<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>\nFunctional capabilities<\/p>\n<p>Functional capabilities<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>The ability to ensure the verification of components used in source code for license compliance.<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>The ability to scan and analyze Docker images for vulnerabilities and license compliance.<br \/>\n+ Integration with Clair<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>The ability to set security policies for using open source libraries.<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>The ability to scan open source repositories for vulnerable components.<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>The presence of a specialized research group.<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Operation in a closed loop.<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Use of third-party databases.<br \/>\n+ Sonatype's closed database.<br \/>\n+ Sonatype OSS, NPM Public Advisors.<br \/>\n+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, support for proprietary vulnerability databases.<\/p>\n<p>The ability to filter open source components when attempting to upload them to the development loop according to configured policies.<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Recommendations for fixing vulnerabilities, including links to fixes.<br \/>\n+<br \/>\n+- (depends on the description in public databases)<br \/>\n+- (depends on the description in public databases)<\/p>\n<p>Ranking of identified vulnerabilities by criticality<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Role-based access model<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Support for Command Line Interface (CLI)<br \/>\n+<br \/>\n+<br \/>\n+- (only for CycloneDX)<\/p>\n<p>Sampling \/ sorting of vulnerabilities by defined criteria<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Dashboard for application status<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>PDF report generation<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Report generation in JSONCSV format<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>Support for the Russian language<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nIntegration capabilities<\/p>\n<p>Integration<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Integration with LDAP \/ Active Directory<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Integration with the continuous integration system (continous integration) Bamboo<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integration with the continuous integration system (continous integration) TeamCity<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integration with the continuous integration system (continous integration) GitLab<br \/>\n+<br \/>\n+- (as a plugin for GitLab)<br \/>\n+<\/p>\n<p>Integration with the continuous integration system (continous integration) Jenkins<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Availability of plugins for IDEs<br \/>\n+ IntelliJ, Eclipse, Visual Studio<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Support for customized integration via web-services (API) of the tool<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<h3>Dependency Check<\/h3>\n<p><\/p>\n<h4>First launch<\/h4>\n<p>\nLet's run Dependency Check against a deliberately vulnerable application <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appsecco\/dvja\">DVJA<\/a><\/noindex>.<\/p>\n<p>For this, we will use <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>\nAs a result, the dependency-check-report.html will appear in the target directory.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/d5b9fe5a8eb68569387dd0bfd38af459.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLet's open the file. After the summary information on the total number of vulnerabilities, we can see information on vulnerabilities with high levels of Severity and Confidence with indications of the package, CPE, and the number of CVE.<\/p>\n<p>Next comes more detailed information, including what the decision was based on (evidence), that is, a BOM.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/53dd89b0ff20c4c51aaf7412399e7fd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThen comes CPE, PURL, and a description of CVE. Recommendations for remediation are not provided due to their absence in the NVD database.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/ba2021aa8b6bf175383298b2c2a71670.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor systematic viewing of scan results, you can configure Nginx with minimal settings, or send the detected defects to a defect management system that supports connectors to Dependency Check. For example, Defect Dojo. <\/p>\n<h3>Dependency Track<\/h3>\n<p><\/p>\n<h4>Installation<\/h4>\n<p>\nDependency Track, in turn, is a web platform with graph displays, so the acute issue of storing defects in a third-party solution is not present here. <br \/>\nThe following installation scenarios are supported: Docker, WAR, Executable WAR. <\/p>\n<h4>First launch<\/h4>\n<p>\nGo to the URL of the launched service. Log in via admin\/admin, change the username and password, after which we arrive at the Dashboard. The next thing we will do is create a project for the test application in Java at<i> Home \/ Projects \u2192 Create Project <\/i>. As an example, we will take DVJA.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/338aaa1c9ca0ac99f2e857f8ce001a02.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSince Dependency Track can only accept BOM as input, we need to obtain this BOM. Let's use <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>\nWe obtain bom.xml and upload the file in the created project <i>DVJA \u2192 Dependencies \u2192 Upload BOM<\/i>.<\/p>\n<p>Let's go to Administration \u2192 Analyzers. We understand that we only have the Internal Analyzer enabled, which includes NVD. We will also connect Sonatype OSS Index.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/3879a9a3d5f227d9740a984e7b1b91b2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThus, we will get the following picture for our project:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/004f2ab3383acb87e3d5e8c0fba1f3c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlso, in the list, we can find one vulnerability applicable to Sonatype OSS:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/e459f08218f890b46fb4050c30da63c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThe main disappointment was that Dependency Track no longer accepts Dependency Check XML reports. The last supported versions of the integration with Dependency Check were 1.0.0 \u2014 4.0.2, while I was testing 5.3.2.<\/p>\n<p>Here <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d2WMONyBbTw\">video<\/a><\/noindex> Volume Provisioning. <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/IPWPISSk5rc\">here<\/a><\/noindex>), when it was still possible. <\/p>\n<h3>Nexus IQ <\/h3>\n<p><\/p>\n<h4>First launch<\/h4>\n<p>\nNexus IQ is installed from archives via <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/iqserver\/installing\/iq-server-installation\">the documentation<\/a><\/noindex>, but we have built a Docker image for this purpose.<\/p>\n<p>After logging into the console, you need to create an Organization and an Application.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/4c6df91bad77e87ea066ff3514a03644.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/d8580ba46852e4d97625a22e215c21d3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/d99ce4e47218001fd1a76722e2633bea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAs can be seen, the configuration in the case of IQ is somewhat more complex, as we also need to create policies applicable for different stages (dev, build, stage, release). This is necessary to block vulnerable components as they move further down the pipeline closer to production, or to block them as soon as they enter Nexus Repo when downloaded by developers.<\/p>\n<p>To experience the difference between open source and enterprise, let's perform the same scan through Nexus IQ similar to <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/integrations\/sonatype-clm-for-maven\">Maven plugin<\/a><\/noindex>, first creating a test application in the NexusIQ interface <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>\nGo to the URL for the generated report in the IQ web interface:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/f81f998037ba53ef62298955077d044d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHere you can see all policy violations indicating various levels of significance (from Info to Security Critical). The letter D next to a component means that the component is a Direct Dependency, while the letter T next to a component indicates that the component is a Transitive Dependency.<\/p>\n<p>By the way, the report <noindex><a rel=\"nofollow\" href=\"https:\/\/snyk.io\/open-source-security\/\">State of Open Source Security Report 2020<\/a><\/noindex> by Snyk reports that more than 70% of open source vulnerabilities discovered in Node.js, Java, and Ruby are located in transitive dependencies.<\/p>\n<p>If you open one of the Nexus IQ policy violations, you can see a description of the component, as well as a Version Graph that shows the location of the current version on the timeline graph, as well as when the vulnerability ceases to be vulnerable. The height of the candles on the graph indicates the popularity of the use of this component.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/d33968a5ce5904da6f50133f882521fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIf you go to the vulnerabilities section and expand the CVE, you can read the description of this vulnerability, remediation recommendations, as well as the reason why this component fell under the violation, namely the presence of the class <code>DiskFileitem.class<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/6d91b98a9a9a1a62264f1b4194f33ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/c9e580ad178a9c0307ed1e63d6dd244d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLet's summarize only concerning third-party Java components, removing JS components. In parentheses, we will indicate the number of vulnerabilities found outside of the NVD.<\/p>\n<p><b>Total Nexus IQ: <\/b><\/p>\n<ul>\n<li>Dependencies Scanned: 62<\/li>\n<li>Vulnerable Dependencies: 16<\/li>\n<li>Vulnerabilities Found: 42 (8 sonatype db)<\/li>\n<\/ul>\n<p>\n<b>Total Dependency Check: <\/b><\/p>\n<ul>\n<li>Dependencies Scanned: 47<\/li>\n<li>Vulnerable Dependencies: 13<\/li>\n<li>Vulnerabilities Found: 91 (14 sonatype oss)<\/li>\n<\/ul>\n<p>\n<b>Total Dependency Track: <\/b><\/p>\n<ul>\n<li>Dependencies Scanned: 59<\/li>\n<li>Vulnerable Dependencies: 10<\/li>\n<li>Vulnerabilities Found: 51 (1 sonatype oss)<\/li>\n<\/ul>\n<p>\nThe next step is to analyze the results obtained and figure out which of these vulnerabilities is a real defect and which is a false positive.<\/p>\n<h3>Disclaimer<\/h3>\n<p>\nThis review is not an undisputed truth. The author did not set out to highlight a specific tool against others. The purpose of the review was to show the mechanisms of SCA tools and the ways to verify their results.<\/p>\n<h3>Comparison of results<\/h3>\n<p>\n<b>Conditions:<\/b><\/p>\n<p><b>A false positive concerning the vulnerabilities of third-party components is:<\/b><\/p>\n<ul>\n<li><b>Mismatch of CVE to the identified component<\/b><\/li>\n<li>For example, if a vulnerability is identified in the Struts2 framework, and the tool points to a component of the Struts-tiles framework, to which this vulnerability does not apply, then this is a false positive.<\/li>\n<li><b>Mismatch of CVE to the identified version of the component<\/b><\/li>\n<li>For example, the vulnerability is tied to version python &gt; 3.5 and the tool flags version 2.7 as vulnerable \u2014 this is a false positive, as the vulnerability actually only applies to the 3.x product branch. <\/li>\n<li> <b>Duplicate CVE<\/b><\/li>\n<li>For example, if SCA indicated a CVE that allows for RCE, after which SCA points for this same component to a CVE applicable to Cisco products susceptible to this RCE. In this case, it will be a false positive.<\/li>\n<li>For example, a CVE was found in the spring-web component, after which SCA points to the same CVE in other components of the Spring Framework, while the CVE has no relation to other components. In this case, it will be a false positive. <\/li>\n<\/ul>\n<p>\nThe research object is the Open Source project DVJA. The study involved only Java components (without JS).<\/p>\n<h3>Summary of Results<\/h3>\n<p>\nLet's move directly to the results of the manual review of the identified vulnerabilities. A complete report for each CVE can be found in the Appendix. <\/p>\n<p><i>Summary of results for all vulnerabilities:<\/i><\/p>\n<p>Parameter<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Total vulnerabilities identified<br \/>\n42<br \/>\n91<br \/>\n51<\/p>\n<p>Incorrectly identified vulnerabilities (false positive)<br \/>\n2(4.76%)<br \/>\n62(68,13%)<br \/>\n29(56.86%)<\/p>\n<p>No relevant vulnerabilities detected (false negative)<br \/>\n10<br \/>\n20<br \/>\n27<\/p>\n<p>\n<i>Summary of results by components:<\/i><\/p>\n<p>Parameter<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Total components identified<br \/>\n62<br \/>\n47<br \/>\n59<\/p>\n<p>Total vulnerable components<br \/>\n16<br \/>\n13<br \/>\n10<\/p>\n<p>Incorrectly identified vulnerable components (false positive)<br \/>\n1<br \/>\n5<br \/>\n0<\/p>\n<p>Incorrectly identified vulnerable components (false positive)<br \/>\n0<br \/>\n6<br \/>\n6<\/p>\n<p>\nWe will build visual graphs to assess the ratio of false positives and false negatives to the total number of vulnerabilities. Components are marked horizontally, and vulnerabilities identified in them are marked vertically. <\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/967b8e168383299d4a1bf4065f1905ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/2e128ee59e551894c25e4c9e28997008.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/585d7bcef052ef24e4de6c7e1a4e7c0b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor comparison, a similar study was conducted by the Sonatype team testing a project of 1531 components using OWASP Dependency Check. As we can see, the noise-to-true positive ratio is comparable to our results.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/286c34b84f1400af0285b711b3fe87f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Source: <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>Let's consider some CVEs from the results of our scan to understand the reasons for these results.<\/p>\n<h3>Learn more<\/h3>\n<p><\/p>\n<h4>\u21161<\/h4>\n<p>\nFirst, let\u2019s analyze some interesting points from Sonatype Nexus IQ.<\/p>\n<p>Nexus IQ points to a deserialization issue with the possibility of executing RCE in the Spring Framework several times. CVE-2016-1000027 in spring-web:3.0.5 for the first time, and CVE-2011-2894 in spring-context:3.0.5 and spring-core:3.0.5. At first glance, it seems that there is a duplication of vulnerability across several CVEs. Because, if you look at CVE-2016-1000027 and CVE-2011-2894 in the NVD database, it seems all too obvious.<\/p>\n<p>Component<br \/>\nThe vulnerability<\/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>\nDescription <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2011-2894\">CVE-2011-2894<\/a><\/noindex> from NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/31b403eca6d7541c766c9a560bfbe6b7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDescription <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2016-1000027\">CVE-2016-1000027<\/a><\/noindex> from NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/d5b54a6ac15070b12f013eaacd2878f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCVE-2011-2894 itself is quite well known. In the report <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pwntester.com\/blog\/2013\/12\/16\/cve-2011-2894-deserialization-spring-rce\/\">by White Source in 2011<\/a><\/noindex> this CVE was recognized as one of the most frequently encountered. The descriptions for CVE-2016-100027 are somewhat minimal in NVD, and they seem to apply only for Spring Framework 4.1.4. Let's take a look at <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">reference<\/a><\/noindex> and here it becomes more or less clear. From <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">the Tenable article<\/a><\/noindex> we understand that in addition to the vulnerability in <code>RemoteInvocationSerializingExporter<\/code> in CVE-2011-2894, a vulnerability is observed in <code>HttpInvokerServiceExporter<\/code>. This is what Nexus IQ tells us:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/a33f0853ce892d28eafafe2c8e7b2228.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHowever, there is nothing like this in the NVD, which causes Dependency Check and Dependency Track to receive false negatives.<\/p>\n<p>Additionally, from the description of CVE-2011-2894, we can understand that the vulnerability is indeed present in spring-context:3.0.5 and spring-core:3.0.5. Confirmation of this can be found in an article by the researcher who discovered the vulnerability.<\/p>\n<h4>\u21162<\/h4>\n<p><\/p>\n<p>Component<br \/>\nThe vulnerability<br \/>\nResult<\/p>\n<p>struts2-core:2.3.30<br \/>\nCVE-2016-4003<br \/>\nFALSE<\/p>\n<p>\nIf we examine the vulnerability CVE-2016-4003, we will see that it was fixed back in version 2.3.28, yet Nexus IQ still reports it. The description of the vulnerability includes a note:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: principles of operation and comparison of SCA. Part one\" src=\"\/wp-content\/uploads\/2020\/08\/081f9006748083727e424b709a338d60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nThis means that the vulnerability exists only in conjunction with an outdated version of the JRE, which we were warned about. Nevertheless, we consider this a False Positive, although not the most serious one.<\/p>\n<h4>\u2116 3<\/h4>\n<p><\/p>\n<p>Component<br \/>\nThe vulnerability<br \/>\nResult<\/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>\nIf we look at the description of CVE-2017-9804 and CVE-2017-7672, we will understand that the problem lies in the <code>URLValidator class<\/code>, with CVE-2017-9804 stemming from CVE-2017-7672. The presence of the second vulnerability does not provide any useful information other than raising its severity to High, so it can be considered unnecessary noise.<\/p>\n<p>Overall, no other false positives were found for Nexus IQ.<\/p>\n<h3>\u21164<\/h3>\n<p>\nThere are several aspects that distinguish IQ from other solutions.<\/p>\n<p>Component<br \/>\nThe vulnerability<br \/>\nResult<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2020-5398<br \/>\nTRUE<\/p>\n<p>The CVE in the NVD reports that it applies only to versions 5.2.x up to 5.2.3, 5.1.x up to 5.1.13, and versions 5.0.x up to 5.0.16; however, if we look at the description of the CVE in Nexus IQ, we will see the following:<br \/>\n<i>Advisory Deviation Notice: The Sonatype security research team discovered that this vulnerability was introduced in version 3.0.2.RELEASE and not 5.0.x as stated in the advisory.<\/i><\/p>\n<p>Following this, a PoC for this vulnerability indicates that it is present in version 3.0.5.<\/p>\n<p>False negatives are sent to Dependency Check and Dependency Track.<\/p>\n<h3>\u21165<\/h3>\n<p>\nLet\u2019s take a look at false positives for Dependency Check and Dependency Track.<\/p>\n<p>Dependency Check is uniquely highlighted as it reflects those CVEs that relate to the entire framework in the NVD, in components to which these CVEs do not apply. This concerns CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, which Dependency Check has attached to struts-taglib:1.3.8 and struts-tiles-1.3.8. These components have nothing to do with what is described in the CVE \u2014 request handling, page validation, and so on. This is because the only commonality between these CVEs and the components is the framework, which is why Dependency Check counted it as a vulnerability.<\/p>\n<p>The same situation applies to spring-tx:3.0.5, and a similar situation exists with struts-core:1.3.8. For struts-core, Dependency Check and Dependency Track found many vulnerabilities that actually apply to struts2-core, which is essentially a separate framework. In this case, Nexus IQ correctly understood the picture and indicated in the CVEs it provided that struts-core reached its end of life and it's necessary to transition to struts2-core.<\/p>\n<h3>No.6<\/h3>\n<p>\nIn some situations, interpreting explicit errors from Dependency Check and Dependency Track is unfair. Specifically, CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, and CVE-2014-0225, which were attributed by Dependency Check and Dependency Track to spring-core:3.0.5, actually refer to spring-web:3.0.5. While some of these CVEs were also found by Nexus IQ, IQ correctly identified them with a different component. The absence of these vulnerabilities in spring-core does not mean they are non-existent in the framework itself, and the open-source tools justly pointed out these vulnerabilities (they simply missed slightly). <\/p>\n<h3>Conclusions<\/h3>\n<p>\nAs we can see, the assessment of the validity of identified vulnerabilities through manual review does not yield definitive results, leading to contentious points. The outcomes indicate that the Nexus IQ solution has the lowest false positive rate and the highest accuracy. <\/p>\n<p>Firstly, this is due to the Sonatype team expanding the description for each CVE vulnerability from the NVD in their databases, specifying with precision the class or function of the vulnerability for each version of the component, conducting additional research (for example, verifying vulnerabilities in older software versions). <\/p>\n<p>The vulnerabilities that did not make it to the NVD but are nonetheless present in the Sonatype database with a SONATYPE tag also significantly influence the results. According to the report <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">The State of Open Source Security Vulnerabilities 2020<\/a><\/noindex> about 45% of the open-source vulnerabilities found are not reported in the NVD. According to the WhiteSource database, only 29% of all open-source vulnerabilities registered outside of the NVD ultimately get published there, which is why it's so important to seek vulnerabilities in other sources as well.<\/p>\n<p>As a result, Dependency Check generates a lot of noise, missing some vulnerable components. Dependency Track generates less noise and identifies a large number of components, which visually doesn\u2019t strain the eyes in the web interface.<\/p>\n<p>Nevertheless, practice shows that open source should be the first step towards a mature DevSecOps. The first thing to consider when integrating SCA into development is the processes, specifically the discussions with management and related departments about what ideal processes should look like in your organization. It may turn out that for your organization, Dependency Check or Dependency Track will meet all the business needs initially, while enterprise solutions will logically follow as application complexity grows.<\/p>\n<p>                        <b class=\"spoiler_title\">Appendix A. Results related to components<\/b><br \/>\n                        <b>Legend:<\/b><\/p>\n<ul>\n<li>High \u2014 vulnerabilities of high and critical level in the component<\/li>\n<li>Medium \u2014 vulnerabilities of medium criticality level in the component<\/li>\n<li>TRUE \u2014 correctly identified vulnerability (True positive issue)<\/li>\n<li>FALSE \u2014 false alarm (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Component<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nResult<\/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\u2014<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\u2014<br \/>\n\u2014<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 \/>\ncomponent not found<\/p>\n<p>TRUE<\/p>\n<p>spring-web:3.0.5<br \/>\nHigh<br \/>\ncomponent not found<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>spring-context:3.0.5<br \/>\nMedium<br \/>\ncomponent not found<br \/>\n\u2014<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\u2014<br \/>\n\u2014<br \/>\nTRUE<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nHigh<br \/>\n\u2014<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\u2014<br \/>\n\u2014<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\u2014<br \/>\nHigh<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nHigh<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Appendix B. Results related to vulnerabilities<\/b><br \/>\n                        <b>Legend:<\/b><\/p>\n<ul>\n<li>High \u2014 vulnerabilities of high and critical level in the component<\/li>\n<li>Medium \u2014 vulnerabilities of medium criticality level in the component<\/li>\n<li>TRUE \u2014 correctly identified vulnerability (True positive issue)<\/li>\n<li>FALSE \u2014 false alarm (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Component<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nSeverity<br \/>\nResult<br \/>\nComment<\/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 \/>\nLow<br \/>\nTRUE<\/p>\n<p>log4j: 1.2.14<br \/>\nCVE-2019-17571<br \/>\nCVE-2019-17571<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2020-9488<br \/>\n\u2014<br \/>\nLow<br \/>\nTRUE<\/p>\n<p>SONATYPE-2010-0053<br \/>\n\u2014<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>commons-collections:3.1<br \/>\n\u2014<br \/>\nCVE-2015-6420<br \/>\nCVE-2015-6420<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplicates RCE(OSSINDEX)<\/p>\n<p>\u2014<br \/>\nCVE-2017-15708<br \/>\nCVE-2017-15708<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplicates 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\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 \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2019-10086<br \/>\nCVE-2019-10086<br \/>\nHigh<br \/>\nFALSE<br \/>\nThe vulnerability applies only to versions 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 \/>\nHigh<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 \/>\nThe same vulnerability as CVE-2019-2692, but with the note \u2018attacks may significantly impact additional products\u2019<\/p>\n<p>\u2014<br \/>\nCVE-2017-15945<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nNot applicable to mysql-connector-java<\/p>\n<p>\u2014<br \/>\nCVE-2020-2933<br \/>\n\u2014<br \/>\nLow<br \/>\nFALSE<br \/>\nDuplicate of 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 \/>\ncomponent not found<br \/>\n\u2014<br \/>\nHigh<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 \/>\ncomponent not found<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2014-0225<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2011-2730<br \/>\n\u2014<br \/>\n\u2014<br \/>\nHigh<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 \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2020-5398<br \/>\n\u2014<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<br \/>\nStrong example in favor of IQ: 'The Sonatype security research team discovered that this vulnerability was introduced in version 3.0.2.RELEASE and not 5.0.x as stated in the advisory.'<\/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 \/>\ncomponent not found<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 \/>\nHigh<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 \/>\nDuplicate of the same vulnerability in spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability pertains to the spring-web component<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\nCVE-2013-6429<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability pertains to the spring-web component<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability pertains to the spring-web component<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\nCVE-2013-7315<br \/>\nMedium<br \/>\nFALSE<br \/>\nSPLIT from CVE-2013-4152. + The vulnerability pertains to the spring-web component<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability pertains to the spring-web component<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nThe vulnerability pertains to the spring-web component<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplicate of the same vulnerability in spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\nCVE-2014-1904<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability pertains to the spring-web-mvc component<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\nCVE-2014-3625<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability pertains to the spring-web-mvc component<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\nCVE-2016-9878<br \/>\nHigh<br \/>\nFALSE<br \/>\nThe vulnerability pertains to the spring-web-mvc component<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\nCVE-2018-1270<br \/>\nHigh<br \/>\nFALSE<br \/>\nFor spring-expression \/ spring-messages<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\nCVE-2018-1271<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability pertains to the spring-web-mvc component<\/p>\n<p>\u2014<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\u2014<br \/>\n\u2014<br \/>\nLow<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 \/>\nHigh<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2011-2894<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nThe vulnerability does not pertain to spring-tx<\/p>\n<p>struts-core:1.3.8<br \/>\n\u2014<br \/>\nCVE-2011-5057 (OSSINDEX)<\/p>\n<p>Medium<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0391 (OSSINDEX)<br \/>\nCVE-2012-0391<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0094 (OSSINDEX)<br \/>\nCVE-2014-0094<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0113 (OSSINDEX)<br \/>\nCVE-2014-0113<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>CVE-2016-1182<br \/>\n3VE-2016-1182<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2011-5057<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0392 (OSSINDEX)<br \/>\nCVE-2012-0392<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0393 (OSSINDEX)<br \/>\nCVE-2012-0393<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>CVE-2015-0899<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2012-0394<br \/>\nCVE-2012-0394<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0838 (OSSINDEX)<br \/>\nCVE-2012-0838<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1965 (OSSINDEX)<br \/>\nCVE-2013-1965<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1966 (OSSINDEX)<br \/>\nCVE-2013-1966<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\nCVE-2013-2115<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2134 (OSSINDEX)<br \/>\nCVE-2013-2134<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2135 (OSSINDEX)<br \/>\nCVE-2013-2135<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>CVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\nCVE-2015-2992<br \/>\nMedium<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2016-0785 (OSSINDEX)<br \/>\nCVE-2016-0785<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>CVE-2016-1181<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2016-4003 (OSSINDEX)<br \/>\nCVE-2016-4003<br \/>\nHigh<br \/>\nFALSE<br \/>\nVulnerability for Struts 2<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>SONATYPE-2017-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2017-7672<br \/>\n\u2014<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplicate of CVE-2017-9804<\/p>\n<p>SONATYPE-2016-0127<br \/>\n\u2014<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>struts2-core:2.3.30<br \/>\n\u2014<br \/>\nCVE-2016-6795<br \/>\nCVE-2016-6795<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9787<br \/>\nCVE-2017-9787<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9791<br \/>\nCVE-2017-9791<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9793<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nDuplicate of CVE-2018-1327<\/p>\n<p>\u2014<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9805<br \/>\nCVE-2017-9805<br \/>\nHigh<br \/>\nTRUE<\/p>\n<p>CVE-2016-4003<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nApplicable to Apache Struts 2.x up to 2.3.28, while this is version 2.3.30. However, based on the description, CVE applies to all Struts 2 versions when using JRE 1.7 and below. It seems like they decided to play it safe, but it looks more like a FALSE.<\/p>\n<p>\u2014<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 \/>\nThe very vulnerability exploited by attackers in Equifax in 2017.<\/p>\n<p>CVE-2017-12611<br \/>\nCVE-2017-12611<br \/>\n\u2014<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\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nFor struts2-core.<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nFor struts2-core.<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nFor commons-beanutils.<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nNot applicable to taglib.<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nApplicable to struts2-core.<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nNot applicable to taglib.<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nNot applicable to taglib.<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nFor struts2-core.<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nFor struts2-core.<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nUnder commons-beanutils.<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nNot applicable to tiles.<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<br \/>\nFor struts2-core.<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nNot applicable to taglib.<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nHigh<br \/>\nFALSE<br \/>\nNot applicable to taglib.<\/p>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/516660\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b. Software Composition Analysis \u2014 SCA) \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0430\u0441\u0442\u0435\u0442 \u043f\u043e \u043c\u0435\u0440\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u044b\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043e\u0431 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u0445 open source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u043c\u0438 Synopsys, Sonatype, Snyk, White Source. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u0442\u0447\u0435\u0442\u0443 The State of Open Source Security Vulnerabilities 2020 \u0447\u0438\u0441\u043b\u043e \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 open source \u0432 2019 \u0432\u044b\u0440\u043e\u0441\u043b\u043e \u043f\u043e\u0447\u0442\u0438 \u0432 1.5 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92520,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92519","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\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\/en\/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: principles of operation and comparison of SCA. Part one | ProHoster","description":"The significance of analyzing third-party software components (in English.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","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\/en\/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\/en\/wp-json\/wp\/v2\/posts\/92519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=92519"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/92519\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/92520"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=92519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=92519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=92519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}