Pentingnya analisis komponen perangkat lunak pihak ketiga (Software Composition Analysis - SCA) dalam proses pengembangan semakin berkembang dengan dirilisnya laporan tahunan tentang kerentanan perpustakaan sumber terbuka, yang diterbitkan oleh Synopsys, Sonatype, Snyk, dan White Source . Menurut laporan itu
Salah satu kasus yang paling ilustratif
Artikel ini akan membahas masalah pemilihan alat untuk melakukan SCA dilihat dari kualitas hasil analisis. Perbandingan fungsional alat juga akan diberikan. Proses integrasi ke dalam CI/CD dan kemampuan integrasi akan diserahkan pada publikasi berikutnya. Berbagai macam alat disajikan oleh OWASP
Prinsip operasi
Mari kita lihat seperti apa CPE itu:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- Bagian: Indikasi bahwa komponen berhubungan dengan aplikasi (a), sistem operasi (o), perangkat keras (h) (Wajib)
- Vendor: Nama Produsen Produk (Wajib)
- Produk: Nama Produk (Wajib)
- Versi: Versi komponen (Item usang)
- Update: Pembaruan paket
- Edisi: Versi lama (Item tidak digunakan lagi)
- Bahasa: Bahasa didefinisikan dalam RFC-5646
- Edisi SW: Versi perangkat lunak
- Sasaran SW: Lingkungan perangkat lunak tempat produk beroperasi
- Sasaran HW: Lingkungan perangkat keras tempat produk beroperasi
- Lain: Informasi Pemasok atau Produk
Contoh CPE terlihat seperti ini:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Garis tersebut berarti CPE versi 2.3 menjelaskan komponen aplikasi dari pabrikan pivotal_software
dengan namanya spring_framework
versi 3.0.0. Jika kita membuka kerentanan
URL juga digunakan oleh alat SCA. Format URL paketnya adalah sebagai berikut:
scheme:type/namespace/name@version?qualifiers#subpath
- Skema: Akan selalu ada 'pkg' yang menunjukkan bahwa ini adalah URL paket (Wajib)
- Tipe: "Jenis" paket atau "protokol" paket, seperti maven, npm, nuget, gem, pypi, dll. (Barang yang diperlukan)
- Ruang nama: Beberapa awalan nama, seperti ID grup Maven, pemilik image Docker, pengguna GitHub, atau organisasi. Opsional dan tergantung jenisnya.
- Nama: Nama paket (Wajib)
- Versi: Versi paket
- Kualifikasi: Data kualifikasi tambahan untuk paket, seperti OS, arsitektur, distribusi, dll. Opsional dan spesifik tipe.
- Subjalur: Jalur tambahan dalam paket yang berhubungan dengan root paket
Sebagai contoh:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
Contoh tampilan BOM dalam 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 dapat digunakan tidak hanya sebagai parameter input untuk Dependency Track, namun juga untuk menginventarisasi komponen perangkat lunak dalam rantai pasokan, misalnya, untuk menyediakan perangkat lunak kepada pelanggan. Pada tahun 2014, sebuah undang-undang bahkan diusulkan di Amerika Serikat
Kembali ke SCA, Dependency Track memiliki integrasi siap pakai dengan Platform Notifikasi seperti Slack, sistem manajemen kerentanan seperti Kenna Security. Perlu juga dikatakan bahwa Dependency Track, antara lain, mengidentifikasi versi paket yang sudah ketinggalan zaman dan memberikan informasi tentang lisensi (karena dukungan SPDX).
Jika kita berbicara secara khusus tentang kualitas SCA, maka ada perbedaan mendasar.
Dependency Track tidak menerima proyek sebagai masukan, melainkan BOM. Artinya jika kita ingin menguji proyek tersebut, kita perlu membuat bom.xml terlebih dahulu, misalnya menggunakan CycloneDX. Jadi, Dependency Track bergantung langsung pada CycloneDX. Pada saat yang sama, ini memungkinkan penyesuaian. Inilah yang ditulis oleh tim OZON
Mari kita rangkum beberapa fitur fungsional, dan pertimbangkan juga bahasa yang didukung untuk analisis:
Bahasa
Nexus IQ
Pemeriksaan Ketergantungan
Jalur Ketergantungan
Jawa
+
+
+
C / C ++
+
+
-
C#
+
+
-
.Bersih
+
+
+
erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Ular sanca
+
+
+
Rubi
+
+
+
Perl
-
-
-
Scala
+
+
+
Tujuan C
+
+
-
cepat
+
+
-
R
+
-
-
Go
+
+
+
Fungsionalitas
Fungsionalitas
Nexus IQ
Pemeriksaan Ketergantungan
Jalur Ketergantungan
Kemampuan untuk memastikan bahwa komponen yang digunakan dalam kode sumber diperiksa kemurnian lisensinya
+
-
+
Kemampuan untuk memindai dan menganalisis kerentanan dan kebersihan lisensi untuk image Docker
+ Integrasi dengan Clair
-
-
Kemampuan untuk mengonfigurasi kebijakan keamanan untuk menggunakan perpustakaan sumber terbuka
+
-
-
Kemampuan untuk memindai repositori sumber terbuka untuk mencari komponen yang rentan
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Ketersediaan kelompok penelitian khusus
+
-
-
Operasi loop tertutup
+
+
+
Menggunakan database pihak ketiga
+ Basis data Sonatype tertutup
+ Sonatype OSS, Penasihat Publik NPM
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, dukungan untuk database kerentanannya sendiri
Kemampuan untuk memfilter komponen sumber terbuka ketika mencoba memuat ke dalam loop pengembangan sesuai dengan kebijakan yang dikonfigurasi
+
-
-
Rekomendasi untuk memperbaiki kerentanan, ketersediaan tautan untuk perbaikan
+
+- (tergantung deskripsi di database publik)
+- (tergantung deskripsi di database publik)
Pemeringkatan kerentanan yang terdeteksi berdasarkan tingkat keparahannya
+
+
+
Model akses berbasis peran
+
-
+
dukungan CLI
+
+
+- (hanya untuk CycloneDX)
Pengambilan sampel/penyortiran kerentanan menurut kriteria yang ditentukan
+
-
+
Dasbor berdasarkan status aplikasi
+
-
+
Menghasilkan laporan dalam format PDF
+
-
-
Menghasilkan laporan dalam format JSONCSV
+
+
-
Dukungan bahasa Rusia
-
-
-
Kemampuan integrasi
Integrasi
Nexus IQ
Pemeriksaan Ketergantungan
Jalur Ketergantungan
Integrasi LDAP/Direktori Aktif
+
-
+
Integrasi dengan sistem integrasi berkelanjutan Bamboo
+
-
-
Integrasi dengan sistem integrasi berkelanjutan TeamCity
+
-
-
Integrasi dengan sistem integrasi berkelanjutan GitLab
+
+- (sebagai plugin untuk GitLab)
+
Integrasi dengan sistem integrasi berkelanjutan Jenkins
+
+
+
Ketersediaan plugin untuk IDE
+ IntelliJ, Gerhana, Visual Studio
-
-
Dukungan untuk integrasi khusus melalui layanan web (API) alat tersebut
+
-
+
Pemeriksaan Ketergantungan
Pertama mulai
Mari kita jalankan Pemeriksaan Ketergantungan pada aplikasi yang sengaja dibuat rentan
Untuk ini kami akan menggunakan
mvn org.owasp:dependency-check-maven:check
Hasilnya, dependency-check-report.html akan muncul di direktori target.
Mari kita buka filenya. Setelah merangkum informasi tentang jumlah total kerentanan, kita dapat melihat informasi tentang kerentanan dengan tingkat Severity dan Confidence yang tinggi, yang menunjukkan paket, CPE, dan jumlah CVE.
Berikutnya adalah informasi yang lebih rinci, khususnya dasar pengambilan keputusan (bukti), yaitu BOM tertentu.
Berikutnya adalah deskripsi CPE, PURL dan CVE. Omong-omong, rekomendasi untuk koreksi tidak disertakan karena tidak ada dalam database NVD.
Untuk melihat hasil pemindaian secara sistematis, Anda dapat mengonfigurasi Nginx dengan pengaturan minimal, atau mengirimkan cacat yang dihasilkan ke sistem manajemen cacat yang mendukung konektor ke Pemeriksaan Ketergantungan. Misalnya, Dojo Cacat.
Jalur Ketergantungan
Instalasi
Dependency Track, pada gilirannya, adalah platform berbasis web dengan grafik tampilan, sehingga masalah mendesak dalam menyimpan cacat pada solusi pihak ketiga tidak muncul di sini.
Skrip yang didukung untuk instalasi adalah: Docker, WAR, Executable WAR.
Pertama mulai
Kami pergi ke URL layanan yang sedang berjalan. Kita login melalui admin/admin, ganti login dan password, lalu masuk ke Dashboard. Hal selanjutnya yang akan kita lakukan adalah membuat proyek untuk aplikasi pengujian di Java Beranda/Proyek → Buat Proyek . Mari kita ambil DVDJA sebagai contoh.
Karena Dependency Track hanya dapat menerima BOM sebagai input, BOM ini harus diambil. Mari manfaatkan
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Kami mendapatkan bom.xml dan memuat file di proyek yang dibuat DVJA → Ketergantungan → Unggah BOM.
Mari kita pergi ke Administrasi → Analisa. Kami memahami bahwa kami hanya mengaktifkan Penganalisis Internal, yang mencakup NVD. Mari kita hubungkan juga Sonatype OSS Index.
Jadi, kami mendapatkan gambar berikut untuk proyek kami:
Juga dalam daftar Anda dapat menemukan satu kerentanan yang berlaku untuk Sonatype OSS:
Kekecewaan utama adalah Dependency Track tidak lagi menerima laporan Dependency Check xml. Versi terbaru integrasi Pemeriksaan Ketergantungan yang didukung adalah 1.0.0 - 4.0.2, sementara saya menguji 5.3.2.
di sini adalah
Nexus IQ
Pertama mulai
Pemasangan Nexus IQ berasal dari arsip
Setelah masuk ke konsol, Anda perlu membuat Organisasi dan Aplikasi.
Seperti yang Anda lihat, pengaturan dalam kasus IQ agak lebih rumit, karena kita juga perlu membuat kebijakan yang dapat diterapkan untuk “tahapan” yang berbeda (pengembangan, pembangunan, tahapan, rilis). Hal ini diperlukan untuk memblokir komponen yang rentan saat komponen tersebut bergerak melalui pipeline mendekati produksi, atau untuk memblokir komponen tersebut segera setelah komponen tersebut masuk ke Nexus Repo saat diunduh oleh pengembang.
Untuk merasakan perbedaan antara open source dan enterprise, mari lakukan pemindaian yang sama melalui Nexus IQ dengan cara yang sama 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>
Ikuti URL ke laporan yang dihasilkan di antarmuka web IQ:
Di sini Anda dapat melihat semua pelanggaran kebijakan yang menunjukkan tingkat signifikansi berbeda (dari Info hingga Kritis Keamanan). Huruf D di sebelah komponen berarti komponen tersebut Ketergantungan Langsung, dan huruf T di sebelah komponen berarti komponen tersebut Ketergantungan Transitif, yaitu bersifat transitif.
Ngomong-ngomong, laporannya
Jika kita membuka salah satu pelanggaran kebijakan Nexus IQ, kita dapat melihat deskripsi komponen, serta Grafik Versi, yang menunjukkan lokasi versi saat ini dalam grafik waktu, serta pada titik mana kerentanan berhenti terjadi. menjadi rentan. Ketinggian candle pada grafik menunjukkan popularitas penggunaan komponen ini.
Jika Anda masuk ke bagian kerentanan dan memperluas CVE, Anda dapat membaca deskripsi kerentanan ini, rekomendasi penghapusan, serta alasan mengapa komponen ini dilanggar, yaitu kehadiran kelas DiskFileitem.class
.
Mari kita rangkum hanya yang terkait dengan komponen Java pihak ketiga, dengan menghapus komponen js. Dalam tanda kurung kami menunjukkan jumlah kerentanan yang ditemukan di luar NVD.
Jumlah IQ Nexus:
- Dependensi yang Dipindai: 62
- Ketergantungan Rentan: 16
- Kerentanan Ditemukan: 42 (8 sonatype db)
Pemeriksaan Ketergantungan Total:
- Dependensi yang Dipindai: 47
- Ketergantungan Rentan: 13
- Kerentanan Ditemukan: 91 (14 sonatype oss)
Jalur Ketergantungan Total:
- Ketergantungan yang Dipindai: 59
- Ketergantungan Rentan: 10
- Kerentanan Ditemukan: 51 (1 sonatype oss)
Pada langkah selanjutnya, kami akan menganalisis hasil yang diperoleh dan mencari tahu kerentanan mana yang merupakan cacat nyata dan mana yang merupakan positif palsu.
еймер
Ulasan ini bukanlah kebenaran yang tak terbantahkan. Penulis tidak memiliki tujuan untuk membedakan satu instrumen dengan latar belakang instrumen lainnya. Tujuan dari tinjauan ini adalah untuk menunjukkan mekanisme pengoperasian alat SCA dan cara untuk memeriksa hasilnya.
Perbandingan hasil
Syarat dan kondisi:
Positif palsu untuk kerentanan komponen pihak ketiga adalah:
- Ketidakcocokan CVE dengan komponen yang teridentifikasi
- Misalnya, jika kerentanan teridentifikasi dalam kerangka struts2, dan alat tersebut menunjuk ke komponen kerangka struts-tiles, dimana kerentanan ini tidak berlaku, maka ini adalah positif palsu.
- CVE tidak cocok dengan versi komponen yang teridentifikasi
- Misalnya, kerentanan terkait dengan versi python> 3.5 dan alat menandai versi 2.7 sebagai rentan - ini adalah positif palsu, karena sebenarnya kerentanan hanya berlaku untuk cabang produk 3.x
- Duplikat CVE
- Misalnya, jika SCA menentukan CVE yang mengaktifkan RCE, maka SCA menentukan CVE untuk komponen yang sama yang berlaku untuk produk Cisco yang terpengaruh oleh RCE tersebut. Dalam hal ini akan menjadi positif palsu.
- Misalnya, CVE ditemukan di komponen spring-web, setelah itu SCA menunjuk ke CVE yang sama di komponen lain dari Spring Framework, sedangkan CVE tidak ada hubungannya dengan komponen lainnya. Dalam hal ini akan menjadi positif palsu.
Objek penelitian adalah proyek Open Source DVDJA. Penelitian ini hanya melibatkan komponen Java (tanpa js).
Hasil ringkasan
Mari langsung ke hasil tinjauan manual terhadap kerentanan yang teridentifikasi. Laporan lengkap untuk masing-masing CVE dapat dilihat pada Lampiran.
Hasil ringkasan untuk semua kerentanan:
Parameter
Nexus IQ
Pemeriksaan Ketergantungan
Jalur Ketergantungan
Total kerentanan teridentifikasi
42
91
51
Kerentanan yang salah diidentifikasi (positif palsu)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Tidak ditemukan kerentanan relevan (negatif palsu)
10
20
27
Ringkasan hasil berdasarkan komponen:
Parameter
Nexus IQ
Pemeriksaan Ketergantungan
Jalur Ketergantungan
Total komponen teridentifikasi
62
47
59
Total komponen rentan
16
13
10
Komponen rentan yang salah diidentifikasi (positif palsu)
1
5
0
Komponen rentan yang salah diidentifikasi (positif palsu)
0
6
6
Mari buat grafik visual untuk mengevaluasi rasio positif palsu dan negatif palsu terhadap jumlah total kerentanan. Komponen ditandai secara horizontal, dan kerentanan yang teridentifikasi di dalamnya ditandai secara vertikal.
Sebagai perbandingan, penelitian serupa dilakukan oleh tim Sonatype yang menguji proyek 1531 komponen menggunakan OWASP Dependency Check. Seperti yang bisa kita lihat, rasio kebisingan terhadap respons yang benar sebanding dengan hasil kami.
Sumber:
Mari kita lihat beberapa CVE dari hasil pemindaian kami untuk memahami alasan hasil ini.
lebih
№ 1
Mari kita lihat dulu beberapa poin menarik tentang Sonatype Nexus IQ.
Nexus IQ menunjukkan masalah deserialisasi dengan kemampuan melakukan RCE di Spring Framework beberapa kali. CVE-2016-1000027 di spring-web:3.0.5 pertama kali, dan CVE-2011-2894 dalam spring-context:3.0.5 dan spring-core:3.0.5. Pada awalnya, tampak adanya duplikasi kerentanan di beberapa CVE. Sebab, jika melihat CVE-2016-1000027 dan CVE-2011-2894 di database NVD, sepertinya semuanya sudah jelas
Komponen
Kerentanan
web pegas:3.0.5
CVE-2016-1000027
konteks pegas:3.0.5
CVE-2011-2894
inti pegas:3.0.5
CVE-2011-2894
Описание
Описание
CVE-2011-2894 sendiri cukup terkenal. Dalam laporan RemoteInvocationSerializingExporter
di CVE-2011-2894, kerentanan diamati di HttpInvokerServiceExporter
. Inilah yang disampaikan Nexus IQ kepada kita:
Namun, tidak ada yang seperti ini di NVD, itulah sebabnya Pemeriksaan Ketergantungan dan Jalur Ketergantungan masing-masing menerima negatif palsu.
Dari uraian CVE-2011-2894 juga dapat dipahami bahwa kerentanan memang ada pada spring-context:3.0.5 dan spring-core:3.0.5. Konfirmasi mengenai hal ini dapat ditemukan dalam artikel dari orang yang menemukan kerentanan ini.
№ 2
Komponen
Kerentanan
Hasil
struts2-inti:2.3.30
CVE-2016-4003
SALAH
Jika kami mempelajari kerentanan CVE-2016-4003, kami akan memahami bahwa kerentanan tersebut telah diperbaiki di versi 2.3.28, namun Nexus IQ melaporkannya kepada kami. Ada catatan dalam deskripsi kerentanan:
Artinya, kerentanan hanya ada jika dikaitkan dengan versi JRE yang sudah ketinggalan zaman, yang mereka putuskan untuk diperingatkan kepada kami. Namun demikian, kami menganggap ini Positif Palsu, meskipun bukan yang terburuk.
# 3
Komponen
Kerentanan
Hasil
xkerja-inti:2.3.30
CVE-2017-9804
BENAR
xkerja-inti:2.3.30
CVE-2017-7672
SALAH
Jika kita melihat deskripsi CVE-2017-9804 dan CVE-2017-7672, kita akan memahami bahwa masalahnya adalah URLValidator class
, dengan CVE-2017-9804 berasal dari CVE-2017-7672. Kehadiran kerentanan kedua tidak membawa beban yang berguna selain fakta bahwa tingkat keparahannya telah meningkat menjadi Tinggi, sehingga kita dapat menganggapnya sebagai kebisingan yang tidak perlu.
Secara keseluruhan, tidak ada hasil positif palsu lainnya yang ditemukan untuk Nexus IQ.
№ 4
Ada beberapa hal yang membuat IQ menonjol dari solusi lainnya.
Komponen
Kerentanan
Hasil
web pegas:3.0.5
CVE-2020-5398
BENAR
CVE di NVD menyatakan hanya berlaku untuk versi 5.2.x sebelum 5.2.3, 5.1.x sebelum 5.1.13, dan versi 5.0.x sebelum 5.0.16, namun jika kita melihat deskripsi CVE di Nexus IQ , maka kita akan melihat yang berikut:
Pemberitahuan Deviasi Penasihat: Tim peneliti keamanan Sonatype menemukan bahwa kerentanan ini diperkenalkan di versi 3.0.2.RELEASE dan bukan 5.0.x seperti yang dinyatakan dalam penasihat.
Ini diikuti oleh PoC untuk kerentanan ini, yang menyatakan bahwa kerentanan tersebut ada di versi 3.0.5.
Negatif palsu dikirim ke Pemeriksaan Ketergantungan dan Jalur Ketergantungan.
№ 5
Mari kita lihat positif palsu untuk Pemeriksaan Ketergantungan dan Jalur Ketergantungan.
Dependency Check menonjol karena mencerminkan CVE yang berlaku pada seluruh kerangka kerja di NVD hingga komponen yang tidak menerapkan CVE ini. Ini menyangkut CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182, yang Dependency Check-nya “kacau” ” ke struts-taglib:1.3.8 dan struts-tiles-1.3.8. Komponen-komponen ini tidak ada hubungannya dengan apa yang dijelaskan dalam CVE - pemrosesan permintaan, validasi halaman, dan sebagainya. Hal ini disebabkan oleh fakta bahwa kesamaan CVE dan komponen ini hanyalah kerangka kerja, itulah sebabnya Dependency Check menganggapnya sebagai kerentanan.
Situasi yang sama terjadi pada spring-tx:3.0.5, dan situasi serupa dengan struts-core:1.3.8. Untuk struts-core, Dependency Check dan Dependency Track telah menemukan banyak kerentanan yang sebenarnya dapat diterapkan pada struts2-core, yang pada dasarnya merupakan framework terpisah. Dalam hal ini, Nexus IQ dengan benar memahami gambaran tersebut dan dalam CVE yang dikeluarkannya, hal ini menunjukkan bahwa struts-core telah mencapai akhir masa pakainya dan perlu dipindahkan ke struts2-core.
№ 6
Dalam beberapa situasi, tidak adil untuk menafsirkan kesalahan Pemeriksaan Ketergantungan dan Jalur Ketergantungan yang jelas. Khususnya CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, yaitu Pemeriksaan Ketergantungan dan Jalur Ketergantungan dikaitkan dengan spring-core:3.0.5 sebenarnya milik spring-web:3.0.5. Pada saat yang sama, beberapa CVE ini juga ditemukan oleh Nexus IQ, namun IQ dengan tepat mengidentifikasinya ke komponen lain. Karena kerentanan ini tidak ditemukan di spring-core, tidak dapat dikatakan bahwa kerentanan tersebut pada prinsipnya tidak ada dalam kerangka kerja dan alat sumber terbuka dengan tepat menunjukkan kerentanan ini (hanya sedikit terlewatkan).
Temuan
Seperti yang bisa kita lihat, menentukan keandalan kerentanan yang teridentifikasi melalui tinjauan manual tidak memberikan hasil yang jelas, itulah sebabnya timbul isu kontroversial. Hasilnya adalah solusi Nexus IQ memiliki tingkat positif palsu terendah dan akurasi tertinggi.
Pertama-tama, hal ini disebabkan oleh fakta bahwa tim Sonatype memperluas deskripsi untuk setiap kerentanan CVE dari NVD dalam databasenya, menunjukkan kerentanan untuk versi komponen tertentu hingga ke kelas atau fungsinya, melakukan penelitian tambahan (misalnya , memeriksa kerentanan pada versi perangkat lunak yang lebih lama).
Pengaruh penting pada hasil juga dimainkan oleh kerentanan yang tidak termasuk dalam NVD, namun tetap ada dalam database Sonatype dengan tanda SONATYPE. Menurut laporan itu
Akibatnya, Pemeriksaan Ketergantungan menghasilkan banyak gangguan, kehilangan beberapa komponen yang rentan. Dependency Track menghasilkan lebih sedikit noise dan mendeteksi sejumlah besar komponen, sehingga tidak mengganggu tampilan antarmuka web secara visual.
Namun, praktik menunjukkan bahwa open source harus menjadi langkah pertama menuju DevSecOps yang matang. Hal pertama yang harus Anda pikirkan ketika mengintegrasikan SCA ke dalam pengembangan adalah proses, yaitu berpikir bersama dengan manajemen dan departemen terkait tentang seperti apa seharusnya proses ideal di organisasi Anda. Tampaknya untuk organisasi Anda, pada awalnya, Pemeriksaan Ketergantungan atau Pelacakan Ketergantungan akan mencakup semua kebutuhan bisnis, dan solusi Perusahaan akan menjadi kelanjutan logis karena semakin kompleksnya aplikasi yang sedang dikembangkan.
Lampiran A: Hasil Komponen
legenda:
- Tinggi—kerentanan tingkat tinggi dan kritis dalam komponen
- Sedang — Kerentanan dengan tingkat kekritisan sedang pada komponen
- BENAR — Isu yang benar-benar positif
- SALAH — Masalah positif palsu
Komponen
Nexus IQ
Pemeriksaan Ketergantungan
Jalur Ketergantungan
Hasil
dom4j: 1.6.1
High
High
High
BENAR
log4j-inti: 2.3
High
High
High
BENAR
log4j: 1.2.14
High
High
-
BENAR
koleksi bersama:3.1
High
High
High
BENAR
unggahan file umum:1.3.2
High
High
High
BENAR
commons-beanutils:1.7.0
High
High
High
BENAR
codec-commons: 1:10
Medium
-
-
BENAR
konektor-mysql-java:5.1.42
High
High
High
BENAR
ekspresi pegas:3.0.5
High
komponen tidak ditemukan
BENAR
web pegas:3.0.5
High
komponen tidak ditemukan
High
BENAR
konteks pegas:3.0.5
Medium
komponen tidak ditemukan
-
BENAR
inti pegas:3.0.5
Medium
High
High
BENAR
struts2-config-browser-plugin:2.3.30
Medium
-
-
BENAR
pegas-tx:3.0.5
-
High
-
SALAH
inti penyangga:1.3.8
High
High
High
BENAR
xwork-inti: 2.3.30
High
-
-
BENAR
struts2-inti: 2.3.30
High
High
High
BENAR
struts-taglib:1.3.8
-
High
-
SALAH
penyangga-ubin-1.3.8
-
High
-
SALAH
Lampiran B: Hasil Kerentanan
legenda:
- Tinggi—kerentanan tingkat tinggi dan kritis dalam komponen
- Sedang — Kerentanan dengan tingkat kekritisan sedang pada komponen
- BENAR — Isu yang benar-benar positif
- SALAH — Masalah positif palsu
Komponen
Nexus IQ
Pemeriksaan Ketergantungan
Jalur Ketergantungan
Kerasnya
Hasil
Komentar
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
High
BENAR
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
High
BENAR
log4j-inti: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
High
BENAR
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
Rendah
BENAR
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
High
BENAR
-
CVE-2020-9488
-
Rendah
BENAR
SONATYPE-2010-0053
-
-
High
BENAR
koleksi bersama:3.1
-
CVE-2015-6420
CVE-2015-6420
High
SALAH
Duplikat RCE (OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
High
SALAH
Duplikat RCE (OSSINDEX)
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
High
BENAR
unggahan file umum:1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
High
BENAR
SONATYPE-2014-0173
-
-
Medium
BENAR
commons-beanutils:1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
High
BENAR
-
CVE-2019-10086
CVE-2019-10086
High
SALAH
Kerentanan hanya berlaku untuk versi 1.9.2+
codec-commons: 1:10
SONATYPE-2012-0050
-
-
Medium
BENAR
konektor-mysql-java:5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
High
BENAR
CVE-2019-2692
CVE-2019-2692
-
Medium
BENAR
-
CVE-2020-2875
-
Medium
SALAH
Kerentanan yang sama seperti CVE-2019-2692, namun dengan catatan “serangan dapat berdampak signifikan pada produk tambahan”
-
CVE-2017-15945
-
High
SALAH
Tidak relevan dengan mysql-connector-java
-
CVE-2020-2933
-
Rendah
SALAH
Duplikat CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
Medium
BENAR
ekspresi pegas:3.0.5
CVE-2018-1270
komponen tidak ditemukan
-
High
BENAR
CVE-2018-1257
-
-
Medium
BENAR
web pegas:3.0.5
CVE-2016-1000027
komponen tidak ditemukan
-
High
BENAR
CVE-2014-0225
-
CVE-2014-0225
High
BENAR
CVE-2011-2730
-
-
High
BENAR
-
-
CVE-2013-4152
Medium
BENAR
CVE-2018-1272
-
-
High
BENAR
CVE-2020-5398
-
-
High
BENAR
Contoh ilustratif yang mendukung IQ: “Tim peneliti keamanan Sonatype menemukan bahwa kerentanan ini diperkenalkan di versi 3.0.2.RELEASE dan bukan 5.0.x seperti yang dinyatakan dalam penasehat.”
CVE-2013-6429
-
-
Medium
BENAR
CVE-2014-0054
-
CVE-2014-0054
Medium
BENAR
CVE-2013-6430
-
-
Medium
BENAR
konteks pegas:3.0.5
CVE-2011-2894
komponen tidak ditemukan
-
Medium
BENAR
inti pegas:3.0.5
-
CVE-2011-2730
CVE-2011-2730
High
BENAR
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Medium
BENAR
-
-
CVE-2013-4152
Medium
SALAH
Duplikat kerentanan yang sama di spring-web
-
CVE-2013-4152
-
Medium
SALAH
Kerentanan berkaitan dengan komponen spring-web
-
CVE-2013-6429
CVE-2013-6429
Medium
SALAH
Kerentanan berkaitan dengan komponen spring-web
-
CVE-2013-6430
-
Medium
SALAH
Kerentanan berkaitan dengan komponen spring-web
-
CVE-2013-7315
CVE-2013-7315
Medium
SALAH
BERPISAH dari CVE-2013-4152. + Kerentanan berkaitan dengan komponen web pegas
-
CVE-2014-0054
CVE-2014-0054
Medium
SALAH
Kerentanan berkaitan dengan komponen spring-web
-
CVE-2014-0225
-
High
SALAH
Kerentanan berkaitan dengan komponen spring-web
-
-
CVE-2014-0225
High
SALAH
Duplikat kerentanan yang sama di spring-web
-
CVE-2014-1904
CVE-2014-1904
Medium
SALAH
Kerentanan berkaitan dengan komponen spring-web-mvc
-
CVE-2014-3625
CVE-2014-3625
Medium
SALAH
Kerentanan berkaitan dengan komponen spring-web-mvc
-
CVE-2016-9878
CVE-2016-9878
High
SALAH
Kerentanan berkaitan dengan komponen spring-web-mvc
-
CVE-2018-1270
CVE-2018-1270
High
SALAH
Untuk ekspresi musim semi/pesan musim semi
-
CVE-2018-1271
CVE-2018-1271
Medium
SALAH
Kerentanan berkaitan dengan komponen spring-web-mvc
-
CVE-2018-1272
CVE-2018-1272
High
BENAR
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
Medium
BENAR
SONATYPE-2015-0327
-
-
Rendah
BENAR
struts2-config-browser-plugin:2.3.30
SONATYPE-2016-0104
-
-
Medium
BENAR
pegas-tx:3.0.5
-
CVE-2011-2730
-
High
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2011-2894
-
High
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2013-4152
-
Medium
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2013-6429
-
Medium
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2013-6430
-
Medium
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2013-7315
-
Medium
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2014-0054
-
Medium
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2014-0225
-
High
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2014-1904
-
Medium
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2014-3625
-
Medium
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2016-9878
-
High
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2018-1270
-
High
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2018-1271
-
Medium
SALAH
Kerentanannya tidak spesifik untuk spring-tx
-
CVE-2018-1272
-
Medium
SALAH
Kerentanannya tidak spesifik untuk spring-tx
inti penyangga:1.3.8
-
CVE-2011-5057 (OSSINDEX)
Medium
GAGAL
Kerentanan terhadap Struts 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
High
SALAH
Kerentanan terhadap Struts 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
Medium
SALAH
Kerentanan terhadap Struts 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
High
SALAH
Kerentanan terhadap Struts 2
CVE-2016-1182
3VE-2016-1182
-
High
BENAR
-
-
CVE-2011-5057
Medium
SALAH
Kerentanan terhadap Struts 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
High
SALAH
Kerentanan terhadap Struts 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
Medium
SALAH
Kerentanan terhadap Struts 2
CVE-2015-0899
CVE-2015-0899
-
High
BENAR
-
CVE-2012-0394
CVE-2012-0394
Medium
SALAH
Kerentanan terhadap Struts 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
High
SALAH
Kerentanan terhadap Struts 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
High
SALAH
Kerentanan terhadap Struts 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
High
GAGAL
Kerentanan terhadap Struts 2
-
CVE-2013-2115
CVE-2013-2115
High
GAGAL
Kerentanan terhadap Struts 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
High
GAGAL
Kerentanan terhadap Struts 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
High
GAGAL
Kerentanan terhadap Struts 2
CVE-2014-0114
CVE-2014-0114
-
High
BENAR
-
CVE-2015-2992
CVE-2015-2992
Medium
SALAH
Kerentanan terhadap Struts 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
High
SALAH
Kerentanan terhadap Struts 2
CVE-2016-1181
CVE-2016-1181
-
High
BENAR
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
High
SALAH
Kerentanan terhadap Struts 2
xkerja-inti:2.3.30
CVE-2017-9804
-
-
High
BENAR
SONATYPE-2017-0173
-
-
High
BENAR
CVE-2017-7672
-
-
High
SALAH
Duplikat CVE-2017-9804
SONATYPE-2016-0127
-
-
High
BENAR
struts2-inti:2.3.30
-
CVE-2016-6795
CVE-2016-6795
High
BENAR
-
CVE-2017-9787
CVE-2017-9787
High
BENAR
-
CVE-2017-9791
CVE-2017-9791
High
BENAR
-
CVE-2017-9793
-
High
SALAH
Duplikat CVE-2018-1327
-
CVE-2017-9804
-
High
BENAR
-
CVE-2017-9805
CVE-2017-9805
High
BENAR
CVE-2016-4003
-
-
Medium
SALAH
Berlaku untuk Apache Struts 2.x sampai dengan 2.3.28 yaitu versi 2.3.30. Namun berdasarkan uraian, CVE berlaku untuk semua versi Struts 2 jika digunakan JRE 1.7 atau kurang. Rupanya mereka memutuskan untuk mengasuransikan kembali kami di sini, tetapi sepertinya SALAH
-
CVE-2018-1327
CVE-2018-1327
High
BENAR
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
High
BENAR
Kerentanan yang sama yang dieksploitasi oleh peretas Equifax pada tahun 2017
CVE-2017-12611
CVE-2017-12611
-
High
BENAR
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
High
BENAR
struts-taglib:1.3.8
-
CVE-2012-0394
-
Medium
SALAH
Untuk struts2-core
-
CVE-2013-2115
-
High
SALAH
Untuk struts2-core
-
CVE-2014-0114
-
High
SALAH
Untuk commons-beanutils
-
CVE-2015-0899
-
High
SALAH
Tidak berlaku untuk taglib
-
CVE-2015-2992
-
Medium
SALAH
Mengacu pada struts2-core
-
CVE-2016-1181
-
High
SALAH
Tidak berlaku untuk taglib
-
CVE-2016-1182
-
High
SALAH
Tidak berlaku untuk taglib
penyangga-ubin-1.3.8
-
CVE-2012-0394
-
Medium
SALAH
Untuk struts2-core
-
CVE-2013-2115
-
High
SALAH
Untuk struts2-core
-
CVE-2014-0114
-
High
SALAH
Di bawah commons-beanutils
-
CVE-2015-0899
-
High
SALAH
Tidak berlaku untuk ubin
-
CVE-2015-2992
-
Medium
SALAH
Untuk struts2-core
-
CVE-2016-1181
-
High
SALAH
Tidak berlaku untuk taglib
-
CVE-2016-1182
-
High
SALAH
Tidak berlaku untuk taglib
Sumber: www.habr.com