DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Mikilvægi greiningar á hugbúnaðarhlutum þriðja aðila (Software Composition Analysis - SCA) í þróunarferlinu eykst með útgáfu árlegra skýrslna um veikleika opinna bókasöfna, sem gefnar eru út af Synopsys, Sonatype, Snyk og White Source. . Samkvæmt skýrslunni Staða öryggisveikleika opins uppspretta 2020 Fjöldi auðkenndra opinna veikleika árið 2019 jókst næstum 1.5 sinnum miðað við árið áður, en opinn hugbúnaður íhlutir eru notaðir af 60% til 80% verkefna. Á sjálfstæðum grunni eru SCA-ferlar aðskilin framkvæmd OWASP SAMM og BSIMM sem vísbending um þroska, og á fyrri hluta ársins 2020 gaf OWASP út nýja OWASP Software Component Verification Standard (SCVS), sem veitir bestu starfsvenjur til að sannreyna þriðja- aðila hluti í aðfangakeðjunni BY.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Eitt mest lýsandi dæmið gerðist með Equifax í maí 2017. Óþekktir árásarmenn fengu upplýsingar um 143 milljónir Bandaríkjamanna, þar á meðal fullt nöfn, heimilisföng, kennitölur og ökuskírteini. Í 209 málum innihéldu skjölin einnig upplýsingar um bankakort fórnarlambanna. Þessi leki átti sér stað vegna hagnýtingar á mikilvægum varnarleysi í Apache Struts 000 (CVE-2-2017), á meðan lagfæringin var gefin út aftur í mars 5638. Fyrirtækið hafði tvo mánuði til að setja uppfærsluna upp en enginn nennti því.

Þessi grein mun fjalla um val á tæki til að framkvæma SCA út frá sjónarhóli gæða greiningarniðurstaðna. Einnig verður sýndur hagnýtur samanburður á verkfærunum. Ferlið við að samþætta í CI/CD og samþættingargetu verður skilið eftir fyrir síðari útgáfur. Mikið úrval verkfæra var kynnt af OWASP á síðunni þinni, en í núverandi umfjöllun munum við aðeins snerta vinsælasta opna tólið Dependency Check, örlítið minna þekkta opna vettvanginn Dependency Track og Enterprise lausnina Sonatype Nexus IQ. Við munum einnig skilja hvernig þessar lausnir virka og bera saman niðurstöðurnar sem fengust fyrir rangar jákvæðar niðurstöður.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Meginreglan um rekstur

Fæðingarathugun er tól (CLI, maven, jenkins mát, maur) sem greinir verkefnaskrár, safnar upplýsingum um ósjálfstæði (pakkaheiti, hópauðkenni, forskriftartitill, útgáfa...), byggir upp CPE (Common Platform Enumeration) línu , Pakkavefslóð ( PURL) og auðkennir veikleika fyrir CPE/PURL úr gagnagrunnum (NVD, Sonatype OSS Index, NPM Audit API...), eftir það byggir það upp einskiptisskýrslu á HTML, JSON, XML sniði...

Við skulum skoða hvernig CPE lítur út:

cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other

  • Hluti: Vísbending um að íhluturinn tengist forritinu (a), stýrikerfi (o), vélbúnaði (h) (nauðsynlegt)
  • Vendor: Nafn framleiðanda vöru (áskilið)
  • Vara: Vöruheiti (áskilið)
  • Útgáfa: Íhlutaútgáfa (úreltur hlutur)
  • Update: Uppfærsla á pakka
  • útgáfa: Eldri útgáfa (úrelt atriði)
  • Tungumál: Tungumál skilgreint í RFC-5646
  • SW útgáfa: Hugbúnaðarútgáfa
  • Markmið SV: Hugbúnaðarumhverfi sem varan starfar í
  • Markmið HW: Vélbúnaðarumhverfið sem varan starfar í
  • Annað: Upplýsingar um birgja eða vöru

Dæmi um CPE lítur svona út:

cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*

Línan þýðir að CPE útgáfa 2.3 lýsir forritshlutanum frá framleiðanda pivotal_software með titlinum spring_framework útgáfa 3.0.0. Ef við opnum varnarleysi CVE-2014-0225 í NVD, getum við séð minnst á þessa CPE. Fyrsta vandamálið sem þú ættir strax að borga eftirtekt til er að CVE í NVD, samkvæmt CPE, tilkynnir um vandamál í rammanum, en ekki í tilteknum íhlut. Það er að segja, ef forritarar eru þétt bundnir við rammann, og auðkennd varnarleysið hefur ekki áhrif á þær einingar sem verktaki nota, mun öryggissérfræðingur á einn eða annan hátt þurfa að taka þetta CVE í sundur og hugsa um uppfærslu.

Slóðin er einnig notuð af SCA verkfærum. Snið pakkans vefslóðar er sem hér segir:

scheme:type/namespace/name@version?qualifiers#subpath

  • Áætlun: Það mun alltaf vera 'pkg' sem gefur til kynna að þetta sé pakkavefslóð (áskilið)
  • Tegund: „Týpa“ pakkans eða „samskiptareglur“ pakkans, svo sem maven, npm, nuget, gem, pypi, osfrv. (Nauðsynlegt atriði)
  • Nafnarými: Eitthvað nafnaforskeyti, svo sem Maven hópauðkenni, Docker myndaeigandi, GitHub notandi eða stofnun. Valfrjálst og fer eftir gerð.
  • heiti: Nafn pakka (áskilið)
  • Útgáfa: Pakkaútgáfa
  • Undankeppni: Viðbótarhæfnisgögn fyrir pakkann, svo sem stýrikerfi, arkitektúr, dreifingu osfrv. Valfrjálst og tegundarsértækt.
  • Undirslóð: Viðbótarslóð í pakkanum miðað við pakkarótina

Til dæmis:

pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]

Dependency Track — vefvettvangur á staðnum sem tekur við tilbúnum efnisskrá (BOM) sem myndaður er CycloneDX и SPDX, það er tilbúnar forskriftir um núverandi ósjálfstæði. Þetta er XML skrá sem lýsir ósjálfstæði - nafn, kjötkássa, pakka slóð, útgefandi, leyfi. Næst greinir Dependency Track uppskriftina, skoðar CVEs sem eru tiltækar fyrir auðkenndar ósjálfstæði úr varnarleysisgagnagrunninum (NVD, Sonatype OSS Index...), eftir það smíðar það línurit, reiknar mæligildi, uppfærir reglulega gögn um varnarleysisstöðu íhluta. .

Dæmi um hvernig uppskrift gæti litið út á XML sniði:

<?xml version="1.0" encoding="UTF-8"?>
<bom xmlns="http://cyclonedx.org/schema/bom/1.2" serialNumber="urn:uuid:3e671687-395b-41f5-a30f-a58921a69b79" version="1">
  <components>
    <component type="library">
      <publisher>Apache</publisher>
      <group>org.apache.tomcat</group>
      <name>tomcat-catalina</name>
      <version>9.0.14</version>
      <hashes>
        <hash alg="MD5">3942447fac867ae5cdb3229b658f4d48</hash>
        <hash alg="SHA-1">e6b1000b94e835ffd37f4c6dcbdad43f4b48a02a</hash>
        <hash alg="SHA-256">f498a8ff2dd007e29c2074f5e4b01a9a01775c3ff3aeaf6906ea503bc5791b7b</hash>
        <hash alg="SHA-512">e8f33e424f3f4ed6db76a482fde1a5298970e442c531729119e37991884bdffab4f9426b7ee11fccd074eeda0634d71697d6f88a460dce0ac8d627a29f7d1282</hash>
      </hashes>
      <licenses>
        <license>
          <id>Apache-2.0</id>
        </license>
      </licenses>
      <purl>pkg:maven/org.apache.tomcat/[email protected]</purl>
    </component>
      <!-- More components here -->
  </components>
</bom>

BOM er ekki aðeins hægt að nota sem innsláttarfæribreytur fyrir Dependency Track, heldur einnig til að skrá hugbúnaðarhluta í aðfangakeðjunni, til dæmis til að útvega viðskiptavinum hugbúnað. Árið 2014 var meira að segja lagt til lög í Bandaríkjunum „Lög um netframboð og gagnsæi frá 2014“, þar sem fram kom að við kaup á hugbúnaði, hvaða ríki sem er. Stofnunin þarf að óska ​​eftir uppskrift til að koma í veg fyrir notkun viðkvæmra íhluta, en lögin hafa ekki enn öðlast gildi.

Aftur til SCA, Dependency Track er með tilbúnar samþættingar við tilkynningakerfi eins og Slack, varnarleysisstjórnunarkerfi eins og Kenna Security. Það er líka rétt að taka fram að Dependency Track auðkennir meðal annars gamaldags útgáfur af pakka og veitir upplýsingar um leyfi (vegna SPDX stuðnings).

Ef við tölum sérstaklega um gæði SCA, þá er grundvallarmunur.

Dependency Track samþykkir ekki verkefnið sem inntak, heldur uppskriftina. Þetta þýðir að ef við viljum prófa verkefnið þurfum við fyrst að búa til bom.xml, til dæmis með CycloneDX. Þannig er Dependency Track beint háð CycloneDX. Á sama tíma gerir það kleift að sérsníða. Þetta er það sem OZON liðið skrifaði CycloneDX mát til að setja saman BOM skrár fyrir Golang verkefni til frekari skönnunar í gegnum Dependency Track.

Nexus IQ er viðskiptaleg SCA lausn frá Sonatype, sem er hluti af Sonatype vistkerfinu, sem inniheldur einnig Nexus Repository Manager. Nexus IQ getur samþykkt sem inntak bæði stríðsskjalasafn (fyrir java verkefni) í gegnum vefviðmótið eða API, og BOM, ef fyrirtæki þitt hefur ekki enn skipt úr CycloneDX yfir í nýja lausn. Ólíkt opnum lausnum vísar IQ ekki aðeins til CP/PURL til auðkenndra hluta og samsvarandi varnarleysis í gagnagrunninum, heldur tekur hún einnig tillit til eigin rannsókna, til dæmis nafns á viðkvæmu falli eða flokki. Fjallað verður um gangverk greindarvísitölu síðar í greiningu á niðurstöðunum.

Við skulum draga saman nokkra hagnýtu eiginleika og einnig íhuga studd tungumál til greiningar:

Tungumál
Nexus IQ
Fæðingarathugun
Dependency Track

Java
+
+
+

C / C ++
+
+
-

C#
+
+
-

.Net
+
+
+

erlangur
-
-
+

JavaScript (NodeJS)
+
+
+

PHP
+
+
+

Python
+
+
+

Ruby
+
+
+

Perl
-
-
-

mælikvarði
+
+
+

Markmið C
+
+
-

Swift
+
+
-

R
+
-
-

Go
+
+
+

Virkni

Virkni
Nexus IQ
Fæðingarathugun
Dependency Track

Hæfni til að tryggja að íhlutir sem notaðir eru í frumkóðann séu athugaðir með tilliti til leyfilegrar hreinleika
+
-
+

Geta til að skanna og greina fyrir varnarleysi og hreinleika leyfis fyrir Docker myndir
+ Samþætting við Clair
-
-

Geta til að stilla öryggisstefnur til að nota opinn uppspretta bókasöfn
+
-
-

Geta til að skanna opnar geymslur fyrir viðkvæma hluti
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi

Framboð sérhæfðs rannsóknarhóps
+
-
-

Lokað lykkja rekstur
+
+
+

Notkun þriðja aðila gagnagrunna
+ Lokaður Sonatype gagnagrunnur
+ Sonatype OSS, NPM opinberir ráðgjafar
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, stuðningur við eigin varnarleysisgagnagrunn

Geta til að sía opna íhluti þegar reynt er að hlaða inn í þróunarlykkjuna í samræmi við stilltar stefnur
+
-
-

Ráðleggingar um að lagfæra veikleika, aðgengi að tenglum á lagfæringar
+
+- (fer eftir lýsingunni í opinberum gagnagrunnum)
+- (fer eftir lýsingunni í opinberum gagnagrunnum)

Röðun greindra veikleika eftir alvarleika
+
+
+

Hlutverkamiðað aðgangslíkan
+
-
+

CLI stuðningur
+
+
+- (aðeins fyrir CycloneDX)

Sýnataka/flokkun veikleika eftir skilgreindum viðmiðum
+
-
+

Mælaborð eftir umsóknarstöðu
+
-
+

Búa til skýrslur á PDF formi
+
-
-

Búa til skýrslur á JSONCSV sniði
+
+
-

Stuðningur á rússnesku
-
-
-

Samþættingargeta

Sameining
Nexus IQ
Fæðingarathugun
Dependency Track

LDAP/Active Directory samþætting
+
-
+

Samþætting við stöðugt samþættingarkerfi Bamboo
+
-
-

Samþætting við samfellt samþættingarkerfi TeamCity
+
-
-

Samþætting við stöðugt samþættingarkerfi GitLab
+
+- (sem viðbót fyrir GitLab)
+

Samþætting við stöðugt samþættingarkerfi Jenkins
+
+
+

Framboð á viðbótum fyrir IDE
+ IntelliJ, Eclipse, Visual Studio
-
-

Stuðningur við sérsniðna samþættingu í gegnum vefþjónustu (API) tólsins
+
-
+

Fæðingarathugun

Fyrsta byrjun

Við skulum keyra Dependency Check á vísvitandi viðkvæmu forriti DVJA.

Fyrir þetta munum við nota Dependency Check Maven Plugin:

mvn org.owasp:dependency-check-maven:check

Fyrir vikið mun dependency-check-report.html birtast í markskránni.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Við skulum opna skrána. Eftir samantektarupplýsingar um heildarfjölda veikleika, getum við séð upplýsingar um veikleika með háu stigi alvarleika og trausts, sem gefur til kynna pakkann, CPE og fjölda CVEs.

Næst koma ítarlegri upplýsingar, einkum á hvaða grundvelli ákvörðunin var tekin (sönnunargögn), það er að segja ákveðinn uppskrift.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Næst kemur CPE, PURL og CVE lýsingin. Við the vegur, tillögur um leiðréttingu eru ekki með vegna fjarveru þeirra í NVD gagnagrunninum.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Til að skoða kerfisbundið skannaniðurstöður geturðu stillt Nginx með lágmarksstillingum, eða sent gallana sem myndast í gallastjórnunarkerfi sem styður tengi við Dependency Check. Til dæmis, Defect Dojo.

Dependency Track

Uppsetning

Dependency Track er aftur á móti vefur vettvangur með skjámyndum, þannig að brýnt mál að geyma galla í lausn þriðja aðila kemur ekki upp hér.
Stuðningsforskriftirnar fyrir uppsetningu eru: Docker, WAR, Executable WAR.

Fyrsta byrjun

Við förum á slóð hlaupaþjónustunnar. Við skráum okkur inn í gegnum admin/admin, breytum notandanafninu og lykilorðinu og komumst svo á stjórnborðið. Það næsta sem við gerum er að búa til verkefni fyrir prófunarforrit í Java í Heim/Verkefni → Búa til verkefni . Tökum DVJA sem dæmi.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Þar sem Dependency Track getur aðeins samþykkt uppskrift sem inntak, verður að sækja þessa uppskrift. Nýtum okkur CycloneDX Maven Plugin:

mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom

Við fáum bom.xml og hleðum skránni í búið verkefni DVJA → Dependencies → Upload BOM.

Við skulum fara í Stjórnun → Greiningartæki. Okkur skilst að við höfum aðeins kveikt á Internal Analyzer, sem inniheldur NVD. Tengjum líka Sonatype OSS Index.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Þannig fáum við eftirfarandi mynd fyrir verkefnið okkar:

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Einnig á listanum er að finna einn varnarleysi sem á við um Sonatype OSS:

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Helstu vonbrigðin voru að Dependency Track tekur ekki lengur við Dependency Check xml skýrslum. Nýjustu studdu útgáfurnar af Dependency Check samþættingunni voru 1.0.0 - 4.0.2, á meðan ég prófaði 5.3.2.

Hér vídeó (og hér) þegar það var enn hægt.

Nexus IQ

Fyrsta byrjun

Uppsetning á Nexus IQ kemur úr skjalasafni skjöl, en við smíðuðum Docker mynd í þessum tilgangi.

Eftir að þú hefur skráð þig inn á stjórnborðið þarftu að búa til skipulag og forrit.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Eins og þú sérð er uppsetningin þegar um greindarvísitölu er að ræða nokkuð flóknari, vegna þess að við þurfum líka að búa til stefnur sem eiga við um mismunandi „stig“ (dev, build, stage, release). Þetta er nauðsynlegt til að loka fyrir viðkvæma íhluti þegar þeir fara í gegnum leiðsluna nær framleiðslu, eða til að loka þeim um leið og þeir komast inn í Nexus Repo þegar hönnuðir hafa hlaðið þeim niður.

Til að finna muninn á opnum hugbúnaði og fyrirtæki skulum við framkvæma sömu skönnun í gegnum Nexus IQ á sama hátt í gegnum Maven viðbót, eftir að hafa áður búið til prófunarforrit í NexusIQ viðmótinu dvja-test-and-compare:

mvn com.sonatype.clm:clm-maven-plugin:evaluate -Dclm.applicationId=dvja-test-and-compare -Dclm.serverUrl=<NEXUSIQIP> -Dclm.username=<USERNAME> -Dclm.password=<PASSWORD>

Fylgdu slóðinni að skýrslunni sem myndast í IQ vefviðmótinu:

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Hér geturðu séð öll brot gegn reglum sem gefa til kynna mismunandi mikilvægi (frá Info til Öryggisgagnrýni). Bókstafurinn D við hliðina á íhlutnum þýðir að íhluturinn er bein háð, og bókstafurinn T við hliðina á íhlutnum þýðir að íhluturinn er tímabundið háður, það er að segja að hann er tímabundinn.

Við the vegur, skýrslan State of Open Source Security Report 2020 frá Snyk greinir frá því að meira en 70% af opnum veikleikum sem uppgötvast í Node.js, Java og Ruby eru í ósjálfstæði.

Ef við opnum eitt af brotum á Nexus IQ stefnunni getum við séð lýsingu á íhlutnum, sem og útgáfugraf, sem sýnir staðsetningu núverandi útgáfu á tímagrafinu, sem og á hvaða tímapunkti varnarleysið hættir að vera berskjaldaður. Hæð kertanna á línuritinu sýnir vinsældir þess að nota þennan íhlut.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Ef þú ferð í veikleikahlutann og stækkar CVE geturðu lesið lýsingu á þessum varnarleysi, ráðleggingar um útrýmingu, sem og ástæðuna fyrir því að brotið var á þessum hluta, það er tilvist bekkjarins DiskFileitem.class.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Við skulum draga aðeins saman þá sem tengjast Java íhlutum þriðja aðila, fjarlægja js íhlutina. Innan sviga tilgreinum við fjölda veikleika sem fundust utan NVD.

Heildar IQ Nexus:

  • Ósjálfstæði skannaðar: 62
  • Viðkvæmar ósjálfstæði: 16
  • Veikleikar fundust: 42 (8 sónagerð db)

Athugun á heildarfíkn:

  • Ósjálfstæði skannaðar: 47
  • Viðkvæmar ósjálfstæði: 13
  • Veikleikar fundust: 91 (14 sonatype oss)

Heildarfíkn:

  • Ósjálfstæði skannaðar: 59
  • Viðkvæmar ósjálfstæði: 10
  • Veikleikar fundust: 51 (1 sonatype oss)

Í næstu skrefum munum við greina niðurstöðurnar sem fengust og komast að því hver þessara veikleika er raunverulegur galli og hver er falskur jákvæður.

Fyrirvari

Þessi endurskoðun er ekki óumdeilanlegur sannleikur. Höfundur hafði ekki það markmið að draga fram sérstakt hljóðfæri gegn bakgrunni annarra. Tilgangur endurskoðunarinnar var að sýna hvernig rekstur SCA verkfæra er og leiðir til að athuga niðurstöður þeirra.

Samanburður á niðurstöðum

Skilmálar og skilyrði:

Falsk jákvæð fyrir veikleika íhluta þriðja aðila er:

  • CVE misræmi við auðkenndan íhlut
  • Til dæmis, ef veikleiki er auðkenndur í struts2 ramma, og tólið bendir á hluta af struts-tiles ramma, sem þessi varnarleysi á ekki við, þá er þetta rangt jákvætt
  • CVE misræmi við auðkennda útgáfu af íhlutnum
  • Til dæmis er varnarleysið bundið við python útgáfu > 3.5 og tólið merkir útgáfu 2.7 sem viðkvæmt - þetta er falskt jákvætt, þar sem varnarleysið á í raun aðeins við um 3.x vörugreinina
  • Afrit af CVE
  • Til dæmis, ef SCA tilgreinir CVE sem gerir RCE kleift, þá tilgreinir SCA CVE fyrir sama íhlut sem á við Cisco vörur sem verða fyrir áhrifum af þeirri RCE. Í þessu tilviki mun það vera falskt jákvætt.
  • Til dæmis fannst CVE í vor-vef íhlut, eftir það bendir SCA á sama CVE í öðrum íhlutum Spring Framework, á meðan CVE hefur ekkert með aðra hluti að gera. Í þessu tilviki mun það vera falskt jákvætt.

Markmið rannsóknarinnar var Open Source verkefnið DVJA. Rannsóknin tók aðeins til java-hluta (án js).

Samantektarniðurstöður

Förum beint að niðurstöðum handvirkrar endurskoðunar á auðkenndum veikleikum. Skýrsluna í heild sinni fyrir hvert CVE má finna í viðauka.

Samantektarniðurstöður fyrir alla veikleika:

Viðfang
Nexus IQ
Fæðingarathugun
Dependency Track

Heildar veikleikar greindir
42
91
51

Rangt auðgreindir veikleikar (falskt jákvætt)
2 (4.76%)
62 (68,13%)
29 (56.86%)

Engir viðeigandi veikleikar fundust (falsk neikvæð)
10
20
27

Yfirlitsniðurstöður eftir íhlutum:

Viðfang
Nexus IQ
Fæðingarathugun
Dependency Track

Heildarhlutar auðkenndir
62
47
59

Samtals viðkvæmir þættir
16
13
10

Rangt auðkenndir viðkvæmir þættir (falskt jákvætt)
1
5
0

Rangt auðkenndir viðkvæmir þættir (falskt jákvætt)
0
6
6

Við skulum búa til sjónræn línurit til að meta hlutfall falskra jákvæðra og falskt neikvæðra af heildarfjölda veikleika. Íhlutir eru merktir lárétt og veikleikar sem greindir eru í þeim eru merktir lóðrétt.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Til samanburðar var svipuð rannsókn gerð af Sonatype teyminu sem prófaði verkefni með 1531 íhlutum með OWASP Dependency Check. Eins og við sjáum er hlutfall hávaða og réttra svara sambærilegt við niðurstöður okkar.

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti
Heimild: www.sonatype.com/why-precision-matters-ebook

Við skulum skoða nokkur CVE úr skannaniðurstöðum okkar til að skilja ástæðuna fyrir þessum niðurstöðum.

meira

№ 1

Við skulum fyrst skoða nokkra áhugaverða punkta um Sonatype Nexus IQ.

Nexus IQ bendir á vandamál með deserialization með getu til að framkvæma RCE í Spring Framework mörgum sinnum. CVE-2016-1000027 í vor-vef:3.0.5 í fyrsta skipti og CVE-2011-2894 í vor-samhengi:3.0.5 og vorkjarna:3.0.5. Í fyrstu virðist sem það sé tvöföldun á varnarleysi yfir mörg CVEs. Vegna þess að ef þú skoðar CVE-2016-1000027 og CVE-2011-2894 í NVD gagnagrunninum virðist allt vera augljóst

Hluti
Viðkvæmni

vor-vefur:3.0.5
CVE-2016-1000027

vor-samhengi:3.0.5
CVE-2011-2894

gormkjarna:3.0.5
CVE-2011-2894

Lýsing CVE-2011-2894 frá NVD:
DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Lýsing CVE-2016-1000027 frá NVD:
DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

CVE-2011-2894 sjálfur er nokkuð frægur. Í skýrslunni White Source 2011 þetta CVE var viðurkennt sem eitt það algengasta. Lýsingar fyrir CVE-2016-100027 eru í grundvallaratriðum fáar í NVD og þær virðast aðeins eiga við um Spring Framework 4.1.4. Við skulum kíkja á tilvísun og hér verður allt meira og minna ljóst. Frá Varanlegar greinar Við skiljum að til viðbótar við varnarleysið í RemoteInvocationSerializingExporter í CVE-2011-2894 sést varnarleysið í HttpInvokerServiceExporter. Þetta er það sem Nexus IQ segir okkur:

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Hins vegar er ekkert þessu líkt í NVD, þess vegna fá Dependency Check og Dependency Track hvor um sig rangar neikvæðar.

Einnig má skilja af lýsingunni á CVE-2011-2894 að varnarleysið sé sannarlega til staðar bæði í vor-samhengi:3.0.5 og spring-kjarna:3.0.5. Staðfestingu á þessu er að finna í grein frá þeim sem fann þennan varnarleysi.

№ 2

Hluti
Viðkvæmni
Niðurstaðan

stangir2 kjarna:2.3.30
CVE-2016-4003
RANGT

Ef við skoðum varnarleysið CVE-2016-4003 munum við skilja að það var lagað í útgáfu 2.3.28, hins vegar tilkynnir Nexus IQ okkur það. Það er athugasemd í lýsingunni á varnarleysinu:

DevSecOps: meginreglur um rekstur og samanburð á SCA. Fyrsti hluti

Það er, varnarleysið er aðeins til í tengslum við úrelta útgáfu af JRE, sem þeir ákváðu að vara okkur við. Engu að síður teljum við þetta falskt jákvætt, þó ekki það versta.

# 3

Hluti
Viðkvæmni
Niðurstaðan

xwork-core:2.3.30
CVE-2017-9804
SATT

xwork-core:2.3.30
CVE-2017-7672
RANGT

Ef við skoðum lýsingarnar á CVE-2017-9804 og CVE-2017-7672 munum við skilja að vandamálið er URLValidator class, með CVE-2017-9804 sem stafar af CVE-2017-7672. Tilvist seinni veikleikans ber ekki neitt gagnlegt álag annað en þá staðreynd að alvarleiki hans hefur aukist í High, svo við getum talið það óþarfa hávaða.

Í heildina fundust engar aðrar rangar jákvæðar niðurstöður fyrir Nexus IQ.

№ 4

Það eru nokkrir hlutir sem gera greindarvísitölu áberandi frá öðrum lausnum.

Hluti
Viðkvæmni
Niðurstaðan

vor-vefur:3.0.5
CVE-2020-5398
SATT

CVE í NVD segir að það eigi aðeins við um útgáfur 5.2.x fyrir 5.2.3, 5.1.x fyrir 5.1.13 og útgáfur 5.0.x fyrir 5.0.16, hins vegar, ef við skoðum CVE lýsinguna í Nexus IQ , þá munum við sjá eftirfarandi:
Tilkynning um ráðgefandi frávik: Sonatype öryggisrannsóknarteymið uppgötvaði að þessi varnarleysi var kynnt í útgáfu 3.0.2.RELEASE en ekki 5.0.x eins og fram kemur í ráðleggingunni.

Þessu fylgir PoC fyrir þennan varnarleysi, sem segir að hann sé til staðar í útgáfu 3.0.5.

Falsk neikvæð er send á Dependency Check og Dependency Track.

№ 5

Við skulum skoða falskt jákvætt fyrir Dependency Check og Dependency Track.

Dependency Check sker sig úr að því leyti að það endurspeglar þá CVE sem eiga við um allan rammann í NVD fyrir þá hluti sem þessi CVE eiga ekki við. Þetta varðar CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, sem er háð ” til struts-taglib:1.3.8 og struts-tiles-1.3.8. Þessir þættir hafa ekkert að gera með það sem lýst er í CVE - beiðni vinnsla, síðu löggilding, og svo framvegis. Þetta er vegna þess að það sem þessir CVE og íhlutir eiga sameiginlegt er aðeins ramminn, þess vegna taldi Dependency Check það varnarleysi.

Sama ástand er með spring-tx:3.0.5, og svipað ástand með struts-core:1.3.8. Fyrir struts-core, Dependency Check og Dependency Track hafa fundið fullt af veikleikum sem eiga í raun við um struts2-core, sem er í rauninni sérstakur rammi. Í þessu tilviki skildi Nexus IQ myndina rétt og í CVE-skjölunum sem það gaf út gaf það til kynna að struts-core hefði náð lífslokum og nauðsynlegt væri að fara yfir í struts2-core.

№ 6

Í sumum tilfellum er ósanngjarnt að túlka augljósa Dependency Check og Dependency Track villu. Sérstaklega CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, hvaða ósjálfstæði rekjað til spring-core:3.0.5 tilheyrir í raun vor-vef:3.0.5. Á sama tíma fundust sum þessara CVE einnig af Nexus IQ, en greindarvísitala auðkenndi þá rétt við annan íhlut. Vegna þess að þessir veikleikar fundust ekki í spring-core, þá er ekki hægt að halda því fram að þeir séu ekki í rammanum í grundvallaratriðum og opinn hugbúnaður benti réttilega á þessa veikleika (þau misstu bara af smá).

Niðurstöður

Eins og við sjáum gefur það ekki ótvíræðar niðurstöður að ákvarða áreiðanleika auðkenndra veikleika með handvirkri endurskoðun og þess vegna koma upp umdeild mál. Niðurstöðurnar eru þær að Nexus IQ lausnin hefur lægsta hlutfall falskra jákvæða og hæstu nákvæmni.

Í fyrsta lagi er þetta vegna þess að Sonatype teymið stækkaði lýsinguna fyrir hvern CVE varnarleysi frá NVD í gagnagrunnum sínum, til að gefa til kynna varnarleysi fyrir tiltekna útgáfu af íhlutunum niður í flokkinn eða aðgerðina, gera viðbótarrannsóknir (td. , athuga veikleika í eldri hugbúnaðarútgáfum).

Mikilvæg áhrif á niðurstöðurnar hafa einnig þessir veikleikar sem voru ekki með í NVD, en eru engu að síður til staðar í Sonatype gagnagrunninum með SONATYPE merkinu. Samkvæmt skýrslunni Staða öryggisveikleika opins uppspretta 2020 45% af uppgötvuðum opnum veikleikum er ekki tilkynnt til NVD. Samkvæmt WhiteSource gagnagrunninum eru aðeins 29% af öllum opnum veikleikum sem tilkynnt er um utan NVD birt þar, þess vegna er mikilvægt að leita einnig að veikleikum í öðrum heimildum.

Fyrir vikið framleiðir Dependency Check mikinn hávaða og vantar nokkra viðkvæma hluti. Dependency Track framleiðir minni hávaða og greinir mikinn fjölda íhluta, sem skaðar ekki sjónrænt augun í vefviðmótinu.

Hins vegar sýnir æfingin að opinn uppspretta ætti að verða fyrstu skrefin í átt að þroskaðri DevSecOps. Það fyrsta sem þú ættir að hugsa um þegar þú samþættir SCA inn í þróun er ferli, nefnilega að hugsa saman með stjórnendum og tengdum deildum um hvernig kjörferlar ættu að líta út í fyrirtækinu þínu. Það kann að koma í ljós að fyrir fyrirtæki þitt, í fyrstu mun Dependency Check eða Dependency Track ná til allra viðskiptaþarfa og Enterprise lausnir verða rökrétt framhald vegna vaxandi flóknar forritanna sem verið er að þróa.

Viðauki A: Niðurstöður íhluta
Tákn:

  • Varnarleysi á háu og mikilvægu stigi í íhlutnum
  • Miðlungs — Varnarleysi á miðlungs gagnrýnistigi í íhlutnum
  • SATT - Sannkallað jákvætt mál
  • FALSK — Falskt jákvætt mál

Hluti
Nexus IQ
Fæðingarathugun
Dependency Track
Niðurstaðan

dom4j: 1.6.1
Hár
Hár
Hár
SATT

log4j kjarni: 2.3
Hár
Hár
Hár
SATT

log4j: 1.2.14
Hár
Hár
-
SATT

sameignarsafn:3.1
Hár
Hár
Hár
SATT

commons-skráaupphleðsla:1.3.2
Hár
Hár
Hár
SATT

commons-beanutils:1.7.0
Hár
Hár
Hár
SATT

commons-merkjamál:1:10
Medium
-
-
SATT

mysql-tengi-java:5.1.42
Hár
Hár
Hár
SATT

vor-tjáning:3.0.5
Hár
hluti fannst ekki

SATT

vor-vefur:3.0.5
Hár
hluti fannst ekki
Hár
SATT

vor-samhengi:3.0.5
Medium
hluti fannst ekki
-
SATT

gormkjarna:3.0.5
Medium
Hár
Hár
SATT

struts2-config-browser-plugin:2.3.30
Medium
-
-
SATT

spring-tx:3.0.5
-
Hár
-
RANGT

stangarkjarni:1.3.8
Hár
Hár
Hár
SATT

xwork-core: 2.3.30
Hár
-
-
SATT

struts2-kjarna: 2.3.30
Hár
Hár
Hár
SATT

struts-taglib:1.3.8
-
Hár
-
RANGT

stangarflísar-1.3.8
-
Hár
-
RANGT

Viðauki B: Niðurstöður um varnarleysi
Tákn:

  • Varnarleysi á háu og mikilvægu stigi í íhlutnum
  • Miðlungs — Varnarleysi á miðlungs gagnrýnistigi í íhlutnum
  • SATT - Sannkallað jákvætt mál
  • FALSK — Falskt jákvætt mál

Hluti
Nexus IQ
Fæðingarathugun
Dependency Track
Alvarleiki
Niðurstaðan
Athugasemd

dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
Hár
SATT

CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
Hár
SATT

log4j kjarni: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
Hár
SATT

CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
Low
SATT

log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
Hár
SATT

-
CVE-2020-9488
-
Low
SATT

SONATYPE-2010-0053
-
-
Hár
SATT

sameignarsafn:3.1
-
CVE-2015-6420
CVE-2015-6420
Hár
RANGT
Afrit af RCE(OSSINDEX)

-
CVE-2017-15708
CVE-2017-15708
Hár
RANGT
Afrit af RCE(OSSINDEX)

SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
Hár
SATT

commons-skráaupphleðsla:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
Hár
SATT

SONATYPE-2014-0173
-
-
Medium
SATT

commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
Hár
SATT

-
CVE-2019-10086
CVE-2019-10086
Hár
RANGT
Varnarleysið á aðeins við um útgáfur 1.9.2+

commons-merkjamál:1:10
SONATYPE-2012-0050
-
-
Medium
SATT

mysql-tengi-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
Hár
SATT

CVE-2019-2692
CVE-2019-2692
-
Medium
SATT

-
CVE-2020-2875
-
Medium
RANGT
Sama varnarleysi og CVE-2019-2692, en með athugasemdinni „árásir geta haft veruleg áhrif á viðbótarvörur“

-
CVE-2017-15945
-
Hár
RANGT
Á ekki við um mysql-connector-java

-
CVE-2020-2933
-
Low
RANGT
Afrit af CVE-2020-2934

CVE-2020-2934
CVE-2020-2934
-
Medium
SATT

vor-tjáning:3.0.5
CVE-2018-1270
hluti fannst ekki
-
Hár
SATT

CVE-2018-1257
-
-
Medium
SATT

vor-vefur:3.0.5
CVE-2016-1000027
hluti fannst ekki
-
Hár
SATT

CVE-2014-0225
-
CVE-2014-0225
Hár
SATT

CVE-2011-2730
-
-
Hár
SATT

-
-
CVE-2013-4152
Medium
SATT

CVE-2018-1272
-
-
Hár
SATT

CVE-2020-5398
-
-
Hár
SATT
Lýsandi dæmi í þágu greindarvísitölu: "Sonatype öryggisrannsóknarteymið uppgötvaði að þessi varnarleysi var kynnt í útgáfu 3.0.2.RELEASE en ekki 5.0.x eins og fram kemur í ráðleggingunni."

CVE-2013-6429
-
-
Medium
SATT

CVE-2014-0054
-
CVE-2014-0054
Medium
SATT

CVE-2013-6430
-
-
Medium
SATT

vor-samhengi:3.0.5
CVE-2011-2894
hluti fannst ekki
-
Medium
SATT

gormkjarna:3.0.5
-
CVE-2011-2730
CVE-2011-2730
Hár
SATT

CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Medium
SATT

-
-
CVE-2013-4152
Medium
RANGT
Afrit af sama varnarleysi í vor-vef

-
CVE-2013-4152
-
Medium
RANGT
Varnarleysið tengist vor-vefhlutanum

-
CVE-2013-6429
CVE-2013-6429
Medium
RANGT
Varnarleysið tengist vor-vefhlutanum

-
CVE-2013-6430
-
Medium
RANGT
Varnarleysið tengist vor-vefhlutanum

-
CVE-2013-7315
CVE-2013-7315
Medium
RANGT
SPLIT frá CVE-2013-4152. + Varnarleysið tengist vor-vefhlutanum

-
CVE-2014-0054
CVE-2014-0054
Medium
RANGT
Varnarleysið tengist vor-vefhlutanum

-
CVE-2014-0225
-
Hár
RANGT
Varnarleysið tengist vor-vefhlutanum

-
-
CVE-2014-0225
Hár
RANGT
Afrit af sama varnarleysi í vor-vef

-
CVE-2014-1904
CVE-2014-1904
Medium
RANGT
Varnarleysið tengist spring-web-mvc íhlutnum

-
CVE-2014-3625
CVE-2014-3625
Medium
RANGT
Varnarleysið tengist spring-web-mvc íhlutnum

-
CVE-2016-9878
CVE-2016-9878
Hár
RANGT
Varnarleysið tengist spring-web-mvc íhlutnum

-
CVE-2018-1270
CVE-2018-1270
Hár
RANGT
Fyrir vor-tjáningu/vor-boð

-
CVE-2018-1271
CVE-2018-1271
Medium
RANGT
Varnarleysið tengist spring-web-mvc íhlutnum

-
CVE-2018-1272
CVE-2018-1272
Hár
SATT

CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
Medium
SATT

SONATYPE-2015-0327
-
-
Low
SATT

struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
Medium
SATT

spring-tx:3.0.5
-
CVE-2011-2730
-
Hár
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2011-2894
-
Hár
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2013-4152
-
Medium
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2013-6429
-
Medium
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2013-6430
-
Medium
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2013-7315
-
Medium
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2014-0054
-
Medium
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2014-0225
-
Hár
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2014-1904
-
Medium
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2014-3625
-
Medium
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2016-9878
-
Hár
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2018-1270
-
Hár
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2018-1271
-
Medium
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

-
CVE-2018-1272
-
Medium
RANGT
Varnarleysið er ekki sérstaklega við spring-tx

stangarkjarni:1.3.8
-
CVE-2011-5057 (OSSINDEX)

Medium
FASLE
Varnarleysi fyrir struts 2

-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
Hár
RANGT
Varnarleysi fyrir struts 2

-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
Medium
RANGT
Varnarleysi fyrir struts 2

-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
Hár
RANGT
Varnarleysi fyrir struts 2

CVE-2016-1182
3VE-2016-1182
-
Hár
SATT

-
-
CVE-2011-5057
Medium
RANGT
Varnarleysi fyrir struts 2

-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
Hár
RANGT
Varnarleysi fyrir struts 2

-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
Medium
RANGT
Varnarleysi fyrir struts 2

CVE-2015-0899
CVE-2015-0899
-
Hár
SATT

-
CVE-2012-0394
CVE-2012-0394
Medium
RANGT
Varnarleysi fyrir struts 2

-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
Hár
RANGT
Varnarleysi fyrir struts 2

-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
Hár
RANGT
Varnarleysi fyrir struts 2

-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
Hár
FASLE
Varnarleysi fyrir struts 2

-
CVE-2013-2115
CVE-2013-2115
Hár
FASLE
Varnarleysi fyrir struts 2

-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
Hár
FASLE
Varnarleysi fyrir struts 2

-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
Hár
FASLE
Varnarleysi fyrir struts 2

CVE-2014-0114
CVE-2014-0114
-
Hár
SATT

-
CVE-2015-2992
CVE-2015-2992
Medium
RANGT
Varnarleysi fyrir struts 2

-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
Hár
RANGT
Varnarleysi fyrir struts 2

CVE-2016-1181
CVE-2016-1181
-
Hár
SATT

-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
Hár
RANGT
Varnarleysi fyrir struts 2

xwork-core:2.3.30
CVE-2017-9804
-
-
Hár
SATT

SONATYPE-2017-0173
-
-
Hár
SATT

CVE-2017-7672
-
-
Hár
RANGT
Afrit af CVE-2017-9804

SONATYPE-2016-0127
-
-
Hár
SATT

stangir2 kjarna:2.3.30
-
CVE-2016-6795
CVE-2016-6795
Hár
SATT

-
CVE-2017-9787
CVE-2017-9787
Hár
SATT

-
CVE-2017-9791
CVE-2017-9791
Hár
SATT

-
CVE-2017-9793
-
Hár
RANGT
Afrit af CVE-2018-1327

-
CVE-2017-9804
-
Hár
SATT

-
CVE-2017-9805
CVE-2017-9805
Hár
SATT

CVE-2016-4003
-
-
Medium
RANGT
Gildir fyrir Apache Struts 2.x upp að 2.3.28, sem er útgáfa 2.3.30. Hins vegar, miðað við lýsinguna, gildir CVE fyrir hvaða útgáfu sem er af Struts 2 ef JRE 1.7 eða minna er notað. Þeir ákváðu greinilega að endurtryggja okkur hér, en það lítur meira út eins og FALSK

-
CVE-2018-1327
CVE-2018-1327
Hár
SATT

CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
Hár
SATT
Sama varnarleysi og Equifax tölvuþrjótar nýttu sér árið 2017

CVE-2017-12611
CVE-2017-12611
-
Hár
SATT

CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
Hár
SATT

struts-taglib:1.3.8
-
CVE-2012-0394
-
Medium
RANGT
Fyrir stuttar 2 kjarna

-
CVE-2013-2115
-
Hár
RANGT
Fyrir stuttar 2 kjarna

-
CVE-2014-0114
-
Hár
RANGT
Fyrir commons-beanutils

-
CVE-2015-0899
-
Hár
RANGT
Á ekki við um taglib

-
CVE-2015-2992
-
Medium
RANGT
Vísar til struts2-kjarna

-
CVE-2016-1181
-
Hár
RANGT
Á ekki við um taglib

-
CVE-2016-1182
-
Hár
RANGT
Á ekki við um taglib

stangarflísar-1.3.8
-
CVE-2012-0394
-
Medium
RANGT
Fyrir stuttar 2 kjarna

-
CVE-2013-2115
-
Hár
RANGT
Fyrir stuttar 2 kjarna

-
CVE-2014-0114
-
Hár
RANGT
Undir commons-beanutils

-
CVE-2015-0899
-
Hár
RANGT
Á ekki við um flísar

-
CVE-2015-2992
-
Medium
RANGT
Fyrir stuttar 2 kjarna

-
CVE-2016-1181
-
Hár
RANGT
Á ekki við um taglib

-
CVE-2016-1182
-
Hár
RANGT
Á ekki við um taglib

Heimild: www.habr.com

Bæta við athugasemd