{"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\/da\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","title":{"rendered":"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vigtigheden af analyse af tredjeparts softwarekomponenter (engelsk: Software Composition Analysis \u2014 SCA) i udviklingsprocessen vokser i takt med de \u00e5rlige rapporter om s\u00e5rbarheder i open source-biblioteker, som offentligg\u00f8res af virksomheder som Synopsys, Sonatype, Snyk og White Source. If\u00f8lge rapporten <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">Status for sikkerhedss\u00e5rbarheder i open source 2020<\/a><\/noindex> er antallet af identificerede s\u00e5rbarheder i open source steget med n\u00e6sten 1,5 gange i 2019 sammenlignet med \u00e5ret f\u00f8r, mens komponenter med \u00e5ben kildekode anvendes i 60% til 80% af projekterne. If\u00f8lge uafh\u00e6ngig vurdering er SCA-processer en separat praksis i OWASP SAMM og BSIMM som et m\u00e5l for modenhed, og i f\u00f8rste halvdel af 2020 udgav OWASP den nye standard OWASP Software Component Verification Standard (SCVS), der giver bedste praksis til kontrol af tredjeparts komponenter i softwareforsyningsk\u00e6den.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" 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 \/>\nEt af de mest illustrative tilf\u00e6lde <noindex><a rel=\"nofollow\" href=\"https:\/\/xakep.ru\/2017\/09\/14\/equifax-dejstvitelno-vzlomali-cherez-bag-v-apache-struts-no-uyazvimost-okazalas-staroj\/\">skete<\/a><\/noindex> er med virksomheden Equifax i maj 2017. Ukendte angribere fik fat i oplysninger om 143 millioner amerikanere, herunder fulde navne, adresser, social sikringsnumre og k\u00f8rekortsnumre. I 209.000 tilf\u00e6lde var der ogs\u00e5 oplysninger om ofrenes bankkort i dokumenterne. Denne l\u00e6kage opstod som f\u00f8lge af udnyttelse af en kritisk s\u00e5rbarhed i Apache Struts 2 (CVE-2017-5638), mens en korrektiv l\u00f8sningspakke blev offentliggjort allerede i marts 2017. Virksomheden havde to m\u00e5neder til at installere opdateringen, men ingen tog sig af dette.<\/p>\n<p>I denne artikel vil vi diskutere valget af v\u00e6rkt\u00f8jer til at udf\u00f8re SCA set fra analysekvaliteten. Vi vil ogs\u00e5 give en funktionsm\u00e6ssig sammenligning af v\u00e6rkt\u00f8jerne. Processen for integration i CI\/CD og integrationsmuligheder vil blive efterladt til kommende publikationer. En omfattende liste over v\u00e6rkt\u00f8jer blev pr\u00e6senteret af OWASP <noindex><a rel=\"nofollow\" href=\"https:\/\/owasp.org\/www-community\/Component_Analysis\">p\u00e5 deres hjemmeside<\/a><\/noindex>, men i denne oversigt vil vi kun ber\u00f8re det mest popul\u00e6re open source-v\u00e6rkt\u00f8j, Dependency Check, den lidt mindre kendte open source-platform, Dependency Track, og enterprise-l\u00f8sningen Sonatype Nexus IQ. Vi vil ogs\u00e5 unders\u00f8ge, hvordan disse l\u00f8sninger fungerer og sammenligne de opn\u00e5ede resultater med hensyn til falske positiver.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/0580758082abd9950aa9c483d546f1ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Arbejdets princip<\/h3>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/jeremylong.github.io\/DependencyCheck\/\">Dependency Check<\/a><\/noindex> \u2014 er et v\u00e6rkt\u00f8j (CLI, maven, jenkins modul, ant), som analyserer projektfiler, indsamler fragmenter af information om afh\u00e6ngigheder (pakke navn, groupid, specifikation titel, version\u2026), opbygger en CPE-streng \u2014 (Common Platform Enumeration), Package URL (PURL) og identificerer s\u00e5rbarheder for CPE\/PURL fra databaser (NVD, Sonatype OSS Index, NPM Audit API\u2026), hvorefter det genererer en engangsrapport i formatet HTML, JSON, XML\u2026<\/p>\n<p>Lad os se p\u00e5, hvordan CPE ser ud:<\/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> Angiver, at komponenten tilh\u00f8rer en applikation (a), operativsystem (o), hardware (h) (Obligatorisk felt)<\/li>\n<li><b>Vendor:<\/b> Navnet p\u00e5 produktets producent (Obligatorisk felt)<\/li>\n<li><b>Product:<\/b> Navnet p\u00e5 produktet (Obligatorisk felt)<\/li>\n<li><b>Version:<\/b> Version af komponenten (For\u00e6ldet felt)<\/li>\n<li><b>Opdatering:<\/b> Pakkens opdatering<\/li>\n<li><b>Edition:<\/b> Arvet version (For\u00e6ldet felt)<\/li>\n<li><b>Language:<\/b> Sprog defineret i RFC-5646<\/li>\n<li><b>SW Edition:<\/b> Version af software<\/li>\n<li><b>Target SW:<\/b> Den softwaremilj\u00f8, hvor produktet k\u00f8rer<\/li>\n<li><b>Target HW:<\/b> Den hardwaremilj\u00f8, hvor produktet k\u00f8rer<\/li>\n<li><b>Other:<\/b> Information om leverand\u00f8ren eller produktet<\/li>\n<\/ul>\n<p>\nEt eksempel p\u00e5 CPE ser s\u00e5ledes ud:<\/p>\n<pre><code class=\"plaintext\">cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*<\/code><\/pre>\n<p>\nStrengen betyder, at CPE version 2.3 beskriver en komponent applikation fra producenten <code>pivotal_software <\/code>med navnet <code>spring_framework<\/code> version 3.0.0. Hvis vi \u00e5bner s\u00e5rbarheden <noindex><a rel=\"nofollow\" href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2014-0225\">CVE-2014-0225<\/a><\/noindex> i NVD, kan vi se henvisningen til denne CPE. Det f\u00f8rste problem, som straks skal bem\u00e6rkes \u2014 CVE i NVD rapporterer if\u00f8lge CPE om et problem i rammev\u00e6rket og ikke i en specifik komponent. Det vil sige, hvis udviklerne er st\u00e6rkt afh\u00e6ngige af rammev\u00e6rket, og den identificerede s\u00e5rbarhed vedr\u00f8rer ikke de moduler, som udviklerne bruger, m\u00e5 sikkerhedsspecialisten s\u00e5 eller s\u00e5 m\u00e5tte analysere denne CVE og overveje opdatering.<\/p>\n<p>URL-adressen bruges ogs\u00e5 af SCA-v\u00e6rkt\u00f8jer. Formatet for URL-adressen p\u00e5 pakken er som f\u00f8lger:<\/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>Det vil altid v\u00e6re &#8216;pkg&#8217;, som angiver, at dette er en pakke-URL (Obligatorisk felt)<\/li>\n<li><b>Type:<\/b> \u00bbType\u00ab af pakken eller \u00bbprotokol\u00ab for pakken, som f.eks. maven, npm, nuget, gem, pypi osv. (Obligatorisk felt)<\/li>\n<li><b>Namespace:<\/b> En form for pr\u00e6fiks af navnet, s\u00e5som Maven-gruppe-id, ejer af Docker-billede, bruger eller organisation p\u00e5 GitHub. Valgfrit og afh\u00e6nger af typen.<\/li>\n<li><b>Navn:<\/b> Pakkenavn (Obligatorisk felt)<\/li>\n<li><b>Version:<\/b> Version af pakken<\/li>\n<li><b>Qualifiers:<\/b> Yderligere kvalifikationsoplysninger for pakken, s\u00e5som OS, arkitektur, distribution osv. Valgfrit og afh\u00e6ngigt af typen.<\/li>\n<li><b>Substi<\/b> Yderligere sti i pakken relativt til roden af pakken.<\/li>\n<\/ul>\n<p>\nFor eksempel:<\/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 en on-premise webplatform, der modtager klare Bill of Materials (BOM) dannet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/CycloneDX\">CycloneDX<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/spdx.org\/licenses\/\">SPDX<\/a><\/noindex>, alts\u00e5 klare specifikationer af de tilg\u00e6ngelige afh\u00e6ngigheder. Dette er en XML-fil, der beskriver afh\u00e6ngigheder \u2014 navn, hashes, paket-URL, udgiver, licens. Derefter analyserer Dependency Track BOM, ser p\u00e5 de eksisterende CVE\u2019er for identificerede afh\u00e6ngigheder fra databasen med s\u00e5rbarheder (NVD, Sonatype OSS Index \u2026), hvorefter den bygger grafer, beregner m\u00e5linger og opdaterer oplysninger om komponenternes s\u00e5rbarhedsstatus regelm\u00e6ssigt. <\/p>\n<p>Et eksempel p\u00e5, hvordan en BOM i XML-format kan se ud:<\/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 kan bruges ikke kun som inputparametre til Dependency Track, men ogs\u00e5 til at opg\u00f8re softwarekomponenter i forsyningsk\u00e6den, for eksempel til at levere til kunden. I 2014 blev der endda foresl\u00e5et en lov i USA, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.congress.gov\/bill\/113th-congress\/house-bill\/5793\">\u00abCyber Supply Chain Management and Transparency Act of 2014\u00bb<\/a><\/noindex>, som sagde, at ved indk\u00f8b af software skulle enhver offentlig institution anmode om en BOM for at forhindre brugen af s\u00e5rbare komponenter, men loven tr\u00e5dte aldrig i kraft.<\/p>\n<p>N\u00e5r vi vender tilbage til SCA, har Dependency Track klare integrationer med meddelelsesplatforme som Slack og systemer til s\u00e5rbarhedsstyring som Kenna Security. Det skal ogs\u00e5 n\u00e6vnes, at Dependency Track desuden identificerer for\u00e6ldede versioner af pakker og giver oplysninger om licenser (takket v\u00e6re underst\u00f8ttelsen af SPDX).<\/p>\n<p>N\u00e5r det kommer til kvaliteten af SCA, er der en v\u00e6sentlig forskel her.<\/p>\n<p>Dependency Track modtager ikke projektet som input, men tager faktisk imod BOM. Det betyder, at hvis vi \u00f8nsker at kontrollere projektet, skal vi f\u00f8rst generere bom.xml, s\u00e5som ved at bruge CycloneDX. P\u00e5 den m\u00e5de afh\u00e6nger Dependency Track direkte af CycloneDX. Samtidig giver det muligheder for tilpasning. S\u00e5 teamet fra OZON skrev <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ozonru\/cyclonedx-go\">modulet CycloneDX<\/a><\/noindex> til opbygning af BOM-filer for projekter i Golang med henblik p\u00e5 senere scanning gennem Dependency Track.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/sonatype.ru\/#nexusiq\">Nexus IQ<\/a><\/noindex> er en kommerciel SCA-l\u00f8sning fra Sonatype, som er en del af Sonatype-\u00f8kosystemet, der ogs\u00e5 inkluderer Nexus Repository Manager. Nexus IQ kan tage b\u00e5de war-arkiver (til java-projekter) som input via webgr\u00e6nsefladen eller API, men ogs\u00e5 BOM, hvis din organisation ikke har haft tid til at oml\u00e6gge fra CycloneDX til den nye l\u00f8sning. I mods\u00e6tning til open source-l\u00f8sninger tager IQ ikke kun h\u00f8jde for CP\/PURL til den identificerede komponent og den relevante s\u00e5rbarhed i databasen, men overvejer ogs\u00e5 egne unders\u00f8gelser, for eksempel navnet p\u00e5 den s\u00e5rbare funktion eller klasse. Mekanismerne i IQ vil blive gennemg\u00e5et senere, n\u00e5r vi analyserer resultaterne.<\/p>\n<p>Lad os opsummere nogle af de funktionelle egenskaber samt se p\u00e5 underst\u00f8ttede sprog til analyse:<\/p>\n<p>Sprog<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>\nFunktionelle muligheder<\/p>\n<p>Funktionelle muligheder<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Mulighed for at sikre verificering af komponenter brugt i kildekoden for licensm\u00e6ssig renhed<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Mulighed for scanning og analyse af s\u00e5rbarheder og licensm\u00e6ssig renhed for Docker-billeder<br \/>\n+ Integration med Clair<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Mulighed for at tilpasse sikkerhedspolitikker for brug af open source-biblioteker<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Mulighed for at scanne open source-repositorier for s\u00e5rbare komponenter<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>Eksistensen af en specialiseret forskningsgruppe<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Arbejder i et lukket kontur<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Brug af tredjeparts databaser<br \/>\n+ Lukket Sonatype DB<br \/>\n+ Sonatype OSS, NPM Public Advisors<br \/>\n+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, st\u00f8tte til egen s\u00e5rbarheds-DB<\/p>\n<p>Mulighed for at filtrere open source-komponenter ved fors\u00f8g p\u00e5 at uploade i udviklingskonturen i henhold til konfigurerede politikker<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Anbefalinger til afhj\u00e6lpning af s\u00e5rbarheder, med links til rettelser<br \/>\n+<br \/>\n+- (afh\u00e6ngigt af beskrivelsen i offentlige databaser)<br \/>\n+- (afh\u00e6ngigt af beskrivelsen i offentlige databaser)<\/p>\n<p>Rangering af opdagede s\u00e5rbarheder efter alvorlighedsgrad<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Adgangsrollemodel<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Underst\u00f8ttelse af kommandolinjegr\u00e6nseflade (CLI)<br \/>\n+<br \/>\n+<br \/>\n+- (kun for CycloneDX)<\/p>\n<p>Udv\u00e6lgelse \/ sortering af s\u00e5rbarheder efter bestemte kriterier<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Dashboard over applikationernes tilstand<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Generering af rapporter i PDF-format<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Generering af rapporter i JSON og CSV-format<br \/>\n+<br \/>\n+<br \/>\n\u2014<\/p>\n<p>Underst\u00f8ttelse af dansk sprog<br \/>\n\u2014<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>\nIntegrationsmuligheder<\/p>\n<p>Integration<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>Integration med LDAP \/ Active Directory<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<p>Integration med kontinuerlig integrationssystem (Continous Integration) Bamboo<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integration med kontinuerlig integrationssystem (Continous Integration) TeamCity<br \/>\n+<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Integration med kontinuerlig integrationssystem (Continous Integration) GitLab<br \/>\n+<br \/>\n+- (som plugin til GitLab)<br \/>\n+<\/p>\n<p>Integration med kontinuerlig integrationssystem (Continous Integration) Jenkins<br \/>\n+<br \/>\n+<br \/>\n+<\/p>\n<p>Tilg\u00e6ngelighed af plugins til IDE<br \/>\n+ IntelliJ, Eclipse, Visual Studio<br \/>\n\u2014<br \/>\n\u2014<\/p>\n<p>Underst\u00f8ttelse af tilpasset integration gennem webservices (API) v\u00e6rkt\u00f8j<br \/>\n+<br \/>\n\u2014<br \/>\n+<\/p>\n<h3>Dependency Check<\/h3>\n<p><\/p>\n<h4>F\u00f8rste opstart<\/h4>\n<p>\nLad os k\u00f8re Dependency Check p\u00e5 en med vilje s\u00e5rbar applikation <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/appsecco\/dvja\">DVJA<\/a><\/noindex>.<\/p>\n<p>For dette vil vi bruge <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>\nSom resultat vil der i mappen target blive oprettet dependency-check-report.html.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/d5b9fe5a8eb68569387dd0bfd38af459.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLad os \u00e5bne filen. Efter den overordnede information om det samlede antal s\u00e5rbarheder kan vi se information om s\u00e5rbarheder med h\u00f8j alvorlighedsgrad og tillid, angivet p\u00e5 pakken, CPE, antal CVE.<\/p>\n<p>Derefter f\u00f8lger mere detaljeret information, herunder hvad beslutningen er baseret p\u00e5 (evidence), alts\u00e5 en slags BOM.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/53dd89b0ff20c4c51aaf7412399e7fd9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDern\u00e6st kommer CPE, PURL og beskrivelse af CVE. Anbefalinger til rettelse f\u00f8lger faktisk ikke, da de mangler i NVD-databasen.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/ba2021aa8b6bf175383298b2c2a71670.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor systematisk gennemgang af scanningsresultater kan man konfigurere Nginx med minimal konfiguration, eller sende de indsamlede fejl til et fejlstyringssystem, som underst\u00f8tter forbindelser til Dependency Check. For eksempel Defect Dojo. <\/p>\n<h3>Dependency Track<\/h3>\n<p><\/p>\n<h4>Installation<\/h4>\n<p>\nDependency Track er i \u00f8vrigt en webplatform med grafisk visualisering, s\u00e5 problemet med opbevaring af fejl i en ekstern l\u00f8sning er ikke relevant her. <br \/>\nDer er f\u00f8lgende underst\u00f8ttede installationsscenarier: Docker, WAR, Executable WAR. <\/p>\n<h4>F\u00f8rste opstart<\/h4>\n<p>\nVi g\u00e5r til URL'en for den k\u00f8rende tjeneste. Logger ind via admin\/admin, \u00e6ndrer brugernavn og kodeord, hvorefter vi kommer til Dashboard. N\u00e6ste skridt bliver at oprette et projekt for den testapplikation i<i> Home \/ Projects \u2192 Opret Projekt <\/i>. Som eksempel bruger vi DVJA.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/338aaa1c9ca0ac99f2e857f8ce001a02.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDa Dependency Track kun kan modtage BOM som input, skal denne BOM opn\u00e5s. Vi vil bruge <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>\nVi f\u00e5r bom.xml og uploader filen i det oprettede projekt <i>DVJA \u2192 Afh\u00e6ngigheder \u2192 Upload BOM<\/i>.<\/p>\n<p>Lad os g\u00e5 ind i Administration \u2192 Analyzers. Vi forst\u00e5r, at vi kun har den interne analyser aktiveret, som inkluderer NVD. Vi tilslutter ogs\u00e5 Sonatype OSS Index.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/3879a9a3d5f227d9740a984e7b1b91b2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDermed f\u00e5r vi f\u00f8lgende oversigt over vores projekt:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/004f2ab3383acb87e3d5e8c0fba1f3c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOgs\u00e5 p\u00e5 listen kan man finde en s\u00e5rbarhed, der g\u00e6lder for Sonatype OSS:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/e459f08218f890b46fb4050c30da63c8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen st\u00f8rste skuffelse var, at Dependency Track ikke l\u00e6ngere accepterer xml-rapporter fra Dependency Check. De seneste underst\u00f8ttede versioner til integration med Dependency Check var 1.0.0 \u2013 4.0.2, mens jeg testede 5.3.2.<\/p>\n<p>Her er <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/d2WMONyBbTw\">en video<\/a><\/noindex> (og <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/IPWPISSk5rc\">her<\/a><\/noindex>), da det stadig var muligt. <\/p>\n<h3>Nexus IQ <\/h3>\n<p><\/p>\n<h4>F\u00f8rste opstart<\/h4>\n<p>\nInstallation af Nexus IQ sker fra arkiverne ved <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/iqserver\/installing\/iq-server-installation\">dokumentationen<\/a><\/noindex>, men vi har oprettet et Docker-billede til disse form\u00e5l.<\/p>\n<p>Efter login til konsollen skal der oprettes en Organisation og en Applikation.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/4c6df91bad77e87ea066ff3514a03644.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/d8580ba46852e4d97625a22e215c21d3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/d99ce4e47218001fd1a76722e2633bea.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSom man kan se, er ops\u00e6tningen i forhold til IQ noget mere kompleks, da vi ogs\u00e5 skal oprette politikker, der g\u00e6lder for forskellige \"faser\" (dev, build, stage, release). Dette er n\u00f8dvendigt for at blokere s\u00e5rbare komponenter, efterh\u00e5nden som de bev\u00e6ger sig gennem pipeline t\u00e6ttere p\u00e5 produktionen, eller blokere dem s\u00e5 snart de kommer ind i Nexus Repo ved download af udviklerne.<\/p>\n<p>For at m\u00e6rke forskellen mellem open source og enterprise, lad os udf\u00f8re den samme scanning gennem Nexus IQ tilsvarende gennem <noindex><a rel=\"nofollow\" href=\"https:\/\/help.sonatype.com\/integrations\/sonatype-clm-for-maven\">Maven plugin<\/a><\/noindex>, efter f\u00f8rst at have oprettet en testapplikation i NexusIQ-gr\u00e6nsefladen <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>\nVi navigerer til URL'en til den genererede rapport i IQ webgr\u00e6nsefladen:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/f81f998037ba53ef62298955077d044d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHer kan man se alle politikovertr\u00e6delser med angivelse af forskellige niveauer af alvorlighed (fra Info til Security Critical). D-brevet ved komponenten betyder, at komponenten er en Direct Dependency, mens T-brevet ved komponenten betyder, at komponenten er en Transitive Dependency, det vil sige er transitive.<\/p>\n<p>For resten rapporterer <noindex><a rel=\"nofollow\" href=\"https:\/\/snyk.io\/open-source-security\/\">State of Open Source Security Report 2020<\/a><\/noindex> fra Snyk, at over 70% af de s\u00e5rbarheder i open source, der findes i Node.js, Java og Ruby, ligger i transitive afh\u00e6ngigheder.<\/p>\n<p>Hvis man \u00e5bner en af politikovertr\u00e6delserne i Nexus IQ, kan vi se beskrivelsen af komponenten samt Version Graph, der viser placeringen af den nuv\u00e6rende version i tidsgrafen, og hvorn\u00e5r s\u00e5rbarheden ikke l\u00e6ngere er s\u00e5rbar. H\u00f8jden af s\u00f8jlerne p\u00e5 grafen viser populariteten af brugen af denne komponent.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/d33968a5ce5904da6f50133f882521fe.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHvis du g\u00e5r til sektionen for s\u00e5rbarheder og \u00e5bner CVE, kan du l\u00e6se beskrivelsen af denne s\u00e5rbarhed, anbefalinger til afhj\u00e6lpning samt \u00e5rsagen til, at denne komponent er blevet identificeret som en overtr\u00e6delse, nemlig tilstedev\u00e6relsen af en klasse <code>DiskFileitem.class<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/6d91b98a9a9a1a62264f1b4194f33ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/c9e580ad178a9c0307ed1e63d6dd244d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLad os opsummere, men kun vedr\u00f8rende tredjeparts Java-komponenter, uden at inkludere js-komponenter. I parentes angiver vi antallet af s\u00e5rbarheder, der er fundet uden for NVD.<\/p>\n<p><b>I alt Nexus IQ: <\/b><\/p>\n<ul>\n<li>Scannede afh\u00e6ngigheder: 62<\/li>\n<li>S\u00e5rbare afh\u00e6ngigheder: 16<\/li>\n<li>Findede s\u00e5rbarheder: 42 (8 sonatype db)<\/li>\n<\/ul>\n<p>\n<b>I alt Dependency Check: <\/b><\/p>\n<ul>\n<li>Scannede afh\u00e6ngigheder: 47<\/li>\n<li>S\u00e5rbare afh\u00e6ngigheder: 13<\/li>\n<li>Findede s\u00e5rbarheder: 91 (14 sonatype oss)<\/li>\n<\/ul>\n<p>\n<b>I alt Dependency Track: <\/b><\/p>\n<ul>\n<li>Scannede afh\u00e6ngigheder: 59<\/li>\n<li>S\u00e5rbare afh\u00e6ngigheder: 10<\/li>\n<li>Findede s\u00e5rbarheder: 51 (1 sonatype oss)<\/li>\n<\/ul>\n<p>\nN\u00e6ste skridt vil v\u00e6re at analysere de opn\u00e5ede resultater og finde ud af, hvilke af disse s\u00e5rbarheder der er virkelige defekter, og hvilke der er falske positiver.<\/p>\n<h3>Fraskrivelse<\/h3>\n<p>\nDenne gennemgang er ikke en uomtvistelig sandhed. Forfatteren havde ikke til hensigt at fremh\u00e6ve et bestemt v\u00e6rkt\u00f8j i forhold til andre. Form\u00e5let med gennemgangen var at vise, hvordan SCA-v\u00e6rkt\u00f8jerne fungerer og m\u00e5derne at verificere deres resultater p\u00e5.<\/p>\n<h3>Sammenligning af resultater<\/h3>\n<p>\n<b>Betingelser:<\/b><\/p>\n<p><b>Et falsk positivt resultat i forhold til s\u00e5rbarheder i tredjeparts komponenter er:<\/b><\/p>\n<ul>\n<li><b>Ikke-overensstemmelse mellem CVE og den identificerede komponent<\/b><\/li>\n<li>For eksempel, hvis en s\u00e5rbarhed er identificeret i struts2-rammen, men v\u00e6rkt\u00f8jet angiver komponenten struts-tiles, som denne s\u00e5rbarhed ikke vedr\u00f8rer, s\u00e5 er det en falsk positiv.<\/li>\n<li><b>Ikke-overensstemmelse mellem CVE og den identificerede version af komponenten<\/b><\/li>\n<li>For eksempel, hvis s\u00e5rbarheden er knyttet til versionen python &gt; 3.5, og v\u00e6rkt\u00f8jet angiver version 2.7 som s\u00e5rbar, s\u00e5 er det en falsk positiv, da s\u00e5rbarheden faktisk kun vedr\u00f8rer 3.x produktlinjen. <\/li>\n<li> <b>Dublering af CVE<\/b><\/li>\n<li>For eksempel, hvis SCA angivet en CVE, der muligg\u00f8r RCE, hvorefter SCA angiver den samme CVE for denne komponent, der g\u00e6lder for Cisco-produkter, som er s\u00e5rbare overfor denne RCE. I s\u00e5danne tilf\u00e6lde vil det v\u00e6re en falsk positiv.<\/li>\n<li>For eksempel, hvis CVE blev fundet i komponenten spring-web, hvorefter SCA angiver denne samme CVE i andre komponenter i Spring Framework, mens CVE ikke vedr\u00f8rer de andre komponenter. I s\u00e5 fald vil det v\u00e6re en falsk positiv. <\/li>\n<\/ul>\n<p>\nUnders\u00f8gelsen fokuserer p\u00e5 det Open Source-projekt DVJA. Unders\u00f8gelsen involverede kun Java-komponenter (uden js).<\/p>\n<h3>Sammenfattende resultater<\/h3>\n<p>\nLad os straks g\u00e5 til resultaterne af den manuelle gennemgang af de identificerede s\u00e5rbarheder. Du kan finde den fulde rapport for hver CVE i Bilag. <\/p>\n<p><i>Sammenfattende resultater for alle s\u00e5rbarheder:<\/i><\/p>\n<p>Parameter<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>I alt identificerede s\u00e5rbarheder<br \/>\n42<br \/>\n91<br \/>\n51<\/p>\n<p>Forkert identificerede s\u00e5rbarheder (falsk positiv)<br \/>\n2(4.76%)<br \/>\n62(68,13%)<br \/>\n29(56.86%)<\/p>\n<p>Ingen relevante s\u00e5rbarheder identificeret (falsk negativ)<br \/>\n10<br \/>\n20<br \/>\n27<\/p>\n<p>\n<i>Sammenfattende resultater for komponenter:<\/i><\/p>\n<p>Parameter<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<\/p>\n<p>I alt identificerede komponenter<br \/>\n62<br \/>\n47<br \/>\n59<\/p>\n<p>I alt s\u00e5rbare komponenter<br \/>\n16<br \/>\n13<br \/>\n10<\/p>\n<p>Forkert identificerede s\u00e5rbare komponenter (falsk positiv)<br \/>\n1<br \/>\n5<br \/>\n0<\/p>\n<p>Forkert identificerede s\u00e5rbare komponenter (falsk positiv)<br \/>\n0<br \/>\n6<br \/>\n6<\/p>\n<p>\nVi vil bygge visuelle grafer for at vurdere forholdet mellem falske positive og falske negative i forhold til det samlede antal s\u00e5rbarheder. Komponenterne er angivet vandret, og de identificerede s\u00e5rbarheder er angivet lodret. <\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/967b8e168383299d4a1bf4065f1905ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/2e128ee59e551894c25e4c9e28997008.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/585d7bcef052ef24e4de6c7e1a4e7c0b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTil sammenligning blev en tilsvarende unders\u00f8gelse udf\u00f8rt af Sonatype-teamet ved testning af et projekt best\u00e5ende af 1531 komponenter ved hj\u00e6lp af OWASP Dependency Check. Som vi kan se, er forholdet mellem st\u00f8j og korrekte udl\u00f8ser meget sammenligneligt med vores resultater.<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/286c34b84f1400af0285b711b3fe87f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kilde: <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>Lad os se p\u00e5 nogle CVE fra resultaterne af vores scanning for at forst\u00e5 \u00e5rsagen til s\u00e5danne resultater.<\/p>\n<h3>Mere information<\/h3>\n<p><\/p>\n<h4>Nr. 1<\/h4>\n<p>\nLad os f\u00f8rst gennemg\u00e5 nogle interessante punkter fra Sonatype Nexus IQ.<\/p>\n<p>Nexus IQ peger p\u00e5 et problem med deserialisering, der potentielt kan udf\u00f8re RCE i Spring Framework flere gange. CVE-2016-1000027 i spring-web:3.0.5 f\u00f8rst, og CVE-2011-2894 i spring-context:3.0.5 og spring-core:3.0.5. I starten ser det ud til, at der er en gentagelse af s\u00e5rbarheden p\u00e5 tv\u00e6rs af flere CVE. For hvis man ser p\u00e5 CVE-2016-1000027 og CVE-2011-2894 i NVD-databasen, ser det hele ret indlysende ud.<\/p>\n<p>Komponent<br \/>\nS\u00e5rbarhed<\/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> fra NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" 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> fra NVD:<br \/>\n<img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/d5b54a6ac15070b12f013eaacd2878f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCVE-2011-2894 er i sig selv ret kendt. I rapporten <noindex><a rel=\"nofollow\" href=\"http:\/\/www.pwntester.com\/blog\/2013\/12\/16\/cve-2011-2894-deserialization-spring-rce\/\">White Source fra 2011<\/a><\/noindex> blev denne CVE anerkendt som en af de mest almindelige. Beskrivelserne for CVE-2016-100027 er generelt sparsomme i NVD, og den g\u00e6lder \u00e5benbart kun for Spring Framework 4.1.4. Lad os se p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">reference<\/a><\/noindex> og her bliver det mere eller mindre klart. Fra <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tenable.com\/security\/research\/tra-2016-20\">artiklen Tenable<\/a><\/noindex> forst\u00e5r vi, at udover s\u00e5rbarheden i <code>RemoteInvocationSerializingExporter<\/code> i CVE-2011-2894 er der ogs\u00e5 en s\u00e5rbarhed i <code>HttpInvokerServiceExporter<\/code>. Det fort\u00e6ller Nexus IQ os:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/a33f0853ce892d28eafafe2c8e7b2228.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAlligevel findes der intet lignende i NVD, hvilket betyder, at Dependency Check og Dependency Track f\u00e5r falske negative.<\/p>\n<p>Fra beskrivelsen af CVE-2011-2894 kan man ogs\u00e5 forst\u00e5, at s\u00e5rbarheden faktisk er til stede b\u00e5de i spring-context:3.0.5 og spring-core:3.0.5. Bevis for dette kan findes i artiklen fra den, der fandt denne s\u00e5rbarhed.<\/p>\n<h4>Nr. 2<\/h4>\n<p><\/p>\n<p>Komponent<br \/>\nS\u00e5rbarhed<br \/>\nResultat<\/p>\n<p>struts2-core:2.3.30<br \/>\nCVE-2016-4003<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<\/p>\n<p>\nHvis vi unders\u00f8ger s\u00e5rbarheden CVE-2016-4003, forst\u00e5r vi, at den blev rettet i version 2.3.28, alligevel rapporterer Nexus IQ om den. I beskrivelsen af s\u00e5rbarheden er der en note:<\/p>\n<p><img decoding=\"async\" alt=\"DevSecOps: arbejdsprincipper og sammenligning af SCA. Del 1\" src=\"\/wp-content\/uploads\/2020\/08\/081f9006748083727e424b709a338d60.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet vil sige, at s\u00e5rbarheden kun eksisterer i kombination med en for\u00e6ldet version af JRE, hvilket vi er blevet advaret om. Vi betragter dog dette som en falsk positiv, omend ikke den mest alvorlige.<\/p>\n<h4>Nr. 3<\/h4>\n<p><\/p>\n<p>Komponent<br \/>\nS\u00e5rbarhed<br \/>\nResultat<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\nFALSE<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-7672<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<\/p>\n<p>\nHvis vi ser p\u00e5 beskrivelsen for CVE-2017-9804 og CVE-2017-7672, vil vi forst\u00e5, at problemet ligger i <code>URLValidator-klassen<\/code>, idet CVE-2017-9804 udspringer fra CVE-2017-7672. Tilstedev\u00e6relsen af den anden s\u00e5rbarhed bidrager ikke med nogen nyttig information, udover at dens alvorlighed er steget til h\u00f8j, s\u00e5 det kan betragtes som un\u00f8dvendig st\u00f8j.<\/p>\n<p>Generelt var der ikke fundet andre falske positiver for Nexus IQ.<\/p>\n<h3>Nr. 4<\/h3>\n<p>\nDer er flere punkter, der adskiller IQ fra andre l\u00f8sninger.<\/p>\n<p>Komponent<br \/>\nS\u00e5rbarhed<br \/>\nResultat<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2020-5398<br \/>\nFALSE<\/p>\n<p>CVE i NVD rapporterer, at den kun g\u00e6lder for versioner 5.2.x op til 5.2.3, 5.1.x op til 5.1.13 og versioner 5.0.x op til 5.0.16, men hvis vi ser p\u00e5 beskrivelsen af CVE i Nexus IQ, vil vi se f\u00f8lgende:<br \/>\n<i>Advisory Deviation Notice: Sonatype sikkerhedsforskningsteamet opdagede, at denne s\u00e5rbarhed blev introduceret i version 3.0.2.RELEASE og ikke 5.0.x som angivet i adviseringen.<\/i><\/p>\n<p>Efter dette f\u00f8lger PoC for denne s\u00e5rbarhed, som oplyser, at den findes i version 3.0.5.<\/p>\n<p>Falsk negativ sendes til Dependency Check og Dependency Track.<\/p>\n<h3>Nr. 5<\/h3>\n<p>\nLad os se p\u00e5 falske positiver for Dependency Check og Dependency Track.<\/p>\n<p>Dependency Check adskiller sig ved at afspejle de CVE, der relaterer til hele rammev\u00e6rket i NVD, til de komponenter, som disse CVE ikke g\u00e6lder for. Dette g\u00e6lder CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, som Dependency Check \"har tilf\u00f8jet\" til struts-taglib:1.3.8 og struts-tiles-1.3.8. Disse komponenter har ikke noget at g\u00f8re med det, der er beskrevet i CVE \u2014 behandling af foresp\u00f8rgsler, validering af sider osv. Dette skyldes, at det eneste, der forbinder disse CVE og komponenter, er rammev\u00e6rket, hvilket fik Dependency Check til at anse det som en s\u00e5rbarhed.<\/p>\n<p>Den samme situation g\u00e6lder for spring-tx:3.0.5, og en lignende situation g\u00e6lder for struts-core:1.3.8. For struts-core fandt Dependency Check og Dependency Track mange s\u00e5rbarheder, der faktisk g\u00e6lder for struts2-core, som i virkeligheden er et separat rammev\u00e6rk. I dette tilf\u00e6lde forstod Nexus IQ korrekt situationen, og i de CVE, der blev genereret, angav det, at struts-core var n\u00e5et slutningen af livet og at man skulle skifte til struts2-core.<\/p>\n<h3>Nr. 6<\/h3>\n<p>\nI nogle situationer er det uretf\u00e6rdigt at tolke \u00e5benlyse fejl i Dependency Check og Dependency Track. Is\u00e6r CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, som Dependency Check og Dependency Track henviste til spring-core:3.0.5, faktisk henviser til spring-web:3.0.5. Nogle af disse CVE blev ogs\u00e5 fundet af Nexus IQ, dog korrekt identificeret til en anden komponent. At disse s\u00e5rbarheder ikke blev fundet i spring-core, betyder ikke, at de ikke eksisterer i rammev\u00e6rket generelt, og open source-v\u00e6rkt\u00f8jer har korrekt peget p\u00e5 disse s\u00e5rbarheder (de traf blot lidt forkert). <\/p>\n<h3>Konklusioner<\/h3>\n<p>\nSom vi kan se, giver manuel gennemgang af p\u00e5lideligheden af de identificerede s\u00e5rbarheder ikke entydige resultater, hvorfor der opst\u00e5r tvivl. Resultaterne viser, at Nexus IQ-l\u00f8sningen har den laveste falske positive rate og den h\u00f8jeste n\u00f8jagtighed. <\/p>\n<p>Dette skyldes prim\u00e6rt, at Sonatype-teamet udvidede beskrivelsen for hver CVE-s\u00e5rbarhed fra NVD i deres databaser ved pr\u00e6cist at angive klasse eller funktion af s\u00e5rbarheden for en given version af komponenten, efter at have gennemf\u00f8rt yderligere unders\u00f8gelser (f.eks. ved at kontrollere s\u00e5rbarheder p\u00e5 \u00e6ldre versioner af softwaren). <\/p>\n<p>Ogs\u00e5 de s\u00e5rbarheder, der ikke er kommet ind i NVD, men alligevel findes i Sonatype-databasen med m\u00e6rkningen SONATYPE, har en betydelig indflydelse p\u00e5 resultaterne. If\u00f8lge rapporten <noindex><a rel=\"nofollow\" href=\"https:\/\/www.whitesourcesoftware.com\/open-source-vulnerability-management-report\/\">Status for sikkerhedss\u00e5rbarheder i open source 2020<\/a><\/noindex> om 45% af de opdagede s\u00e5rbarheder med open source bliver ikke rapporteret i NVD. If\u00f8lge WhiteSource-databasen offentligg\u00f8res kun 29% af alle open source-s\u00e5rbarheder, der er registreret uden for NVD, i sidste ende i den, s\u00e5 det er vigtigt at s\u00f8ge efter s\u00e5rbarheder ogs\u00e5 i andre kilder.<\/p>\n<p>Som et resultat giver Dependency Check et stort antal falske positiver og overser en del s\u00e5rbare komponenter. Dependency Track giver mindre st\u00f8j og identificerer et st\u00f8rre antal komponenter, hvilket visuelt ikke sk\u00e6mmer webgr\u00e6nsefladen.<\/p>\n<p>Alligevel viser erfaring, at open source b\u00f8r v\u00e6re det f\u00f8rste skridt mod et modent DevSecOps. Det f\u00f8rste, man b\u00f8r overveje for at integrere SCA i udviklingen, er processerne, is\u00e6r overvejelser sammen med ledelsen og relevante afdelinger om, hvordan de ideelle processer b\u00f8r se ud i ens organisation. Det kan vise sig, at for din organisation vil Dependency Check eller Dependency Track i starten opfylde alle forretningsm\u00e6ssige behov, mens Enterprise-l\u00f8sninger vil v\u00e6re et logisk skridt i takt med, at kompleksiteten af de udviklede applikationer vokser.<\/p>\n<p>                        <b class=\"spoiler_title\">Applikation A. Resultater relateret til komponenter<\/b><br \/>\n                        <b>Designations:<\/b><\/p>\n<ul>\n<li>H\u00f8j \u2014 s\u00e5rbarheder af h\u00f8j eller kritisk grad i komponenten<\/li>\n<li>Middel \u2014 s\u00e5rbarheder af mellemgrad i komponenten<\/li>\n<li>SANDT \u2014 korrekt identificeret s\u00e5rbarhed (True positive issue)<\/li>\n<li>FALSK \u2014 falsk positivet (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Komponent<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nResultat<\/p>\n<p>dom4j: 1.6.1<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>log4j-core: 2.3<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>log4j: 1.2.14<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p>commons-collections:3.1<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>commons-codec:1:10<br \/>\nMedium<br \/>\n\u2014<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>spring-expression:3.0.5<br \/>\nH\u00f8j<br \/>\nkomponenten ikke fundet<\/p>\n<p>FALSE<\/p>\n<p>spring-web:3.0.5<br \/>\nH\u00f8j<br \/>\nkomponenten ikke fundet<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>spring-context:3.0.5<br \/>\nMedium<br \/>\nkomponenten ikke fundet<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p>spring-core:3.0.5<br \/>\nMedium<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nMedium<br \/>\n\u2014<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n\u2014<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<\/p>\n<p>struts-core:1.3.8<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>xwork-core: 2.3.30<br \/>\nH\u00f8j<br \/>\n\u2014<br \/>\n\u2014<br \/>\nFALSE<\/p>\n<p>struts2-core: 2.3.30<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n\u2014<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n\u2014<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<\/p>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">Applikation B. Resultater relateret til s\u00e5rbarheder<\/b><br \/>\n                        <b>Designations:<\/b><\/p>\n<ul>\n<li>H\u00f8j \u2014 s\u00e5rbarheder af h\u00f8j eller kritisk grad i komponenten<\/li>\n<li>Middel \u2014 s\u00e5rbarheder af mellemgrad i komponenten<\/li>\n<li>SANDT \u2014 korrekt identificeret s\u00e5rbarhed (True positive issue)<\/li>\n<li>FALSK \u2014 falsk positivet (False positive issue)<\/li>\n<\/ul>\n<p><\/p>\n<p>Komponent<br \/>\nNexus IQ<br \/>\nDependency Check<br \/>\nDependency Track<br \/>\nAlvorlighed<br \/>\nResultat<br \/>\nKommentar<\/p>\n<p>dom4j: 1.6.1<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nCVE-2018-1000632<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nCVE-2020-10683<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>log4j-core: 2.3<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nCVE-2017-5645<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nCVE-2020-9488<br \/>\nLav<br \/>\nFALSE<\/p>\n<p>log4j: 1.2.14<br \/>\nCVE-2019-17571<br \/>\nCVE-2019-17571<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2020-9488<br \/>\n\u2014<br \/>\nLav<br \/>\nFALSE<\/p>\n<p>SONATYPE-2010-0053<br \/>\n\u2014<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>commons-collections:3.1<br \/>\n\u2014<br \/>\nCVE-2015-6420<br \/>\nCVE-2015-6420<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nDuplikerer RCE(OSSINDEX)<\/p>\n<p>\u2014<br \/>\nCVE-2017-15708<br \/>\nCVE-2017-15708<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nDuplikerer RCE(OSSINDEX)<\/p>\n<p>SONATYPE-2015-0002<br \/>\nRCE (OSSINDEX)<br \/>\nRCE(OSSINDEX)<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>commons-fileupload:1.3.2<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nCVE-2016-1000031<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>SONATYPE-2014-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>commons-beanutils:1.7.0<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2019-10086<br \/>\nCVE-2019-10086<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder kun for versioner 1.9.2+<\/p>\n<p>commons-codec:1:10<br \/>\nSONATYPE-2012-0050<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>mysql-connector-java:5.1.42<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nCVE-2018-3258<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2019-2692<br \/>\nCVE-2019-2692<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2020-2875<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nDen samme s\u00e5rbarhed som CVE-2019-2692, men med tilf\u00f8jelsen \u2018angreb kan have en betydelig indvirkning p\u00e5 yderligere produkter\u2019<\/p>\n<p>\u2014<br \/>\nCVE-2017-15945<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nIkke relevant for mysql-connector-java<\/p>\n<p>\u2014<br \/>\nCVE-2020-2933<br \/>\n\u2014<br \/>\nLav<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nDuplikat til CVE-2020-2934<\/p>\n<p>CVE-2020-2934<br \/>\nCVE-2020-2934<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>spring-expression:3.0.5<br \/>\nCVE-2018-1270<br \/>\nkomponenten ikke fundet<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2018-1257<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>spring-web:3.0.5<br \/>\nCVE-2016-1000027<br \/>\nkomponenten ikke fundet<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2014-0225<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2011-2730<br \/>\n\u2014<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>CVE-2018-1272<br \/>\n\u2014<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2020-5398<br \/>\n\u2014<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<br \/>\nEt eksempel til fordel for IQ: \u2018Sonatype sikkerhedsforskningsholdet opdagede, at denne s\u00e5rbarhed blev introduceret i version 3.0.2.RELEASE og ikke 5.0.x som angivet i adviseringen.\u2019<\/p>\n<p>CVE-2013-6429<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>CVE-2014-0054<br \/>\n\u2014<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>CVE-2013-6430<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>spring-context:3.0.5<br \/>\nCVE-2011-2894<br \/>\nkomponenten ikke fundet<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>spring-core:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\nCVE-2011-2730<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nCVE-2011-2894<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2013-4152<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nDuplikat af den samme s\u00e5rbarhed i spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder komponenten spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\nCVE-2013-6429<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder komponenten spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder komponenten spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\nCVE-2013-7315<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nSPLIT fra CVE-2013-4152. + S\u00e5rbarheden g\u00e6lder komponenten spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\nCVE-2014-0054<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder komponenten spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder komponenten spring-web<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2014-0225<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nDuplikat af den samme s\u00e5rbarhed i spring-web<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\nCVE-2014-1904<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder komponenten spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\nCVE-2014-3625<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder komponenten spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\nCVE-2016-9878<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder komponenten spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\nCVE-2018-1270<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nFor spring-expression \/ spring-messages<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\nCVE-2018-1271<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder komponenten spring-web-mvc<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\nCVE-2018-1272<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2014-3578<br \/>\nCVE-2014-3578 (OSSINDEX)<br \/>\nCVE-2014-3578<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>SONATYPE-2015-0327<br \/>\n\u2014<br \/>\n\u2014<br \/>\nLav<br \/>\nFALSE<\/p>\n<p>struts2-config-browser-plugin:2.3.30<br \/>\nSONATYPE-2016-0104<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\nFALSE<\/p>\n<p>spring-tx:3.0.5<br \/>\n\u2014<br \/>\nCVE-2011-2730<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2011-2894<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-4152<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6429<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-6430<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2013-7315<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0054<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-0225<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-1904<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2014-3625<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2016-9878<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1270<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1271<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>\u2014<br \/>\nCVE-2018-1272<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden g\u00e6lder ikke for spring-tx<\/p>\n<p>struts-core:1.3.8<br \/>\n\u2014<br \/>\nCVE-2011-5057 (OSSINDEX)<\/p>\n<p>Medium<br \/>\nFALSK<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0391 (OSSINDEX)<br \/>\nCVE-2012-0391<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0094 (OSSINDEX)<br \/>\nCVE-2014-0094<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2014-0113 (OSSINDEX)<br \/>\nCVE-2014-0113<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>CVE-2016-1182<br \/>\n3VE-2016-1182<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\n\u2014<br \/>\nCVE-2011-5057<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0392 (OSSINDEX)<br \/>\nCVE-2012-0392<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0393 (OSSINDEX)<br \/>\nCVE-2012-0393<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>CVE-2015-0899<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2012-0394<br \/>\nCVE-2012-0394<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2012-0838 (OSSINDEX)<br \/>\nCVE-2012-0838<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1965 (OSSINDEX)<br \/>\nCVE-2013-1965<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-1966 (OSSINDEX)<br \/>\nCVE-2013-1966<br \/>\nH\u00f8j<br \/>\nFALSK<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\nCVE-2013-2115<br \/>\nH\u00f8j<br \/>\nFALSK<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2134 (OSSINDEX)<br \/>\nCVE-2013-2134<br \/>\nH\u00f8j<br \/>\nFALSK<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2013-2135 (OSSINDEX)<br \/>\nCVE-2013-2135<br \/>\nH\u00f8j<br \/>\nFALSK<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>CVE-2014-0114<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\nCVE-2015-2992<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>\u2014<br \/>\nCVE-2016-0785 (OSSINDEX)<br \/>\nCVE-2016-0785<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>CVE-2016-1181<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2016-4003 (OSSINDEX)<br \/>\nCVE-2016-4003<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nS\u00e5rbarheden relaterer til Struts 2<\/p>\n<p>xwork-core:2.3.30<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>SONATYPE-2017-0173<br \/>\n\u2014<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2017-7672<br \/>\n\u2014<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nDublet til CVE-2017-9804<\/p>\n<p>SONATYPE-2016-0127<br \/>\n\u2014<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>struts2-core:2.3.30<br \/>\n\u2014<br \/>\nCVE-2016-6795<br \/>\nCVE-2016-6795<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9787<br \/>\nCVE-2017-9787<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9791<br \/>\nCVE-2017-9791<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9793<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nDuplikat til CVE-2018-1327<\/p>\n<p>\u2014<br \/>\nCVE-2017-9804<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>\u2014<br \/>\nCVE-2017-9805<br \/>\nCVE-2017-9805<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2016-4003<br \/>\n\u2014<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nAnvendelig til Apache Struts 2.x op til 2.3.28, hvilket er version 2.3.30. Dog, baseret p\u00e5 beskrivelsen, g\u00e6lder CVE for alle versioner af Struts 2, hvis der bruges JRE 1.7 og lavere. Det ser ud til, at vi her fors\u00f8ger at v\u00e6re forsigtige, men det ligner mere en FALSE<\/p>\n<p>\u2014<br \/>\nCVE-2018-1327<br \/>\nCVE-2018-1327<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nCVE-2017-5638<br \/>\nH\u00f8j<br \/>\nFALSE<br \/>\nDen s\u00e5rbarhed, som angribere udnyttede i Equifax i 2017<\/p>\n<p>CVE-2017-12611<br \/>\nCVE-2017-12611<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>CVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nCVE-2018-11776<br \/>\nH\u00f8j<br \/>\nFALSE<\/p>\n<p>struts-taglib:1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nTil struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nTil struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nTil commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nRelaterer ikke til taglib<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nRelaterer til struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nRelaterer ikke til taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nRelaterer ikke til taglib<\/p>\n<p>struts-tiles-1.3.8<br \/>\n\u2014<br \/>\nCVE-2012-0394<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nTil struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2013-2115<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nTil struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2014-0114<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nUnder commons-beanutils<\/p>\n<p>\u2014<br \/>\nCVE-2015-0899<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nRelaterer ikke til tiles<\/p>\n<p>\u2014<br \/>\nCVE-2015-2992<br \/>\n\u2014<br \/>\nMedium<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nTil struts2-core<\/p>\n<p>\u2014<br \/>\nCVE-2016-1181<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nRelaterer ikke til taglib<\/p>\n<p>\u2014<br \/>\nCVE-2016-1182<br \/>\n\u2014<br \/>\nH\u00f8j<br \/>\n. I vores eksempel har vi skrevet en simpel funktion, der ved hj\u00e6lp af den grundl\u00e6ggende funktion<br \/>\nRelaterer ikke til taglib<\/p>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/516660\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b. Software Composition Analysis \u2014 SCA) \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0440\u0430\u0441\u0442\u0435\u0442 \u043f\u043e \u043c\u0435\u0440\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u044b\u0445 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043e\u0431 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u0445 open source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f\u043c\u0438 Synopsys, Sonatype, Snyk, White Source. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043e\u0442\u0447\u0435\u0442\u0443 The State of Open Source Security Vulnerabilities 2020 \u0447\u0438\u0441\u043b\u043e \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 open source \u0432 2019 \u0432\u044b\u0440\u043e\u0441\u043b\u043e \u043f\u043e\u0447\u0442\u0438 \u0432 1.5 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92520,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92519","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0417\u043d\u0430\u0447\u0438\u043c\u043e\u0441\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u041f\u041e (\u0430\u043d\u0433\u043b.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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: arbejdprincippet og sammenligning af SCA. Del et | ProHoster","description":"Vigtigheden af at analysere tredjepartssoftwarekomponenter (eng.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/devsecops-princzipy-raboty-i-sravnenie-sca-chast-pervaya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/92519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=92519"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/92519\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/92520"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=92519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=92519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=92519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}