DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Pentinge analisis komponen piranti lunak pihak katelu (Analisis Komposisi Perangkat Lunak - SCA) ing proses pangembangan saya tambah akeh kanthi rilis laporan taunan babagan kerentanan perpustakaan open source, sing diterbitake dening Synopsys, Sonatype, Snyk, lan White Source. . Miturut laporan Negara Kerentanan Keamanan Open Source 2020 jumlah kerentanan sumber terbuka sing diidentifikasi ing taun 2019 mundhak meh 1.5 kaping dibandhingake taun sadurunge, dene komponen sumber terbuka digunakake 60% nganti 80% proyek. Kanthi dhasar, proses SCA minangka praktik kapisah saka OWASP SAMM lan BSIMM minangka indikator kadewasan, lan ing separo pisanan 2020, OWASP ngrilis OWASP Software Component Verification Standard (SCVS) anyar, nyedhiyakake praktik paling apik kanggo verifikasi pihak- komponen partai ing chain sumber BY.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Salah sawijining kasus sing paling ilustrasi kedaden karo Equifax ing Mei 2017. Penyerang sing ora dingerteni entuk informasi babagan 143 yuta wong Amerika, kalebu jeneng lengkap, alamat, nomer Keamanan Sosial lan lisensi driver. Ing 209 kasus, dokumen kasebut uga kalebu informasi babagan kertu bank para korban. Bocor iki kedadeyan minangka akibat saka eksploitasi kerentanan kritis ing Apache Struts 000 (CVE-2-2017), nalika perbaikan kasebut dirilis maneh ing Maret 5638. Perusahaan wis rong sasi kanggo nginstal nganyari, nanging ora ana sing keganggu.

Artikel iki bakal ngrembug masalah milih alat kanggo nindakake SCA saka sudut pandang kualitas asil analisis. Perbandingan fungsi alat uga bakal diwenehake. Proses integrasi menyang CI / CD lan kapabilitas integrasi bakal ditinggalake kanggo publikasi sabanjure. Macem-macem alat diwenehake dening OWASP ing situs sampeyan, nanging ing review saiki, kita mung bakal ndemek alat open source sing paling populer, Dependency Check, platform open source sing rada kurang kondhang lan solusi Enterprise Sonatype Nexus IQ. Kita uga bakal ngerti kepiye solusi kasebut lan mbandhingake asil sing dipikolehi kanggo positip palsu.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Cara kerjane

Priksa Ketergantungan minangka sarana (CLI, maven, modul jenkins, semut) ​​sing nganalisa file proyek, ngumpulake potongan informasi babagan dependensi (jeneng paket, groupid, judhul spesifikasi, versi ...), mbangun garis CPE (Common Platform Enumeration). , URL Paket ( PURL) lan ngenali kerentanan kanggo CPE/PURL saka database (NVD, Sonatype OSS Index, NPM Audit API...), sawise iku mbangun laporan siji-wektu ing HTML, JSON, format XML...

Ayo katon kaya CPE:

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

  • Part: Indikasi yen komponen ana hubungane karo aplikasi (a), sistem operasi (o), hardware (h) (Dibutuhake)
  • vendor: Jeneng Produsen Produk (dibutuhake)
  • Product: Jeneng produk (dibutuhake)
  • versi: Versi komponen (Item sing ora bisa digunakake)
  • nganyari: nganyari paket
  • Edition: Versi lawas (Item sing ora digunakake)
  • Language: Basa sing ditetepake ing RFC-5646
  • Edisi SW: Versi piranti lunak
  • Target SW: Lingkungan piranti lunak ing ngendi produk kasebut digunakake
  • Target HW: Lingkungan hardware ing ngendi produk kasebut dioperasikake
  • Liyane: Supplier utawa Informasi Product

Conto CPE katon kaya iki:

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

Baris kasebut tegese versi CPE 2.3 nggambarake komponen aplikasi saka pabrikan pivotal_software kanthi judhul spring_framework versi 3.0.0. Yen kita mbukak kerentanan CVE-2014-0225 ing NVD, kita bisa ndeleng sebutno CPE iki. Masalah pisanan sing kudu langsung digatekake yaiku CVE ing NVD, miturut CPE, nglaporake masalah ing kerangka kerja, lan ora ing komponen tartamtu. Yaiku, yen pangembang diikat banget karo kerangka kerja kasebut, lan kerentanan sing diidentifikasi ora mengaruhi modul sing digunakake para pangembang, spesialis keamanan bakal mbongkar CVE iki lan mikir babagan nganyari.

URL uga digunakake dening alat SCA. Format URL paket kaya ing ngisor iki:

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

  • Skema: Bakal tansah ana 'pkg' sing nuduhake yen iki minangka URL paket (Dibutuhake)
  • Koleksi: "Jenis" paket utawa "protokol" paket, kayata maven, npm, nuget, gem, pypi, lsp. (Dibutuhake)
  • Spasi jeneng: Sawetara jeneng awalan, kayata ID grup Maven, pemilik gambar Docker, pangguna GitHub, utawa organisasi. Opsional lan gumantung ing jinis.
  • Jeneng: Jeneng Paket (Dibutuhake)
  • versi: Versi paket
  • Kualifikasi: Data kualifikasi tambahan kanggo paket kasebut, kayata OS, arsitektur, distribusi, lsp. Opsional lan khusus jinis.
  • Subpath: Path tambahan ing paket relatif kanggo root paket

Contone:

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

Track Ketergantungan - platform web on-premise sing nampa Bill of Materials (BOM) sing wis digawe CycloneDX и SPDX, yaiku, spesifikasi siap-siap babagan dependensi sing ana. Iki minangka file XML sing nggambarake dependensi - jeneng, hash, url paket, penerbit, lisensi. Sabanjure, Dependency Track parses BOM, ndeleng CVE sing kasedhiya kanggo dependensi sing diidentifikasi saka database kerentanan (NVD, Sonatype OSS Index ...), sawise iku mbangun grafik, ngitung metrik, nganyari data kanthi rutin babagan status kerentanan komponen. .

Conto kaya apa BOM ing format XML:

<?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 bisa digunakake ora mung minangka paramèter input kanggo Dependency Track, nanging uga kanggo inventarisasi komponen software ing chain sumber, Contone, kanggo piranti lunak kanggo customer. Ing 2014, hukum malah diusulake ing Amerika Serikat "Undhang-undhang Manajemen lan Transparansi Rantai Siber 2014", sing nyatakake yen tuku piranti lunak, negara apa wae. Institusi kasebut kudu njaluk BOM kanggo nyegah panggunaan komponen sing rawan, nanging tumindak kasebut durung ditrapake.

Bali menyang SCA, Dependency Track duwe integrasi sing wis siap karo Platform Notifikasi kaya Slack, sistem manajemen kerentanan kaya Kenna Security. Iku uga worth ngandika sing Dependency Track, antarane liyane, ngenali versi outdated paket lan menehi informasi babagan lisensi (amarga dhukungan SPDX).

Yen kita ngomong khusus babagan kualitas SCA, mula ana prabédan dhasar.

Dependency Track ora nampa proyek minangka input, nanging BOM. Iki tegese yen kita pengin nyoba proyek kasebut, kita kudu ngasilake bom.xml, contone nggunakake CycloneDX. Dadi, Dependency Track langsung gumantung marang CycloneDX. Ing wektu sing padha, ngidini kustomisasi. Iki sing ditulis tim OZON Modul CycloneDX kanggo assembling file BOM kanggo proyek Golang kanggo mindhai luwih liwat Dependency Track.

Nexus IQ iku solusi SCA komersial saka Sonatype, kang bagéan saka ekosistem Sonatype, kang uga kalebu Nexus Repository Manager. Nexus IQ bisa nampa minangka input loro arsip perang (kanggo proyek java) liwat antarmuka web utawa API, lan BOM, yen organisasi sampeyan durung ngalih saka CycloneDX menyang solusi anyar. Ora kaya solusi open source, IQ ora mung nuduhake CP / PURL menyang komponen sing diidentifikasi lan kerentanan sing cocog ing database, nanging uga njupuk riset dhewe, contone, jeneng fungsi utawa kelas sing rawan. Mekanisme IQ bakal dibahas mengko ing analisis asil.

Ayo ngringkes sawetara fitur fungsional, lan uga nimbang basa sing didhukung kanggo analisis:

Basa
Nexus IQ
Priksa Ketergantungan
Track Ketergantungan

Jawa
+
+
+

C / C ++
+
+
-

C#
+
+
-

.Net
+
+
+

erlang
-
-
+

JavaScript (NodeJS)
+
+
+

PHP
+
+
+

Python
+
+
+

Ruby
+
+
+

Perl
-
-
-

Scala
+
+
+

Objektif C
+
+
-

Swift
+
+
-

R
+
-
-

Go
+
+
+

Fungsi

Fungsi
Nexus IQ
Priksa Ketergantungan
Track Ketergantungan

Kemampuan kanggo mesthekake yen komponen sing digunakake ing kode sumber wis dicenthang kanggo kemurnian dilisensi
+
-
+

Kemampuan kanggo mindhai lan nganalisa kerentanan lan kebersihan lisensi kanggo gambar Docker
+ Integrasi karo Clair
-
-

Kemampuan kanggo ngatur kabijakan keamanan kanggo nggunakake perpustakaan open source
+
-
-

Kemampuan kanggo mindhai repositori open source kanggo komponen sing rawan
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi

Kasedhiya klompok riset khusus
+
-
-

Operasi loop tertutup
+
+
+

Nggunakake database pihak katelu
+ Ditutup database Sonatype
+ Sonatype OSS, Penasihat Umum NPM
+ Sonatype OSS, Penasihat Umum NPM, RetireJS, VulnDB, dhukungan kanggo database kerentanan dhewe

Kemampuan kanggo nyaring komponen open source nalika nyoba kanggo mbukak menyang daur ulang pembangunan miturut kabijakan diatur
+
-
-

Rekomendasi kanggo ndandani kerentanan, kasedhiyan tautan kanggo ndandani
+
+- (gumantung saka katrangan ing database umum)
+- (gumantung saka katrangan ing database umum)

Peringkat kerentanan sing dideteksi miturut tingkat keruwetan
+
+
+

Model akses adhedhasar peran
+
-
+

Dhukungan CLI
+
+
+- (mung kanggo CycloneDX)

Sampling / ngurutake kerentanan miturut kriteria sing ditemtokake
+
-
+

Dashboard miturut status aplikasi
+
-
+

Nggawe laporan ing format PDF
+
-
-

Ngasilake laporan ing format JSONCSV
+
+
-

Dhukungan basa Rusia
-
-
-

Kapabilitas Integrasi

Integrasi
Nexus IQ
Priksa Ketergantungan
Track Ketergantungan

Integrasi LDAP/Direktori Aktif
+
-
+

Integrasi karo sistem integrasi terus-terusan Bambu
+
-
-

Integrasi karo sistem integrasi terus-terusan TeamCity
+
-
-

Integrasi karo sistem integrasi terus GitLab
+
+- (minangka plugin kanggo GitLab)
+

Integrasi karo sistem integrasi terus Jenkins
+
+
+

Kasedhiyan plugins kanggo IDE
+ IntelliJ, Eclipse, Visual Studio
-
-

Dhukungan kanggo integrasi khusus liwat layanan web (API) alat kasebut
+
-
+

Priksa Ketergantungan

Awal wiwitan

Ayo mbukak Dependency Check ing aplikasi sing sengaja ngrugekke DVJA.

Kanggo iki kita bakal nggunakake Ketergantungan Priksa Plugin Maven:

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

Akibaté, dependency-check-report.html bakal katon ing direktori target.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Ayo mbukak file kasebut. Sawise ringkesan informasi babagan jumlah total kerentanan, kita bisa ndeleng informasi babagan kerentanan kanthi tingkat Keruwetan lan Kapercayan sing dhuwur, nuduhake paket, CPE, lan jumlah CVE.

Sabanjure teka informasi sing luwih rinci, utamane basis keputusan kasebut (bukti), yaiku, BOM tartamtu.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Sabanjure nerangake gambaran CPE, PURL lan CVE. Miturut cara, rekomendasi kanggo koreksi ora kalebu amarga ora ana ing database NVD.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Kanggo ndeleng asil pindai kanthi sistematis, sampeyan bisa ngatur Nginx kanthi setelan minimal, utawa ngirim cacat sing diasilake menyang sistem manajemen cacat sing ndhukung konektor menyang Priksa Ketergantungan. Contone, Defect Dojo.

Track Ketergantungan

Instalasi

Ketergantungan Track, minangka platform basis web kanthi grafik tampilan, saengga masalah nyimpen cacat ing solusi pihak katelu ora muncul ing kene.
Skrip sing didhukung kanggo instalasi yaiku: Docker, WAR, Executable WAR.

Awal wiwitan

Kita menyang URL layanan sing mlaku. Kita mlebu liwat admin / admin, ngganti login lan tembung sandhi, banjur menyang Dashboard. Ing bab sabanjure kita bakal nggawe proyek kanggo aplikasi test ing Jawa ing Ngarep/Proyek → Gawe Proyek . Ayo njupuk DVJA minangka conto.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Wiwit Dependency Track mung bisa nampa BOM minangka input, BOM iki kudu dijupuk. Ayo padha njupuk kauntungan CycloneDX Maven Plugin:

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

We njaluk bom.xml lan mbukak file ing project digawe DVJA → Dependensi → Unggah BOM.

Ayo menyang Administrasi → Analyzers. Kita ngerti yen kita mung duwe Internal Analyzer aktif, sing kalebu NVD. Ayo uga nyambung Sonatype OSS Index.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Mangkono, kita entuk gambar ing ngisor iki kanggo proyek kita:

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Uga ing dhaptar sampeyan bisa nemokake siji kerentanan sing ditrapake kanggo Sonatype OSS:

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Kuciwo utama yaiku Dependency Track ora nampa maneh laporan Dependency Check xml. Versi paling anyar sing didhukung saka integrasi Dependency Check yaiku 1.0.0 - 4.0.2, nalika aku nyoba 5.3.2.

kene видео (lan lah) nalika isih bisa.

Nexus IQ

Awal wiwitan

Instalasi Nexus IQ asalé saka arsip saka dokumentasi, nanging kita nggawe gambar Docker kanggo tujuan kasebut.

Sawise mlebu menyang konsol, sampeyan kudu nggawe Organisasi lan Aplikasi.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Kaya sing sampeyan ngerteni, persiyapan ing kasus IQ luwih rumit, amarga kita uga kudu nggawe kabijakan sing ditrapake kanggo "tahap" sing beda (dev, build, stage, release). Iki perlu kanggo mblokir komponen sing rawan nalika pindhah liwat pipa sing luwih cedhak karo produksi, utawa mblokir kasebut sanalika mlebu ing Nexus Repo nalika diundhuh dening pangembang.

Kanggo ngrasakake prabédan antarane open source lan perusahaan, ayo nindakake pindai sing padha liwat Nexus IQ kanthi cara sing padha Plugin Maven, sadurunge nggawe aplikasi tes ing antarmuka NexusIQ 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>

Tindakake URL menyang laporan sing digawe ing antarmuka web IQ:

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Ing kene sampeyan bisa ndeleng kabeh pelanggaran kabijakan sing nuduhake tingkat signifikansi sing beda (saka Info nganti Kritis Keamanan). Huruf D ing jejere komponen tegese komponen kasebut langsung gumantung, lan huruf T ing jejere komponen tegese komponen kasebut minangka Dependensi Transitif, yaiku transitif.

Miturut cara, laporan Laporan Keamanan Negara Open Source 2020 saka Snyk nglaporake manawa luwih saka 70% kerentanan open source sing ditemokake ing Node.js, Java lan Ruby ana ing dependensi transitif.

Yen kita mbukak salah sawijining pelanggaran kabijakan Nexus IQ, kita bisa ndeleng katrangan babagan komponen kasebut, uga Grafik Versi, sing nuduhake lokasi versi saiki ing grafik wektu, uga ing titik apa kerentanan kasebut mandheg. dadi rawan. Dhuwur lilin ing grafik nuduhake popularitas nggunakake komponen iki.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Yen sampeyan pindhah menyang bagean kerentanan lan nggedhekake CVE, sampeyan bisa maca katrangan babagan kerentanan iki, rekomendasi kanggo ngilangi, uga alesan kenapa komponen iki dilanggar, yaiku, anane kelas. DiskFileitem.class.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Ayo ngringkes mung sing ana hubungane karo komponen Jawa pihak katelu, mbusak komponen js. Ing kurung kita nuduhake jumlah kerentanan sing ditemokake ing njaba NVD.

Total Nexus IQ:

  • Ketergantungan sing dipindai: 62
  • Ketergantungan sing rawan: 16
  • Kerentanan Ditemokake: 42 (8 sonatype db)

Priksa Ketergantungan Total:

  • Ketergantungan sing dipindai: 47
  • Ketergantungan sing rawan: 13
  • Kerentanan Ditemokake: 91 (14 sonatype oss)

Total Ketergantungan Track:

  • Ketergantungan sing dipindai: 59
  • Ketergantungan sing rawan: 10
  • Kerentanan Ditemokake: 51 (1 sonatype oss)

Ing langkah sabanjure, kita bakal nganalisa asil sing dipikolehi lan nemtokake manawa kerentanan kasebut minangka cacat nyata lan sing positif palsu.

Penafian

Tinjauan iki dudu bebener sing ora bisa dibantah. Penulis ora duwe tujuan kanggo nyorot instrumen sing kapisah karo latar mburi wong liya. Titik review kanggo nuduhake mekanisme operasi alat SCA lan cara kanggo mriksa asil.

Perbandingan asil

Ketentuan:

Positif palsu kanggo kerentanan komponen pihak katelu yaiku:

  • CVE ora cocog karo komponen sing diidentifikasi
  • Contone, yen kerentanan diidentifikasi ing kerangka struts2, lan alat kasebut nuduhake komponen kerangka struts-tiles, sing kerentanan iki ora ditrapake, mula iki minangka positif palsu.
  • CVE ora cocog karo versi komponen sing diidentifikasi
  • Contone, kerentanan disambungake menyang versi python> 3.5 lan alat kasebut menehi tandha versi 2.7 minangka rawan - iki positif palsu, amarga kasunyatane kerentanan kasebut mung ditrapake kanggo cabang produk 3.x.
  • Duplikat CVE
  • Contone, yen SCA nemtokake CVE sing mbisakake RCE, banjur SCA nemtokake CVE kanggo komponen padha sing ditrapake kanggo produk Cisco kena pengaruh RCE sing. Ing kasus iki bakal dadi positif palsu.
  • Contone, CVE ditemokaké ing komponèn spring-web, sawise kang SCA nuduhake CVE padha ing komponen liyane Spring Framework, nalika CVE wis boten apa karo komponen liyane. Ing kasus iki bakal dadi positif palsu.

Objek panliten yaiku proyek Open Source DVJA. Panliten kasebut mung melu komponen jawa (tanpa js).

Hasil ringkesan

Ayo langsung menyang asil review manual babagan kerentanan sing diidentifikasi. Laporan lengkap kanggo saben CVE bisa ditemokake ing Lampiran.

Ringkesan asil kanggo kabeh kerentanan:

Parameter
Nexus IQ
Priksa Ketergantungan
Track Ketergantungan

Total kerentanan diidentifikasi
42
91
51

Kerentanan sing ora dingerteni (positif palsu)
2 (4.76%)
62 (68,13%)
29 (56.86%)

Ora ana kerentanan sing relevan ditemokake (negatif palsu)
10
20
27

Ringkesan asil miturut komponen:

Parameter
Nexus IQ
Priksa Ketergantungan
Track Ketergantungan

Total komponen diidentifikasi
62
47
59

Total komponen ngrugekke
16
13
10

Komponen rentan sing salah diidentifikasi (positif palsu)
1
5
0

Komponen rentan sing salah diidentifikasi (positif palsu)
0
6
6

Ayo nggawe grafik visual kanggo ngevaluasi rasio positif palsu lan negatif palsu kanggo jumlah kerentanan. Komponen ditandhani kanthi horisontal, lan kerentanan sing diidentifikasi ditandhani vertikal.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Kanggo mbandhingake, panaliten sing padha ditindakake dening tim Sonatype nguji proyek komponen 1531 nggunakake OWASP Dependency Check. Kaya sing bisa dideleng, rasio gangguan kanggo tanggapan sing bener bisa dibandhingake karo asil kita.

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji
Source: www.sonatype.com/why-precision-matters-ebook

Ayo goleki sawetara CVE saka asil scan kita kanggo mangerteni alasan asil kasebut.

Waca liyane

No.1

Ayo goleki sawetara poin sing menarik babagan Sonatype Nexus IQ.

Nexus IQ nedahake masalah deserialization kanthi kemampuan kanggo nindakake RCE ing Spring Framework kaping pirang-pirang. CVE-2016-1000027 ing spring-web: 3.0.5 pisanan, lan CVE-2011-2894 ing spring-konteks: 3.0.5 lan spring-inti: 3.0.5. Kaping pisanan, katon ana duplikasi kerentanan ing pirang-pirang CVE. Amarga, yen sampeyan ndeleng CVE-2016-1000027 lan CVE-2011-2894 ing database NVD, kabeh katon jelas.

Komponen
Kerentanan

spring-web: 3.0.5
CVE-2016-1000027

spring-konteks: 3.0.5
CVE-2011-2894

spring-inti: 3.0.5
CVE-2011-2894

Description CVE-2011-2894 saka NVD:
DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Description CVE-2016-1000027 saka NVD:
DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

CVE-2011-2894 dhewe cukup misuwur. Ing laporan Sumber Putih 2011 CVE iki dikenali minangka salah siji sing paling umum. Katrangan kanggo CVE-2016-100027, ing asas, sawetara ing NVD, lan misale jek mung ditrapake kanggo Spring Framework 4.1.4. Ayo kang njupuk dipikir ing referensi lan ing kene kabeh dadi luwih utawa kurang cetha. saka Artikel sing bisa dipertahankan We ngerti sing saliyane kerentanan ing RemoteInvocationSerializingExporter ing CVE-2011-2894, kerentanan diamati ing HttpInvokerServiceExporter. Iki sing diarani Nexus IQ:

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Nanging, ora ana sing kaya iki ing NVD, mulane Priksa Ketergantungan lan Lacak Ketergantungan saben nampa negatif palsu.

Uga saka katrangan saka CVE-2011-2894 bisa dingerteni manawa kerentanan kasebut pancen ana ing konteks musim semi:3.0.5 lan inti musim semi:3.0.5. Konfirmasi iki bisa ditemokake ing artikel saka wong sing nemokake kerentanan iki.

No.2

Komponen
Kerentanan
asil

struts2-inti: 2.3.30
CVE-2016-4003
lupute

Yen kita nyinaoni kerentanan CVE-2016-4003, kita bakal ngerti manawa wis didandani ing versi 2.3.28, nanging Nexus IQ nglaporake marang kita. Ana cathetan ing katrangan babagan kerentanan:

DevSecOps: prinsip operasi lan perbandingan SCA. Bagean siji

Tegese, kerentanan kasebut mung ana bebarengan karo versi JRE sing wis lawas, sing padha mutusake kanggo ngelingake kita. Nanging, kita nganggep Positif Palsu iki, sanajan dudu sing paling ala.

Nomer 3

Komponen
Kerentanan
asil

xwork-inti: 2.3.30
CVE-2017-9804
TRUE

xwork-inti: 2.3.30
CVE-2017-7672
lupute

Yen kita ndeleng katrangan saka CVE-2017-9804 lan CVE-2017-7672, kita bakal ngerti manawa masalah kasebut URLValidator class, karo CVE-2017-9804 stemming saka CVE-2017-7672. Ing ngarsane kerentanan kapindho ora nggawa beban migunani liyane saka kasunyatan sing keruwetan wis tambah kanggo Dhuwur, supaya kita bisa nimbang iku swara rasah.

Sakabèhé, ora ana positip palsu liyane sing ditemokake kanggo Nexus IQ.

No.4

Ana sawetara perkara sing ndadekake IQ metu saka solusi liyane.

Komponen
Kerentanan
asil

spring-web: 3.0.5
CVE-2020-5398
TRUE

CVE ing NVD nyatakake yen mung ditrapake kanggo versi 5.2.x sadurunge 5.2.3, 5.1.x sadurunge 5.1.13, lan versi 5.0.x sadurunge 5.0.16, nanging yen kita ndeleng katrangan CVE ing Nexus IQ. , banjur kita bakal weruh ing ngisor iki:
Kabar Penyimpangan Advisory: Tim riset keamanan Sonatype nemokake manawa kerentanan iki dikenalake ing versi 3.0.2.RELEASE lan dudu 5.0.x kaya sing kasebut ing advisory.

Iki diikuti dening PoC kanggo kerentanan iki, sing nyatakake yen ana ing versi 3.0.5.

Negatif palsu dikirim menyang Priksa Ketergantungan lan Track Ketergantungan.

No.5

Ayo goleki positif palsu kanggo Dependency Check and Dependency Track.

Ketergantungan Priksa metu amarga nggambarake CVE sing ditrapake kanggo kabeh kerangka ing NVD kanggo komponen sing ora ditrapake CVE kasebut. Iki gegayutan karo CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, sing gumantung saka Ketergantungan "kanggo struts-taglib:1.3.8 lan struts-tiles-1.3.8. Komponen kasebut ora ana hubungane karo apa sing diterangake ing CVE - pangolahan panjaluk, validasi kaca, lan liya-liyane. Iki amarga kasunyatan sing CVEs lan komponen iki umume mung kerangka, mulane Dependency Check dianggep minangka kerentanan.

Kahanan sing padha karo spring-tx: 3.0.5, lan kahanan sing padha karo struts-inti: 1.3.8. Kanggo struts-core, Dependency Check and Dependency Track wis nemokake akeh kerentanan sing bener ditrapake kanggo struts2-core, sing sejatine minangka kerangka kerja sing kapisah. Ing kasus iki, Nexus IQ bener mangertos gambar lan ing CVEs ditanggepi, nuduhake yen struts-inti wis tekan pungkasan urip lan iku perlu kanggo pindhah menyang struts2-inti.

No.6

Ing sawetara kahanan, ora adil kanggo napsirake kesalahan Priksa Ketergantungan lan Ketergantungan Track sing jelas. Khususé CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, sing Priksa Ketergantungan Track lan Ketergantungan lantaran kanggo spring-inti: 3.0.5 bener belongs kanggo spring-web: 3.0.5. Ing wektu sing padha, sawetara CVE iki uga ditemokake dening Nexus IQ, nanging, IQ kanthi bener ngenali komponen kasebut menyang komponen liyane. Amarga kerentanan iki ora ditemokake ing spring-inti, ora bisa dibantah yen dheweke ora ana ing kerangka prinsip lan alat sumber terbuka kanthi bener nuduhake kerentanan kasebut (padha mung ora kejawab).

temonan

Minangka kita bisa ndeleng, nemtokake linuwih saka vulnerabilities dikenali dening review manual ora menehi asil unambiguous, pramila masalah kontroversial muncul. Asil kasebut yaiku solusi Nexus IQ nduweni tingkat positif palsu sing paling murah lan akurasi paling dhuwur.

Kaping pisanan, iki amarga kasunyatan manawa tim Sonatype nggedhekake katrangan kanggo saben kerentanan CVE saka NVD ing basis data, nuduhake kerentanan kanggo versi komponen tartamtu menyang kelas utawa fungsi, nindakake riset tambahan (contone , mriksa kerentanan ing versi piranti lunak lawas).

Pengaruh penting ing asil uga dimainake dening kerentanan sing ora kalebu ing NVD, nanging ana ing database Sonatype kanthi tandha SONATYPE. Miturut laporan Negara Kerentanan Keamanan Open Source 2020 45% kerentanan open source sing ditemokake ora dilaporake menyang NVD. Miturut basis data WhiteSource, mung 29% saka kabeh kerentanan sumber terbuka sing dilaporake ing njaba NVD pungkasane diterbitake ing kana, mula penting kanggo golek kerentanan ing sumber liyane uga.

Akibaté, Dependency Check ngasilake akeh gangguan, ilang sawetara komponen sing rawan. Ketergantungan Track mrodhuksi kurang gangguan lan ndeteksi nomer akeh komponen, kang ora visual babras mripat ing antarmuka web.

Nanging, praktik nuduhake manawa sumber terbuka kudu dadi langkah pertama kanggo DevSecOps sing diwasa. Babagan pisanan sing kudu dipikirake nalika nggabungake SCA menyang pangembangan yaiku proses, yaiku, mikir bareng karo manajemen lan departemen sing gegandhengan babagan proses sing cocog ing organisasi sampeyan. Bisa uga kanggo organisasi sampeyan, ing wiwitan, Dependency Check utawa Dependency Track bakal nutupi kabeh kabutuhan bisnis, lan solusi Enterprise bakal dadi kelanjutan logis amarga kerumitan aplikasi sing dikembangake.

Lampiran A: Asil Komponen
Katrangan:

  • Kerentanan tingkat dhuwur-dhuwur lan kritis ing komponen kasebut
  • Sedheng - Kerentanan tingkat kritisitas medium ing komponen kasebut
  • TRUE - Jeksa Agung bisa ngetokake positif
  • FALSE - Masalah positif palsu

Komponen
Nexus IQ
Priksa Ketergantungan
Track Ketergantungan
asil

dom4j: 1.6.1
High
High
High
TRUE

log4j-inti: 2.3
High
High
High
TRUE

log4j: 1.2.14
High
High
-
TRUE

commons-koleksi:3.1
High
High
High
TRUE

commons-fileupload: 1.3.2
High
High
High
TRUE

commons-beanutils: 1.7.0
High
High
High
TRUE

commons-codec: 1:10
Sedheng
-
-
TRUE

mysql-konektor-java: 5.1.42
High
High
High
TRUE

spring-expression: 3.0.5
High
komponen ora ketemu

TRUE

spring-web: 3.0.5
High
komponen ora ketemu
High
TRUE

spring-konteks: 3.0.5
Sedheng
komponen ora ketemu
-
TRUE

spring-inti: 3.0.5
Sedheng
High
High
TRUE

struts2-config-browser-plugin:2.3.30
Sedheng
-
-
TRUE

spring-tx: 3.0.5
-
High
-
lupute

struts-inti: 1.3.8
High
High
High
TRUE

xwork-inti: 2.3.30
High
-
-
TRUE

struts2-inti: 2.3.30
High
High
High
TRUE

struts-taglib: 1.3.8
-
High
-
lupute

struts-kothak-1.3.8
-
High
-
lupute

Lampiran B: Asil Kerentanan
Katrangan:

  • Kerentanan tingkat dhuwur-dhuwur lan kritis ing komponen kasebut
  • Sedheng - Kerentanan tingkat kritisitas medium ing komponen kasebut
  • TRUE - Jeksa Agung bisa ngetokake positif
  • FALSE - Masalah positif palsu

Komponen
Nexus IQ
Priksa Ketergantungan
Track Ketergantungan
Severity
asil
komentar

dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
High
TRUE

CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
High
TRUE

log4j-inti: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
High
TRUE

CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
kurang
TRUE

log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
High
TRUE

-
CVE-2020-9488
-
kurang
TRUE

SONATYPE-2010-0053
-
-
High
TRUE

commons-koleksi:3.1
-
CVE-2015-6420
CVE-2015-6420
High
lupute
Duplikat RCE (OSSINDEX)

-
CVE-2017-15708
CVE-2017-15708
High
lupute
Duplikat RCE (OSSINDEX)

SONATYPE-2015-0002
RCE (OSSINDEX)
RCE (OSSINDEX)
High
TRUE

commons-fileupload: 1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
High
TRUE

SONATYPE-2014-0173
-
-
Sedheng
TRUE

commons-beanutils: 1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
High
TRUE

-
CVE-2019-10086
CVE-2019-10086
High
lupute
Kerentanan mung ditrapake kanggo versi 1.9.2+

commons-codec: 1:10
SONATYPE-2012-0050
-
-
Sedheng
TRUE

mysql-konektor-java: 5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
High
TRUE

CVE-2019-2692
CVE-2019-2692
-
Sedheng
TRUE

-
CVE-2020-2875
-
Sedheng
lupute
Kerentanan sing padha karo CVE-2019-2692, nanging kanthi cathetan "serangan bisa nyebabake produk tambahan"

-
CVE-2017-15945
-
High
lupute
Ora cocog karo mysql-konektor-java

-
CVE-2020-2933
-
kurang
lupute
Duplikat CVE-2020-2934

CVE-2020-2934
CVE-2020-2934
-
Sedheng
TRUE

spring-expression: 3.0.5
CVE-2018-1270
komponen ora ketemu
-
High
TRUE

CVE-2018-1257
-
-
Sedheng
TRUE

spring-web: 3.0.5
CVE-2016-1000027
komponen ora ketemu
-
High
TRUE

CVE-2014-0225
-
CVE-2014-0225
High
TRUE

CVE-2011-2730
-
-
High
TRUE

-
-
CVE-2013-4152
Sedheng
TRUE

CVE-2018-1272
-
-
High
TRUE

CVE-2020-5398
-
-
High
TRUE
Conto ilustrasi kanggo IQ: "Tim riset keamanan Sonatype nemokake manawa kerentanan iki dikenalake ing versi 3.0.2.RELEASE lan dudu 5.0.x kaya sing kasebut ing pitutur."

CVE-2013-6429
-
-
Sedheng
TRUE

CVE-2014-0054
-
CVE-2014-0054
Sedheng
TRUE

CVE-2013-6430
-
-
Sedheng
TRUE

spring-konteks: 3.0.5
CVE-2011-2894
komponen ora ketemu
-
Sedheng
TRUE

spring-inti: 3.0.5
-
CVE-2011-2730
CVE-2011-2730
High
TRUE

CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Sedheng
TRUE

-
-
CVE-2013-4152
Sedheng
lupute
Duplikat kerentanan sing padha ing spring-web

-
CVE-2013-4152
-
Sedheng
lupute
Kerentanan kasebut ana gandhengane karo komponen spring-web

-
CVE-2013-6429
CVE-2013-6429
Sedheng
lupute
Kerentanan kasebut ana gandhengane karo komponen spring-web

-
CVE-2013-6430
-
Sedheng
lupute
Kerentanan kasebut ana gandhengane karo komponen spring-web

-
CVE-2013-7315
CVE-2013-7315
Sedheng
lupute
SPLIT saka CVE-2013-4152. + Kerentanan ana gandhengane karo komponen spring-web

-
CVE-2014-0054
CVE-2014-0054
Sedheng
lupute
Kerentanan kasebut ana gandhengane karo komponen spring-web

-
CVE-2014-0225
-
High
lupute
Kerentanan kasebut ana gandhengane karo komponen spring-web

-
-
CVE-2014-0225
High
lupute
Duplikat kerentanan sing padha ing spring-web

-
CVE-2014-1904
CVE-2014-1904
Sedheng
lupute
Kerentanan kasebut ana gandhengane karo komponen spring-web-mvc

-
CVE-2014-3625
CVE-2014-3625
Sedheng
lupute
Kerentanan kasebut ana gandhengane karo komponen spring-web-mvc

-
CVE-2016-9878
CVE-2016-9878
High
lupute
Kerentanan kasebut ana gandhengane karo komponen spring-web-mvc

-
CVE-2018-1270
CVE-2018-1270
High
lupute
Kanggo spring-ekspresi / spring-pesen

-
CVE-2018-1271
CVE-2018-1271
Sedheng
lupute
Kerentanan kasebut ana gandhengane karo komponen spring-web-mvc

-
CVE-2018-1272
CVE-2018-1272
High
TRUE

CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
Sedheng
TRUE

SONATYPE-2015-0327
-
-
kurang
TRUE

struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
Sedheng
TRUE

spring-tx: 3.0.5
-
CVE-2011-2730
-
High
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2011-2894
-
High
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2013-4152
-
Sedheng
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2013-6429
-
Sedheng
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2013-6430
-
Sedheng
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2013-7315
-
Sedheng
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2014-0054
-
Sedheng
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2014-0225
-
High
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2014-1904
-
Sedheng
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2014-3625
-
Sedheng
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2016-9878
-
High
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2018-1270
-
High
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2018-1271
-
Sedheng
lupute
Kerentanan ora spesifik kanggo spring-tx

-
CVE-2018-1272
-
Sedheng
lupute
Kerentanan ora spesifik kanggo spring-tx

struts-inti: 1.3.8
-
CVE-2011-5057 (OSSINDEX)

Sedheng
FASLE
Kerentanan kanggo Struts 2

-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
High
lupute
Kerentanan kanggo Struts 2

-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
Sedheng
lupute
Kerentanan kanggo Struts 2

-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
High
lupute
Kerentanan kanggo Struts 2

CVE-2016-1182
3VE-2016-1182
-
High
TRUE

-
-
CVE-2011-5057
Sedheng
lupute
Kerentanan kanggo Struts 2

-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
High
lupute
Kerentanan kanggo Struts 2

-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
Sedheng
lupute
Kerentanan kanggo Struts 2

CVE-2015-0899
CVE-2015-0899
-
High
TRUE

-
CVE-2012-0394
CVE-2012-0394
Sedheng
lupute
Kerentanan kanggo Struts 2

-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
High
lupute
Kerentanan kanggo Struts 2

-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
High
lupute
Kerentanan kanggo Struts 2

-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
High
FASLE
Kerentanan kanggo Struts 2

-
CVE-2013-2115
CVE-2013-2115
High
FASLE
Kerentanan kanggo Struts 2

-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
High
FASLE
Kerentanan kanggo Struts 2

-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
High
FASLE
Kerentanan kanggo Struts 2

CVE-2014-0114
CVE-2014-0114
-
High
TRUE

-
CVE-2015-2992
CVE-2015-2992
Sedheng
lupute
Kerentanan kanggo Struts 2

-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
High
lupute
Kerentanan kanggo Struts 2

CVE-2016-1181
CVE-2016-1181
-
High
TRUE

-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
High
lupute
Kerentanan kanggo Struts 2

xwork-inti: 2.3.30
CVE-2017-9804
-
-
High
TRUE

SONATYPE-2017-0173
-
-
High
TRUE

CVE-2017-7672
-
-
High
lupute
Duplikat saka CVE-2017-9804

SONATYPE-2016-0127
-
-
High
TRUE

struts2-inti: 2.3.30
-
CVE-2016-6795
CVE-2016-6795
High
TRUE

-
CVE-2017-9787
CVE-2017-9787
High
TRUE

-
CVE-2017-9791
CVE-2017-9791
High
TRUE

-
CVE-2017-9793
-
High
lupute
Duplikat CVE-2018-1327

-
CVE-2017-9804
-
High
TRUE

-
CVE-2017-9805
CVE-2017-9805
High
TRUE

CVE-2016-4003
-
-
Sedheng
lupute
Ditrapake kanggo Apache Struts 2.x nganti 2.3.28, yaiku versi 2.3.30. Nanging, adhedhasar katrangan, CVE sah kanggo versi Struts 2 yen JRE 1.7 utawa kurang digunakake. Ketoke padha mutusaké kanggo reinsure kita kene, nanging katon luwih PALSU

-
CVE-2018-1327
CVE-2018-1327
High
TRUE

CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
High
TRUE
Kerentanan sing padha sing dieksploitasi peretas Equifax ing 2017

CVE-2017-12611
CVE-2017-12611
-
High
TRUE

CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
High
TRUE

struts-taglib: 1.3.8
-
CVE-2012-0394
-
Sedheng
lupute
Kanggo struts2-inti

-
CVE-2013-2115
-
High
lupute
Kanggo struts2-inti

-
CVE-2014-0114
-
High
lupute
Kanggo commons-beanutils

-
CVE-2015-0899
-
High
lupute
Ora ditrapake kanggo taglib

-
CVE-2015-2992
-
Sedheng
lupute
Nuduhake struts2-inti

-
CVE-2016-1181
-
High
lupute
Ora ditrapake kanggo taglib

-
CVE-2016-1182
-
High
lupute
Ora ditrapake kanggo taglib

struts-kothak-1.3.8
-
CVE-2012-0394
-
Sedheng
lupute
Kanggo struts2-inti

-
CVE-2013-2115
-
High
lupute
Kanggo struts2-inti

-
CVE-2014-0114
-
High
lupute
Ing commons-beanutils

-
CVE-2015-0899
-
High
lupute
Ora ditrapake kanggo kothak

-
CVE-2015-2992
-
Sedheng
lupute
Kanggo struts2-inti

-
CVE-2016-1181
-
High
lupute
Ora ditrapake kanggo taglib

-
CVE-2016-1182
-
High
lupute
Ora ditrapake kanggo taglib

Source: www.habr.com

Add a comment