{"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\/fr\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","title":{"rendered":"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>L'importance de l'analyse des composants tiers logiciels (en anglais Software Composition Analysis \u2014 SCA) dans le processus de d\u00e9veloppement augmente \u00e0 mesure que les rapports annuels sur les vuln\u00e9rabilit\u00e9s des biblioth\u00e8ques open source, publi\u00e9s par des entreprises comme Synopsys, Sonatype, Snyk et White Source, voient le jour. Selon le rapport <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">L'\u00c9tat des vuln\u00e9rabilit\u00e9s de s\u00e9curit\u00e9 open source 2020<\/a><\/noindex> , le nombre de vuln\u00e9rabilit\u00e9s identifi\u00e9es dans l'open source en 2019 a presque doubl\u00e9 par rapport \u00e0 l'ann\u00e9e pr\u00e9c\u00e9dente, alors que les composants open source sont utilis\u00e9s dans 60 \u00e0 80 % des projets. En se basant sur un avis ind\u00e9pendant, les processus SCA sont consid\u00e9r\u00e9s comme une pratique distincte dans l'OWASP SAMM et le BSIMM comme indicateur de maturit\u00e9, et au premier semestre 2020, l'OWASP a publi\u00e9 une nouvelle norme, la OWASP Software Component Verification Standard (SCVS), fournissant des meilleures pratiques pour la v\u00e9rification des composants tiers dans la cha\u00eene d'approvisionnement logicielle.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" 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 \/>\nUn des cas les plus r\u00e9v\u00e9lateurs <noindex><a rel=\"nofollow\" href=\"https:\/\/xakep.ru\/2017\/09\/14\/equifax-dejstvitelno-vzlomali-cherez-bag-v-apache-struts-no-uyazvimost-okazalas-staroj\/\">s'est produit<\/a><\/noindex> avec l'entreprise Equifax en mai 2017. Des cybercriminels inconnus ont acc\u00e9d\u00e9 aux informations de 143 millions d'Am\u00e9ricains, y compris des noms complets, des adresses, des num\u00e9ros de s\u00e9curit\u00e9 sociale et de permis de conduire. Dans 209 000 cas, les documents contenaient \u00e9galement des informations sur les cartes bancaires des victimes. Cette fuite a eu lieu \u00e0 la suite de l'exploitation d'une vuln\u00e9rabilit\u00e9 critique dans Apache Struts 2 (CVE-2017-5638), alors qu'un correctif avait \u00e9t\u00e9 publi\u00e9 en mars 2017. L'entreprise avait deux mois pour appliquer la mise \u00e0 jour, mais cela n'a pas \u00e9t\u00e9 fait.<\/p>\n<p>Cet article discutera de la question du choix d'un outil pour la r\u00e9alisation de SCA en termes de qualit\u00e9 des r\u00e9sultats de l'analyse. Une comparaison fonctionnelle des outils sera \u00e9galement pr\u00e9sent\u00e9e. Le processus d'int\u00e9gration dans CI\/CD et les possibilit\u00e9s d'int\u00e9gration seront abord\u00e9s dans de prochaines publications. Une large liste d'outils a \u00e9t\u00e9 pr\u00e9sent\u00e9e par l'OWASP <noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-community\/Component_Analysis\">sur son site<\/a><\/noindex>, mais dans le cadre de cette revue, nous aborderons uniquement l'outil open source le plus populaire, Dependency Check, la plateforme open source moins connue Dependency Track et la solution d'entreprise Sonatype Nexus IQ. Nous examinerons \u00e9galement le fonctionnement de ces solutions et comparerons les r\u00e9sultats obtenus en termes de faux positifs.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/0580758082abd9950aa9c483d546f1ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Principe de fonctionnement<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/jeremylong.github.io\/DependencyCheck\/\">Dependency Check<\/a><\/noindex> \u2014 c'est un utilitaire (CLI, maven, module jenkins, ant) qui analyse les fichiers du projet, collecte des fragments d'informations sur les d\u00e9pendances (nom du package, groupid, titre de la sp\u00e9cification, version\u2026), construit une cha\u00eene CPE \u2014 (Common Platform Enumeration), Package URL (PURL) et identifie les vuln\u00e9rabilit\u00e9s pour CPE\/PURL \u00e0 partir des bases de donn\u00e9es (NVD, Sonatype OSS Index, API NPM Audit\u2026), puis g\u00e9n\u00e8re un rapport unique au format HTML, JSON, XML\u2026<\/p>\n<p>Voyons \u00e0 quoi ressemble un CPE :<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other<\/code><\/pre>\n<p><\/p>\n<ul>\n<li><b>Partie :<\/b> Indication que le composant se rapporte \u00e0 une application (a), un syst\u00e8me d'exploitation (o), du mat\u00e9riel (h) (\u00c9l\u00e9ment obligatoire)<\/li>\n<li><b>Fournisseur :<\/b> Nom du fabricant du produit (\u00c9l\u00e9ment obligatoire)<\/li>\n<li><b>Produit :<\/b> Nom du produit (\u00c9l\u00e9ment obligatoire)<\/li>\n<li><b>Version :<\/b> Version du composant (\u00c9l\u00e9ment obsol\u00e8te)<\/li>\n<li><b>Mise \u00e0 jour :<\/b> Mise \u00e0 jour du package<\/li>\n<li><b>\u00c9dition :<\/b> Version h\u00e9rit\u00e9e (\u00c9l\u00e9ment obsol\u00e8te)<\/li>\n<li><b>Langue :<\/b> Langue d\u00e9finie dans RFC-5646<\/li>\n<li><b>\u00c9dition SW :<\/b> Version du logiciel<\/li>\n<li><b>SW cible :<\/b> Environnement logiciel dans lequel le produit fonctionne<\/li>\n<li><b>HW cible :<\/b> Environnement mat\u00e9riel dans lequel le produit fonctionne<\/li>\n<li><b>Autre :<\/b> Informations sur le fournisseur ou le produit<\/li>\n<\/ul>\n<p>\nUn exemple de CPE est le suivant :<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*<\/code><\/pre>\n<p>\nCette cha\u00eene signifie que le CPE version 2.3 d\u00e9crit un composant d'application du fabricant <code>pivotal_software <\/code>nomm\u00e9 <code>spring_framework<\/code> version 3.0.0. Si nous ouvrons la vuln\u00e9rabilit\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2014-0225\">CVE-2014-0225<\/a><\/noindex> dans le NVD, nous pouvons voir cette r\u00e9f\u00e9rence CPE. Le premier probl\u00e8me sur lequel il faut imm\u00e9diatement se concentrer \u2014 le CVE dans le NVD, selon le CPE, indique un probl\u00e8me dans le framework et non dans un composant sp\u00e9cifique. Autrement dit, si les d\u00e9veloppeurs sont fortement attach\u00e9s au framework, et la vuln\u00e9rabilit\u00e9 identifi\u00e9e ne concerne pas les modules utilis\u00e9s par les d\u00e9veloppeurs, l'expert en s\u00e9curit\u00e9 devra de toute fa\u00e7on examiner ce CVE et envisager une mise \u00e0 jour.<\/p>\n<p>L'URL est \u00e9galement utilis\u00e9e par les outils SCA. Le format d'URL du package est le suivant :<\/p>\n<pre><code class=\"plaintext\">scheme:type\/namespace\/name@version?qualifiers#subpath<\/code><\/pre>\n<p><\/p>\n<ul>\n<li><b>Sch\u00e8me : <\/b>Il y aura toujours 'pkg' indiquant qu'il s'agit de l'URL d'un paquet (\u00e9l\u00e9ment requis)<\/li>\n<li><b>Type :<\/b> Le \u00ab type \u00bb du package ou le \u00ab protocole \u00bb du package, par exemple maven, npm, nuget, gem, pypi, etc. (\u00c9l\u00e9ment obligatoire)<\/li>\n<li><b>Namespace :<\/b> Un certain pr\u00e9fixe de nom, tel que l'identifiant de groupe Maven, le propri\u00e9taire de l'image Docker, l'utilisateur ou l'organisation GitHub. Non obligatoire et d\u00e9pend du type.<\/li>\n<li><b>Nom :<\/b> Nom du package (\u00c9l\u00e9ment obligatoire)<\/li>\n<li><b>Version :<\/b> Version du package<\/li>\n<li><b>Qualificateurs :<\/b> Informations suppl\u00e9mentaires sur les qualifications pour le package, telles que le syst\u00e8me d'exploitation, l'architecture, la distribution, etc. Optionnel et d\u00e9pendant du type d'\u00e9l\u00e9ment.<\/li>\n<li><b>Sous-chemin :<\/b> Chemin suppl\u00e9mentaire dans le package par rapport \u00e0 la racine du package<\/li>\n<\/ul>\n<p>\nPar exemple :<\/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 plateforme web sur site qui accepte les listes de mat\u00e9riaux (BOM) pr\u00eates g\u00e9n\u00e9r\u00e9es <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/CycloneDX\">CycloneDX<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/spdx.org\/licenses\/\">SPDX<\/a><\/noindex>, c'est-\u00e0-dire des sp\u00e9cifications pr\u00eates concernant les d\u00e9pendances existantes. Il s'agit d'un fichier XML d\u00e9crivant les d\u00e9pendances : nom, hachages, URL du package, \u00e9diteur, licence. Ensuite, Dependency Track analyse le BOM, examine les d\u00e9pendances pour identifier les CVE de la base de donn\u00e9es des vuln\u00e9rabilit\u00e9s (NVD, Sonatype OSS Index\u2026), puis construit des graphiques, calcule des m\u00e9triques, mettant \u00e0 jour r\u00e9guli\u00e8rement les donn\u00e9es sur l'\u00e9tat des vuln\u00e9rabilit\u00e9s des composants. <\/p>\n<p>Exemple de ce \u00e0 quoi pourrait ressembler un BOM au format XML :<\/p>\n<pre><code class=\"xml\">Apache\n      org.apache.tomcat\n      tomcat-catalina\n      9.0.14\n      \n        3942447fac867ae5cdb3229b658f4d48\n        e6b1000b94e835ffd37f4c6dcbdad43f4b48a02a\n        f498a8ff2dd007e29c2074f5e4b01a9a01775c3ff3aeaf6906ea503bc5791b7b\n        e8f33e424f3f4ed6db76a482fde1a5298970e442c531729119e37991884bdffab4f9426b7ee11fccd074eeda0634d71697d6f88a460dce0ac8d627a29f7d1282\n      \n      \n        \n          Apache-2.0\n        \n      \n      pkg:maven\/org.apache.tomcat\/tomcat-catalina@9.0.14\n    \n      <!-- More components here --><\/code><\/pre>\n<p>\nLe BOM peut \u00eatre utilis\u00e9 non seulement comme param\u00e8tres d'entr\u00e9e pour Dependency Track, mais aussi pour l'inventaire des composants logiciels dans la cha\u00eene d'approvisionnement, par exemple, pour fournir au client du logiciel. En 2014, un projet de loi a m\u00eame \u00e9t\u00e9 propos\u00e9 aux \u00c9tats-Unis <noindex><a rel=\"nofollow\" href=\"https:\/\/www.congress.gov\/bill\/113th-congress\/house-bill\/5793\">\u00ab Cyber Supply Chain Management and Transparency Act of 2014 \u00bb<\/a><\/noindex>, qui stipulait que lors de l'achat de logiciels, toute institution gouvernementale devait demander un BOM pour \u00e9viter l'utilisation de composants vuln\u00e9rables, mais ce projet de loi n'a jamais \u00e9t\u00e9 adopt\u00e9.<\/p>\n<p>Revenant \u00e0 SCA, Dependency Track a des int\u00e9grations pr\u00eates avec des plateformes de notification comme Slack, des syst\u00e8mes de gestion des vuln\u00e9rabilit\u00e9s comme Kenna Security. Notons \u00e9galement que Dependency Track identifie les versions obsol\u00e8tes des packages et fournit des informations sur les licences (gr\u00e2ce au support de SPDX).<\/p>\n<p>Lorsqu'il s'agit pr\u00e9cis\u00e9ment de la qualit\u00e9 SCA, il y a une diff\u00e9rence fondamentale.<\/p>\n<p>Dependency Track n'accepte pas le projet comme entr\u00e9e, mais prend en charge le BOM. Cela signifie que si nous voulons v\u00e9rifier le projet, nous devons d'abord g\u00e9n\u00e9rer le bom.xml, par exemple, avec CycloneDX. Ainsi, Dependency Track d\u00e9pend directement de CycloneDX. En m\u00eame temps, cela permet une personnalisation. Ainsi, l'\u00e9quipe d'OZON a \u00e9crit <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ozonru\/cyclonedx-go\">le module CycloneDX<\/a><\/noindex> pour g\u00e9n\u00e9rer des fichiers BOM pour des projets en Golang dans le but de les scanner ult\u00e9rieurement via Dependency Track.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/sonatype.ru\/#nexusiq\">Nexus IQ<\/a><\/noindex> est une solution SCA commerciale de Sonatype, qui fait partie de l'\u00e9cosyst\u00e8me Sonatype, qui comprend \u00e9galement Nexus Repository Manager. Nexus IQ peut accepter en entr\u00e9e \u00e0 la fois des archives war (pour des projets Java) via une interface web ou une API, ainsi que des BOM, si votre organisation n'a pas eu le temps de se r\u00e9adapter de CycloneDX \u00e0 cette nouvelle solution. Contrairement aux solutions open source, IQ ne se limite pas \u00e0 interroger le CP\/PURL de la composante identifi\u00e9e et \u00e0 la vuln\u00e9rabilit\u00e9 correspondante dans la base de donn\u00e9es, mais prend \u00e9galement en compte ses propres recherches, par exemple, le nom de la fonction ou de la classe vuln\u00e9rable. Les m\u00e9canismes d'IQ seront examin\u00e9s plus tard lors de l'analyse des r\u00e9sultats.<\/p>\n<p>R\u00e9capitulons certaines fonctionnalit\u00e9s fonctionnelles et examinons les langages pris en charge pour l'analyse :<\/p>\n<p>Langue<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>\nFonctionnalit\u00e9s disponibles<\/p>\n<p>Fonctionnalit\u00e9s disponibles<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Capacit\u00e9 \u00e0 assurer la v\u00e9rification des composants utilis\u00e9s dans le code source pour leur conformit\u00e9 aux licences<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Capacit\u00e9 \u00e0 scanner et analyser les images Docker pour d\u00e9tecter les vuln\u00e9rabilit\u00e9s et la conformit\u00e9 aux licences<br \/>\n+ Int\u00e9gration avec Clair<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Capacit\u00e9 \u00e0 configurer une politique de s\u00e9curit\u00e9 pour l'utilisation de biblioth\u00e8ques open source<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Capacit\u00e9 \u00e0 scanner les d\u00e9p\u00f4ts open source pour d\u00e9tecter les composants vuln\u00e9rables<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>Pr\u00e9sence d'un groupe de recherche sp\u00e9cialis\u00e9<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Travail dans un environnement ferm\u00e9<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Utilisation de bases de donn\u00e9es tierces<br \/>\n+ Base de donn\u00e9es ferm\u00e9e Sonatype<br \/>\n+ Sonatype OSS, NPM Public Advisors<br \/>\n+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, support de la base de donn\u00e9es de vuln\u00e9rabilit\u00e9s interne<\/p>\n<p>Capacit\u00e9 \u00e0 filtrer les composants open source lors de la tentative de chargement dans l'environnement de d\u00e9veloppement selon les politiques configur\u00e9es<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Recommandations pour corriger les vuln\u00e9rabilit\u00e9s, disponibilit\u00e9 de liens vers les correctifs<br \/>\n+<br \/>\n+- (d\u00e9pend de la description dans les bases de donn\u00e9es publiques)<br \/>\n+- (d\u00e9pend de la description dans les bases de donn\u00e9es publiques)<\/p>\n<p>Classement des vuln\u00e9rabilit\u00e9s d\u00e9tect\u00e9es par degr\u00e9 de criticit\u00e9<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Mod\u00e8le de r\u00f4le d'acc\u00e8s<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Support de l'interface en ligne de commande (CLI)<br \/>\n+<br \/>\n+<br \/>\n+- (uniquement pour CycloneDX)<\/p>\n<p>Filtrage \/ tri des vuln\u00e9rabilit\u00e9s selon des crit\u00e8res d\u00e9finis<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Dashboard sur l'\u00e9tat des applications<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>G\u00e9n\u00e9ration de rapports au format PDF<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>G\u00e9n\u00e9ration de rapports au format JSONCSV<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>Support de la langue russe<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nCapacit\u00e9s d'int\u00e9gration<\/p>\n<p>Int\u00e9gration<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Int\u00e9gration avec LDAP\/Active Directory<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Int\u00e9gration avec le syst\u00e8me d'int\u00e9gration continue (continous integration) Bamboo<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Int\u00e9gration avec le syst\u00e8me d'int\u00e9gration continue (continous integration) TeamCity<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Int\u00e9gration avec le syst\u00e8me d'int\u00e9gration continue (continous integration) GitLab<br \/>\n+<br \/>\n+- (sous forme de plugin pour GitLab)<br \/>\n+<\/p>\n<p>Int\u00e9gration avec le syst\u00e8me d'int\u00e9gration continue (continous integration) Jenkins<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Disponibilit\u00e9 de plugins pour IDE<br \/>\n+ IntelliJ, Eclipse, Visual Studio<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Support d'int\u00e9gration personnalis\u00e9e via des services web (API) de l'outil<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<h3>Dependency Check<\/h3>\n<p><\/p>\n<h4>Premier lancement<\/h4>\n<p>\nLan\u00e7ons une v\u00e9rification des d\u00e9pendances sur une application intentionnellement vuln\u00e9rable <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appsecco\/dvja\">DVJA<\/a><\/noindex>.<\/p>\n<p>Pour cela, utilisons <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jeremylong\/DependencyCheck\">Plugin Maven pour la v\u00e9rification des d\u00e9pendances<\/a><\/noindex>:<\/p>\n<pre><code class=\"plaintext\">mvn org.owasp:dependency-check-maven:check<\/code><\/pre>\n<p>\nEn cons\u00e9quence, un fichier dependency-check-report.html appara\u00eetra dans le r\u00e9pertoire target.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/d5b9fe5a8eb68569387dd0bfd38af459.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOuvrons le fichier. Apr\u00e8s un aper\u00e7u des vuln\u00e9rabilit\u00e9s, nous pouvons voir des informations sur les vuln\u00e9rabilit\u00e9s avec un niveau \u00e9lev\u00e9 de gravit\u00e9 et de confiance, indiquant le paquet, CPE, et le nombre de CVE.<\/p>\n<p>Ensuite, nous obtenons des informations plus d\u00e9taill\u00e9es, notamment la base sur laquelle la d\u00e9cision a \u00e9t\u00e9 prise (preuve), c'est-\u00e0-dire un certain BOM.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/53dd89b0ff20c4c51aaf7412399e7fd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNous avons ensuite le CPE, le PURL et la description CVE. Les recommandations de correction ne sont d'ailleurs pas fournies en raison de leur absence dans la base NVD.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/ba2021aa8b6bf175383298b2c2a71670.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPour un examen syst\u00e9matique des r\u00e9sultats du scan, vous pouvez configurer Nginx avec des r\u00e9glages minimaux, ou envoyer les d\u00e9fauts obtenus vers un syst\u00e8me de gestion des d\u00e9fauts qui prend en charge les connecteurs avec Dependency Check. Par exemple, Defect Dojo. <\/p>\n<h3>Dependency Track<\/h3>\n<p><\/p>\n<h4>Installation<\/h4>\n<p>\nDependency Track, quant \u00e0 lui, est une plateforme web avec des graphiques affichants, donc la question aigu\u00eb de stockage des d\u00e9fauts dans une solution tierce ne se pose pas ici. <br \/>\nPour l'installation, les sc\u00e9narios support\u00e9s sont les suivants : Docker, WAR, Ex\u00e9cutable WAR. <\/p>\n<h4>Premier lancement<\/h4>\n<p>\nAcc\u00e9dez \u00e0 l'URL du service en cours d'ex\u00e9cution. Connectez-vous avec admin\/admin, changez le nom d'utilisateur et le mot de passe, apr\u00e8s quoi vous acc\u00e9dez au Dashboard. La prochaine chose que nous allons faire est de cr\u00e9er un projet pour une application Java de test dans<i> Home\/Projects \u2192 Cr\u00e9er un projet <\/i>. Prenons DVJA comme exemple.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/338aaa1c9ca0ac99f2e857f8ce001a02.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPuisque Dependency Track peut n'accepter que des BOM en entr\u00e9e, il est n\u00e9cessaire d'obtenir ce BOM. Utilisons <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>\nNous obtenons bom.xml et t\u00e9l\u00e9chargeons le fichier dans le projet cr\u00e9\u00e9 <i>DVJA \u2192 D\u00e9pendances \u2192 T\u00e9l\u00e9charger BOM<\/i>.<\/p>\n<p>Acc\u00e9dons \u00e0 Administration \u2192 Analyseurs. Nous constatons que seul l'Analyseur Interne, qui inclut le NVD, est activ\u00e9. Connectons \u00e9galement Sonatype OSS Index.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/3879a9a3d5f227d9740a984e7b1b91b2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAinsi, nous obtenons l'image suivante pour notre projet :<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/004f2ab3383acb87e3d5e8c0fba1f3c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOn peut \u00e9galement trouver une vuln\u00e9rabilit\u00e9 applicable \u00e0 Sonatype OSS dans la liste :<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/e459f08218f890b46fb4050c30da63c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa principale d\u00e9ception \u00e9tait que Dependency Track n'accepte plus les rapports xml de Dependency Check. Les derni\u00e8res versions prises en charge pour l'int\u00e9gration avec Dependency Check \u00e9taient 1.0.0 - 4.0.2, tandis que je testais la version 5.3.2.<\/p>\n<p>Voici <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d2WMONyBbTw\">vid\u00e9o<\/a><\/noindex> (et <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/IPWPISSk5rc\">voici<\/a><\/noindex>), quand cela \u00e9tait encore possible. <\/p>\n<h3>Nexus IQ <\/h3>\n<p><\/p>\n<h4>Premier lancement<\/h4>\n<p>\nL'installation de Nexus IQ se fait \u00e0 partir d'archives via <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/iqserver\/installing\/iq-server-installation\">documentation<\/a><\/noindex>, mais pour ces objectifs, nous avons cr\u00e9\u00e9 une image Docker.<\/p>\n<p>Apr\u00e8s s'\u00eatre connect\u00e9 \u00e0 la console, il est n\u00e9cessaire de cr\u00e9er une Organisation et une Application.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/4c6df91bad77e87ea066ff3514a03644.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/d8580ba46852e4d97625a22e215c21d3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/d99ce4e47218001fd1a76722e2633bea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComme on peut le voir, la configuration dans le cas d'IQ est un peu plus complexe, car nous devons \u00e9galement cr\u00e9er des politiques applicables \u00e0 diff\u00e9rentes \"\u00e9tapes\" (dev, build, stage, release). Cela est n\u00e9cessaire pour bloquer les composants vuln\u00e9rables au fur et \u00e0 mesure qu'ils avancent dans le pipeline vers la production, ou les bloquer d\u00e8s qu'ils entrent dans le Nexus Repo lors du t\u00e9l\u00e9chargement par les d\u00e9veloppeurs.<\/p>\n<p>Pour ressentir la diff\u00e9rence entre open source et entreprise, faisons une analyse identique via Nexus IQ de la m\u00eame mani\u00e8re que <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/integrations\/sonatype-clm-for-maven\">plugin Maven<\/a><\/noindex>, apr\u00e8s avoir d'abord cr\u00e9\u00e9 une application de test dans l'interface 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>\nAcc\u00e9dez \u00e0 l'URL du rapport g\u00e9n\u00e9r\u00e9 dans l'interface web d'IQ :<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/f81f998037ba53ef62298955077d044d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVous pouvez voir ici toutes les violations de politique avec des niveaux de gravit\u00e9 diff\u00e9rents (de Info \u00e0 Critique de S\u00e9curit\u00e9). La lettre D \u00e0 c\u00f4t\u00e9 d'un composant indique que le composant est une D\u00e9pendance Directe, tandis que la lettre T indique qu'il s'agit d'une D\u00e9pendance Transitive.<\/p>\n<p>Au fait, le rapport <noindex><a rel=\"nofollow\" href=\"https:\/\/snyk.io\/open-source-security\/\">State of Open Source Security Report 2020<\/a><\/noindex> de Snyk rapporte que plus de 70 % des vuln\u00e9rabilit\u00e9s open source d\u00e9tect\u00e9es dans Node.js, Java et Ruby se trouvent dans les d\u00e9pendances transitives.<\/p>\n<p>Si nous ouvrons l'une des violations de la politique Nexus IQ, nous pouvons voir la description du composant, ainsi que le Graphique de Versions qui montre la position de la version actuelle sur la chronologie, ainsi que le moment o\u00f9 la vuln\u00e9rabilit\u00e9 cesse d'\u00eatre critiquable. La hauteur des bougies sur le graphique indique la popularit\u00e9 d'utilisation de ce composant.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/d33968a5ce5904da6f50133f882521fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSi nous allons dans la section des vuln\u00e9rabilit\u00e9s et d\u00e9veloppons le CVE, nous pouvons lire la description de cette vuln\u00e9rabilit\u00e9, les recommandations pour la corriger, ainsi que la raison pour laquelle ce composant a \u00e9t\u00e9 signal\u00e9 pour violation, c'est-\u00e0-dire la pr\u00e9sence de la classe <code>DiskFileitem.class<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/6d91b98a9a9a1a62264f1b4194f33ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/c9e580ad178a9c0307ed1e63d6dd244d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFaisons le point uniquement sur les composants Java tiers, en excluant les composants js. Nous indiquerons entre parenth\u00e8ses le nombre de vuln\u00e9rabilit\u00e9s trouv\u00e9es en dehors du NVD.<\/p>\n<p><b>Total Nexus IQ : <\/b><\/p>\n<ul>\n<li>D\u00e9pendances analys\u00e9es : 62<\/li>\n<li>D\u00e9pendances vuln\u00e9rables : 16<\/li>\n<li>Vuln\u00e9rabilit\u00e9s trouv\u00e9es : 42 (8 base de donn\u00e9es sonatype)<\/li>\n<\/ul>\n<p>\n<b>Total V\u00e9rification des D\u00e9pendances : <\/b><\/p>\n<ul>\n<li>D\u00e9pendances analys\u00e9es : 47<\/li>\n<li>D\u00e9pendances vuln\u00e9rables : 13<\/li>\n<li>Vuln\u00e9rabilit\u00e9s trouv\u00e9es : 91 (14 sonatype oss)<\/li>\n<\/ul>\n<p>\n<b>Total Suivi des D\u00e9pendances : <\/b><\/p>\n<ul>\n<li>D\u00e9pendances analys\u00e9es : 59<\/li>\n<li>D\u00e9pendances vuln\u00e9rables : 10<\/li>\n<li>Vuln\u00e9rabilit\u00e9s trouv\u00e9es : 51 (1 sonatype oss)<\/li>\n<\/ul>\n<p>\nLa prochaine \u00e9tape consistera \u00e0 analyser les r\u00e9sultats obtenus et \u00e0 d\u00e9terminer lesquelles de ces vuln\u00e9rabilit\u00e9s repr\u00e9sentent un v\u00e9ritable d\u00e9faut et lesquelles sont de faux positifs.<\/p>\n<h3>Avertissement<\/h3>\n<p>\nCette revue n'est pas une v\u00e9rit\u00e9 incontestable. L'objectif de l'auteur n'\u00e9tait pas de mettre en avant un outil par rapport aux autres. Le sens de cette revue \u00e9tait de montrer les m\u00e9canismes de fonctionnement des outils SCA et les moyens de v\u00e9rifier leurs r\u00e9sultats.<\/p>\n<h3>Comparaison des r\u00e9sultats<\/h3>\n<p>\n<b>Conditions :<\/b><\/p>\n<p><b>Un faux positif par rapport aux vuln\u00e9rabilit\u00e9s des composants tiers est :<\/b><\/p>\n<ul>\n<li><b>Non-conformit\u00e9 du CVE au composant identifi\u00e9<\/b><\/li>\n<li>Par exemple, si une vuln\u00e9rabilit\u00e9 est trouv\u00e9e dans le framework struts2, mais que l'outil pointe vers le composant du framework struts-tiles, qui n'est pas concern\u00e9 par cette vuln\u00e9rabilit\u00e9, alors c'est un faux positif.<\/li>\n<li><b>Non-conformit\u00e9 du CVE \u00e0 la version du composant identifi\u00e9e<\/b><\/li>\n<li>Par exemple, si la vuln\u00e9rabilit\u00e9 est li\u00e9e \u00e0 la version python &gt; 3.5 et que l'outil signale la version 2.7 comme vuln\u00e9rable \u2014 c'est un faux positif, car en r\u00e9alit\u00e9, la vuln\u00e9rabilit\u00e9 ne concerne que la branche de produit 3.x. <\/li>\n<li> <b>Duplication de CVE<\/b><\/li>\n<li>Par exemple, si le SCA a d\u00e9sign\u00e9 un CVE permettant de r\u00e9aliser un RCE, puis que le SCA indique pour ce m\u00eame composant un CVE applicable aux produits Cisco, vuln\u00e9rables \u00e0 ce RCE. Dans ce cas, il s'agira d'un faux positif.<\/li>\n<li>Par exemple, une CVE a \u00e9t\u00e9 trouv\u00e9e dans le composant spring-web, apr\u00e8s quoi la SCA indique cette m\u00eame CVE dans d'autres composants du framework Spring, tandis que la CVE n'a rien \u00e0 voir avec d'autres composants. Dans ce cas, cela sera un faux positif. <\/li>\n<\/ul>\n<p>\nLe projet Open Source DVJA a \u00e9t\u00e9 choisi comme objet de l'\u00e9tude. Seuls les composants Java ont \u00e9t\u00e9 inclus dans l'\u00e9tude (sans js).<\/p>\n<h3>R\u00e9sultats r\u00e9capitulatifs<\/h3>\n<p>\nPassons directement aux r\u00e9sultats de la r\u00e9vision manuelle des vuln\u00e9rabilit\u00e9s identifi\u00e9es. Le rapport complet pour chaque CVE est disponible en annexe. <\/p>\n<p><i>R\u00e9sultats r\u00e9capitulatifs pour toutes les vuln\u00e9rabilit\u00e9s :<\/i><\/p>\n<p>Param\u00e8tre<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Vuln\u00e9rabilit\u00e9s identifi\u00e9es au total<br \/>\n42<br \/>\n91<br \/>\n51<\/p>\n<p>Vuln\u00e9rabilit\u00e9s identifi\u00e9es \u00e0 tort (faux positifs)<br \/>\n2(4.76%)<br \/>\n62(68,13%)<br \/>\n29(56.86%)<\/p>\n<p>Aucune vuln\u00e9rabilit\u00e9 pertinente d\u00e9tect\u00e9e (faux n\u00e9gatifs)<br \/>\n10<br \/>\n20<br \/>\n27<\/p>\n<p>\n<i>R\u00e9sultats r\u00e9capitulatifs par composants :<\/i><\/p>\n<p>Param\u00e8tre<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Total des composants identifi\u00e9s<br \/>\n62<br \/>\n47<br \/>\n59<\/p>\n<p>Total des composants vuln\u00e9rables<br \/>\n16<br \/>\n13<br \/>\n10<\/p>\n<p>Composants vuln\u00e9rables identifi\u00e9s \u00e0 tort (faux positifs)<br \/>\n1<br \/>\n5<br \/>\n0<\/p>\n<p>Composants vuln\u00e9rables identifi\u00e9s \u00e0 tort (faux positifs)<br \/>\n0<br \/>\n6<br \/>\n6<\/p>\n<p>\nConstruisons des graphiques visuels pour \u00e9valuer le rapport entre faux positifs et faux n\u00e9gatifs par rapport au nombre total de vuln\u00e9rabilit\u00e9s. Les composants sont marqu\u00e9s horizontalement, tandis que les vuln\u00e9rabilit\u00e9s identifi\u00e9es sont marqu\u00e9es verticalement. <\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/967b8e168383299d4a1bf4065f1905ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/2e128ee59e551894c25e4c9e28997008.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/585d7bcef052ef24e4de6c7e1a4e7c0b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPour comparer, une \u00e9tude similaire a \u00e9t\u00e9 r\u00e9alis\u00e9e par l'\u00e9quipe de Sonatype testant un projet comportant 1531 composants \u00e0 l'aide d'OWASP Dependency Check. Comme nous pouvons le voir, le rapport de bruit par rapport aux d\u00e9clenchements corrects est comparable \u00e0 nos r\u00e9sultats.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" 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>Examinons certaines CVE des r\u00e9sultats de notre scan pour comprendre la raison de tels r\u00e9sultats.<\/p>\n<h3>En savoir plus<\/h3>\n<p><\/p>\n<h4>\u21161<\/h4>\n<p>\nCommen\u00e7ons par certains points int\u00e9ressants sur Sonatype Nexus IQ.<\/p>\n<p>Nexus IQ signale un probl\u00e8me de d\u00e9s\u00e9rialisation avec la possibilit\u00e9 d'ex\u00e9cuter du RCE dans le Spring Framework \u00e0 plusieurs reprises. CVE-2016-1000027 dans spring-web:3.0.5 pour la premi\u00e8re fois, et CVE-2011-2894 dans spring-context:3.0.5 et spring-core:3.0.5. Au d\u00e9but, il semble qu'il y ait un doublon de vuln\u00e9rabilit\u00e9 li\u00e9 \u00e0 plusieurs CVE. En effet, si nous consultons la CVE-2016-1000027 et la CVE-2011-2894 dans la base de donn\u00e9es NVD, il semble que tout soit \u00e9vident.<\/p>\n<p>Composant<br \/>\nVuln\u00e9rabilit\u00e9<\/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> du NVD :<br \/>\n<img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" 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> du NVD :<br \/>\n<img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/d5b54a6ac15070b12f013eaacd2878f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa CVE-2011-2894 est d\u00e9j\u00e0 bien connue. Dans le rapport <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pwntester.com\/blog\/2013\/12\/16\/cve-2011-2894-deserialization-spring-rce\/\">White Source de 2011<\/a><\/noindex> cette CVE a \u00e9t\u00e9 consid\u00e9r\u00e9e comme l'une des plus fr\u00e9quentes. Les descriptions pour la CVE-2016-100027 sont en fait limit\u00e9es dans le NVD, et elle semble ne s'appliquer qu'au Spring Framework 4.1.4. Regardons donc <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">reference<\/a><\/noindex> et cela devient plus ou moins clair. Dans <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">l'article de Tenable<\/a><\/noindex> nous comprenons qu'en plus de la vuln\u00e9rabilit\u00e9 dans <code>RemoteInvocationSerializingExporter<\/code> dans la CVE-2011-2894, la vuln\u00e9rabilit\u00e9 est \u00e9galement observ\u00e9e dans <code>HttpInvokerServiceExporter<\/code>. C'est ce que Nexus IQ nous indique :<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/a33f0853ce892d28eafafe2c8e7b2228.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCependant, rien de tel ne figure dans la NVD, ce qui conduit Dependency Check et Dependency Track \u00e0 obtenir de faux n\u00e9gatifs.<\/p>\n<p>De plus, la description de CVE-2011-2894 montre que la vuln\u00e9rabilit\u00e9 est effectivement pr\u00e9sente dans spring-context:3.0.5 et spring-core:3.0.5. Une confirmation se trouve dans l'article de la personne qui a d\u00e9couvert cette vuln\u00e9rabilit\u00e9.<\/p>\n<h4>\u21162<\/h4>\n<p><\/p>\n<p>Composant<br \/>\nVuln\u00e9rabilit\u00e9<br \/>\nR\u00e9sultat<\/p>\n<p>struts2-core:2.3.30<br \/>\nCVE-2016-4003<br \/>\nFAUX<\/p>\n<p>\nSi nous \u00e9tudions la vuln\u00e9rabilit\u00e9 CVE-2016-4003, nous comprendrons qu'elle a \u00e9t\u00e9 corrig\u00e9e dans la version 2.3.28, cependant Nexus IQ nous informe \u00e0 son sujet. La description de la vuln\u00e9rabilit\u00e9 contient la note :<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps : principes de fonctionnement et comparaison SCA. Partie un\" src=\"\/wp-content\/uploads\/2020\/08\/081f9006748083727e424b709a338d60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCela signifie que la vuln\u00e9rabilit\u00e9 existe uniquement en combinaison avec une version obsol\u00e8te de JRE, ce dont nous avons \u00e9t\u00e9 avertis. N\u00e9anmoins, nous consid\u00e9rons cela comme un faux positif, m\u00eame si ce n'est pas le plus grave.<\/p>\n<h4>\u2116 3<\/h4>\n<p><\/p>\n<p>Composant<br \/>\nVuln\u00e9rabilit\u00e9<br \/>\nR\u00e9sultat<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\nVRAI<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-7672<br \/>\nFAUX<\/p>\n<p>\nSi nous regardons la description de CVE-2017-9804 et CVE-2017-7672, nous comprendrons que le probl\u00e8me r\u00e9side dans la <code>classe URLValidator<\/code>, et que CVE-2017-9804 d\u00e9coule de CVE-2017-7672. La pr\u00e9sence de la seconde vuln\u00e9rabilit\u00e9 n'apporte aucune valeur ajout\u00e9e si ce n'est que sa s\u00e9v\u00e9rit\u00e9 a \u00e9t\u00e9 augment\u00e9e \u00e0 \u00e9lev\u00e9e, donc cela peut \u00eatre consid\u00e9r\u00e9 comme un bruit suppl\u00e9mentaire.<\/p>\n<p>En g\u00e9n\u00e9ral, aucun autre faux positif n'a \u00e9t\u00e9 trouv\u00e9 pour Nexus IQ.<\/p>\n<h3>\u21164<\/h3>\n<p>\nIl y a plusieurs points qui distinguent IQ des autres solutions.<\/p>\n<p>Composant<br \/>\nVuln\u00e9rabilit\u00e9<br \/>\nR\u00e9sultat<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2020-5398<br \/>\nVRAI<\/p>\n<p>Le CVE dans la NVD indique qu'il s'applique uniquement aux versions 5.2.x jusqu'\u00e0 5.2.3, 5.1.x jusqu'\u00e0 5.1.13, et aux versions 5.0.x jusqu'\u00e0 5.0.16, cependant, si nous regardons la description du CVE dans Nexus IQ, nous voyons ce qui suit :<br \/>\n<i>Avis de d\u00e9viation : L'\u00e9quipe de recherche en s\u00e9curit\u00e9 de Sonatype a d\u00e9couvert que cette vuln\u00e9rabilit\u00e9 a \u00e9t\u00e9 introduite dans la version 3.0.2.RELEASE et non 5.0.x comme indiqu\u00e9 dans l'avis.<\/i><\/p>\n<p>Apr\u00e8s cela, il y a un PoC pour cette vuln\u00e9rabilit\u00e9, indiquant qu'elle est pr\u00e9sente dans la version 3.0.5.<\/p>\n<p>Le faux n\u00e9gatif est envoy\u00e9 \u00e0 Dependency Check et Dependency Track.<\/p>\n<h3>\u21165<\/h3>\n<p>\nExaminons le faux positif pour Dependency Check et Dependency Track.<\/p>\n<p>Dependency Check se distingue par le fait qu'il refl\u00e8te les CVE qui correspondent \u00e0 l'ensemble du framework dans la NVD, dans les composants auxquels ces CVE ne s'appliquent pas. Cela concerne CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, que Dependency Check a \u00ab attach\u00e9 \u00bb \u00e0 struts-taglib:1.3.8 et struts-tiles-1.3.8. Ces composants n'ont rien \u00e0 voir avec ce qui est d\u00e9crit dans le CVE \u2014 traitement des requ\u00eates, validation des pages, etc. Cela est d\u00fb au fait que la seule chose en commun entre ces CVE et les composants est le framework, c'est pourquoi Dependency Check a consid\u00e9r\u00e9 cela comme une vuln\u00e9rabilit\u00e9.<\/p>\n<p>La m\u00eame situation se pr\u00e9sente avec spring-tx:3.0.5, et une situation similaire avec struts-core:1.3.8. Pour struts-core, Dependency Check et Dependency Track ont trouv\u00e9 de nombreuses vuln\u00e9rabilit\u00e9s qui s'appliquent en r\u00e9alit\u00e9 \u00e0 struts2-core, qui est en fait un framework distinct. Dans ce cas, Nexus IQ a correctement compris la situation et dans les CVE qu'il a \u00e9mis, il a indiqu\u00e9 que struts-core \u00e9tait en fin de vie et qu'il fallait passer \u00e0 struts2-core.<\/p>\n<h3>Num\u00e9ro 6<\/h3>\n<p>\nDans certaines situations, il est injuste d'interpr\u00e9ter une erreur explicite de Dependency Check et Dependency Track. En particulier, CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, qui ont \u00e9t\u00e9 attribu\u00e9s \u00e0 spring-core:3.0.5 par Dependency Check et Dependency Track, se rapportent en r\u00e9alit\u00e9 \u00e0 spring-web:3.0.5. De plus, certaines de ces CVE ont \u00e9galement \u00e9t\u00e9 trouv\u00e9es par Nexus IQ, qui les a correctement associ\u00e9es \u00e0 un autre composant. Le fait que ces vuln\u00e9rabilit\u00e9s n'aient pas \u00e9t\u00e9 d\u00e9tect\u00e9es dans spring-core ne signifie pas qu'elles n'existent pas dans le framework en g\u00e9n\u00e9ral et les outils open source ont justement signal\u00e9 ces vuln\u00e9rabilit\u00e9s (ils ont simplement l\u00e9g\u00e8rement manqu\u00e9 leur cible). <\/p>\n<h3>Conclusions<\/h3>\n<p>\nComme nous pouvons le voir, la d\u00e9termination de la v\u00e9racit\u00e9 des vuln\u00e9rabilit\u00e9s identifi\u00e9es par une r\u00e9vision manuelle ne produit pas de r\u00e9sultats clairs, ce qui entra\u00eene des points de d\u00e9bat. Les r\u00e9sultats montrent que la solution Nexus IQ a le taux de faux positifs le plus bas et la plus grande pr\u00e9cision. <\/p>\n<p>Tout d'abord, cela est d\u00fb au fait que l'\u00e9quipe de Sonatype a \u00e9largi la description de chaque vuln\u00e9rabilit\u00e9 CVE du NVD dans ses bases de donn\u00e9es, en pr\u00e9cisant au niveau de la classe ou de la fonction de la vuln\u00e9rabilit\u00e9 pour chaque version du composant, apr\u00e8s avoir men\u00e9 des recherches suppl\u00e9mentaires (par exemple, en testant des vuln\u00e9rabilit\u00e9s sur des versions plus anciennes des logiciels). <\/p>\n<p>Les vuln\u00e9rabilit\u00e9s qui ne figurent pas dans le NVD, mais qui sont toutefois pr\u00e9sentes dans la base Sonatype avec l'\u00e9tiquette SONATYPE, ont \u00e9galement une influence non n\u00e9gligeable sur les r\u00e9sultats. Selon le rapport <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">L'\u00c9tat des vuln\u00e9rabilit\u00e9s de s\u00e9curit\u00e9 open source 2020<\/a><\/noindex> 45% des vuln\u00e9rabilit\u00e9s open source d\u00e9couvertes ne sont pas signal\u00e9es dans le NVD. Selon la base de donn\u00e9es WhiteSource, seulement 29% de toutes les vuln\u00e9rabilit\u00e9s open source, enregistr\u00e9es en dehors du NVD, finissent par \u00eatre publi\u00e9es, c'est pourquoi il est si important de rechercher les vuln\u00e9rabilit\u00e9s aussi dans d'autres sources.<\/p>\n<p>En conclusion, Dependency Check g\u00e9n\u00e8re un grand bruit, tout en n\u00e9gligeant certaines parties vuln\u00e9rables des composants. Dependency Track g\u00e9n\u00e8re moins de bruit et identifie un grand nombre de composants, ce qui ne choque pas visuellement dans l'interface web.<\/p>\n<p>Cependant, la pratique montre que l'open source devrait \u00eatre le premier pas vers une maturit\u00e9 DevSecOps. La premi\u00e8re chose \u00e0 consid\u00e9rer pour int\u00e9grer le SCA dans le d\u00e9veloppement est les processus, \u00e0 savoir r\u00e9fl\u00e9chir en collaboration avec la direction et les d\u00e9partements concern\u00e9s sur la mani\u00e8re dont les processus id\u00e9aux devraient se pr\u00e9senter dans votre organisation. Il se peut que pour votre organisation, au d\u00e9part, Dependency Check ou Dependency Track r\u00e9pondent \u00e0 tous les besoins commerciaux, tandis que les solutions Enterprise seraient une suite logique en raison de la complexit\u00e9 croissante des applications d\u00e9velopp\u00e9es.<\/p>\n<p>                        <b class=\"spoiler_title\">Annexe A. R\u00e9sultats concernant les composants<\/b><br \/>\n                        <b>L\u00e9gende\u00a0:<\/b><\/p>\n<ul>\n<li>High \u2014 vuln\u00e9rabilit\u00e9s de niveau \u00e9lev\u00e9 et critique dans le composant<\/li>\n<li>Medium \u2014 vuln\u00e9rabilit\u00e9s de niveau moyen dans le composant<\/li>\n<li>TRUE \u2014 vuln\u00e9rabilit\u00e9 correctement identifi\u00e9e (True positive issue)<\/li>\n<li>FALSE \u2014 faux positif (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Composant<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nR\u00e9sultat<\/p>\n<p>dom4j: 1.6.1<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>log4j-core: 2.3<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>log4j: 1.2.14<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\n\u2014<br \/>\nVRAI<\/p>\n<p>commons-collections:3.1<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>commons-codec:1:10<br \/>\n\u00c9lev\u00e9<br \/>\n\u2014<br \/>\n\u2014<br \/>\nVRAI<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>spring-expression:3.0.5<br \/>\nCouverture d'ombre du soleil<br \/>\ncomposant non trouv\u00e9<\/p>\n<p>VRAI<\/p>\n<p>spring-web:3.0.5<br \/>\nCouverture d'ombre du soleil<br \/>\ncomposant non trouv\u00e9<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>spring-context:3.0.5<br \/>\n\u00c9lev\u00e9<br \/>\ncomposant non trouv\u00e9<br \/>\n\u2014<br \/>\nVRAI<\/p>\n<p>spring-core:3.0.5<br \/>\n\u00c9lev\u00e9<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\n\u00c9lev\u00e9<br \/>\n\u2014<br \/>\n\u2014<br \/>\nVRAI<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\n\u2014<br \/>\nFAUX<\/p>\n<p>struts-core:1.3.8<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>xwork-core: 2.3.30<br \/>\nCouverture d'ombre du soleil<br \/>\n\u2014<br \/>\n\u2014<br \/>\nVRAI<\/p>\n<p>struts2-core: 2.3.30<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\n\u2014<br \/>\nFAUX<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\n\u2014<br \/>\nFAUX<\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Annexe B. R\u00e9sultats concernant les vuln\u00e9rabilit\u00e9s<\/b><br \/>\n                        <b>L\u00e9gende\u00a0:<\/b><\/p>\n<ul>\n<li>High \u2014 vuln\u00e9rabilit\u00e9s de niveau \u00e9lev\u00e9 et critique dans le composant<\/li>\n<li>Medium \u2014 vuln\u00e9rabilit\u00e9s de niveau moyen dans le composant<\/li>\n<li>TRUE \u2014 vuln\u00e9rabilit\u00e9 correctement identifi\u00e9e (True positive issue)<\/li>\n<li>FALSE \u2014 faux positif (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Composant<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nS\u00e9v\u00e9rit\u00e9<br \/>\nR\u00e9sultat<br \/>\nCommentaire<\/p>\n<p>dom4j: 1.6.1<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>log4j-core: 2.3<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nFaible<br \/>\nVRAI<\/p>\n<p>log4j: 1.2.14<br \/>\nCVE-2019-17571<br \/>\nCVE-2019-17571<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2020-9488<br \/>\n\u2014<br \/>\nFaible<br \/>\nVRAI<\/p>\n<p>SONATYPE-2010-0053<br \/>\n\u2014<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>commons-collections:3.1<br \/>\n\u2014<br \/>\nCVE-2015-6420<br \/>\nCVE-2015-6420<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nDuplique RCE(OSSINDEX)<\/p>\n<p>\u2014<br \/>\nCVE-2017-15708<br \/>\nCVE-2017-15708<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nDuplique RCE(OSSINDEX)<\/p>\n<p>SONATYPE-2015-0002<br \/>\nRCE (OSSINDEX)<br \/>\nRCE(OSSINDEX)<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>SONATYPE-2014-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2019-10086<br \/>\nCVE-2019-10086<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 est applicable uniquement aux versions 1.9.2+<\/p>\n<p>commons-codec:1:10<br \/>\nSONATYPE-2012-0050<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2019-2692<br \/>\nCVE-2019-2692<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2020-2875<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa m\u00eame vuln\u00e9rabilit\u00e9 que CVE-2019-2692, mais avec la mention \u00ab les attaques peuvent avoir un impact significatif sur d'autres produits \u00bb<\/p>\n<p>\u2014<br \/>\nCVE-2017-15945<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nNon applicable \u00e0 mysql-connector-java<\/p>\n<p>\u2014<br \/>\nCVE-2020-2933<br \/>\n\u2014<br \/>\nFaible<br \/>\nFAUX<br \/>\nDuplique de CVE-2020-2934<\/p>\n<p>CVE-2020-2934<br \/>\nCVE-2020-2934<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>spring-expression:3.0.5<br \/>\nCVE-2018-1270<br \/>\ncomposant non trouv\u00e9<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2018-1257<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2016-1000027<br \/>\ncomposant non trouv\u00e9<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2014-0225<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2011-2730<br \/>\n\u2014<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>CVE-2018-1272<br \/>\n\u2014<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2020-5398<br \/>\n\u2014<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<br \/>\nExemple illustratif en faveur de IQ : \u00ab L'\u00e9quipe de recherche en s\u00e9curit\u00e9 de Sonatype a d\u00e9couvert que cette vuln\u00e9rabilit\u00e9 a \u00e9t\u00e9 introduite dans la version 3.0.2.RELEASE et non 5.0.x comme indiqu\u00e9 dans l'avis. \u00bb<\/p>\n<p>CVE-2013-6429<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>CVE-2014-0054<br \/>\n\u2014<br \/>\nCVE-2014-0054<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>CVE-2013-6430<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>spring-context:3.0.5<br \/>\nCVE-2011-2894<br \/>\ncomposant non trouv\u00e9<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>spring-core:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\nCVE-2011-2730<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nDuplique de cette m\u00eame vuln\u00e9rabilit\u00e9 dans spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 concerne le composant spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\nCVE-2013-6429<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 concerne le composant spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 concerne le composant spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\nCVE-2013-7315<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nSPLIT de CVE-2013-4152. + La vuln\u00e9rabilit\u00e9 concerne le composant spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\nCVE-2014-0054<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 concerne le composant spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 concerne le composant spring-web<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nDuplique de cette m\u00eame vuln\u00e9rabilit\u00e9 dans spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\nCVE-2014-1904<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 concerne le composant spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\nCVE-2014-3625<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 concerne le composant spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\nCVE-2016-9878<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 concerne le composant spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\nCVE-2018-1270<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nPour spring-expression\/spring-messages<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\nCVE-2018-1271<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 concerne le composant spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\nCVE-2018-1272<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2014-3578<br \/>\nCVE-2014-3578 (OSSINDEX)<br \/>\nCVE-2014-3578<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>SONATYPE-2015-0327<br \/>\n\u2014<br \/>\n\u2014<br \/>\nFaible<br \/>\nVRAI<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nSONATYPE-2016-0104<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nVRAI<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2011-2894<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nLa vuln\u00e9rabilit\u00e9 ne concerne pas spring-tx<\/p>\n<p>struts-core:1.3.8<br \/>\n\u2014<br \/>\nCVE-2011-5057 (OSSINDEX)<\/p>\n<p>\u00c9lev\u00e9<br \/>\nFASLE<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0391 (OSSINDEX)<br \/>\nCVE-2012-0391<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0094 (OSSINDEX)<br \/>\nCVE-2014-0094<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0113 (OSSINDEX)<br \/>\nCVE-2014-0113<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>CVE-2016-1182<br \/>\n3VE-2016-1182<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2011-5057<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0392 (OSSINDEX)<br \/>\nCVE-2012-0392<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0393 (OSSINDEX)<br \/>\nCVE-2012-0393<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>CVE-2015-0899<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2012-0394<br \/>\nCVE-2012-0394<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0838 (OSSINDEX)<br \/>\nCVE-2012-0838<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1965 (OSSINDEX)<br \/>\nCVE-2013-1965<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1966 (OSSINDEX)<br \/>\nCVE-2013-1966<br \/>\nCouverture d'ombre du soleil<br \/>\nFASLE<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\nCVE-2013-2115<br \/>\nCouverture d'ombre du soleil<br \/>\nFASLE<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2134 (OSSINDEX)<br \/>\nCVE-2013-2134<br \/>\nCouverture d'ombre du soleil<br \/>\nFASLE<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2135 (OSSINDEX)<br \/>\nCVE-2013-2135<br \/>\nCouverture d'ombre du soleil<br \/>\nFASLE<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>CVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\nCVE-2015-2992<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2016-0785 (OSSINDEX)<br \/>\nCVE-2016-0785<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>CVE-2016-1181<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2016-4003 (OSSINDEX)<br \/>\nCVE-2016-4003<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nVuln\u00e9rabilit\u00e9 \u00e0 Struts 2<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>SONATYPE-2017-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2017-7672<br \/>\n\u2014<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nDoublon \u00e0 CVE-2017-9804<\/p>\n<p>SONATYPE-2016-0127<br \/>\n\u2014<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>struts2-core:2.3.30<br \/>\n\u2014<br \/>\nCVE-2016-6795<br \/>\nCVE-2016-6795<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2017-9787<br \/>\nCVE-2017-9787<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2017-9791<br \/>\nCVE-2017-9791<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2017-9793<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nDoublon \u00e0 CVE-2018-1327<\/p>\n<p>\u2014<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>\u2014<br \/>\nCVE-2017-9805<br \/>\nCVE-2017-9805<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2016-4003<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nApplicable \u00e0 Apache Struts 2.x jusqu'\u00e0 2.3.28, alors que la version est 2.3.30. Cependant, d'apr\u00e8s la description, le CVE s'applique \u00e0 toutes les versions de Struts 2, si JRE 1.7 ou moins est utilis\u00e9. Il semble qu'on ait voulu s'assurer ici, mais cela ressemble plus \u00e0 un FAUX.<\/p>\n<p>\u2014<br \/>\nCVE-2018-1327<br \/>\nCVE-2018-1327<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<br \/>\nC'est la vuln\u00e9rabilit\u00e9 exploit\u00e9e par des attaquants chez Equifax en 2017<\/p>\n<p>CVE-2017-12611<br \/>\nCVE-2017-12611<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>CVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nCouverture d'ombre du soleil<br \/>\nVRAI<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nPour struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nPour struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nPour commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nNe s'applique pas \u00e0 taglib<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nS'applique \u00e0 struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nNe s'applique pas \u00e0 taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nNe s'applique pas \u00e0 taglib<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nPour struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nPour struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nSous commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nNe s'applique pas \u00e0 tiles<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\n\u00c9lev\u00e9<br \/>\nFAUX<br \/>\nPour struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nNe s'applique pas \u00e0 taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nCouverture d'ombre du soleil<br \/>\nFAUX<br \/>\nNe s'applique pas \u00e0 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\/fr\/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=\"fr_FR\" \/>\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\/fr\/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 : principes de fonctionnement et comparaison SCA. Premi\u00e8re partie | ProHoster","description":"Importance de l'analyse des composants logiciels tiers (angl.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/92519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=92519"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/92519\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/92520"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=92519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=92519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=92519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}