Synopsys, Sonatype, Snyk, White Source tərəfindən dərc edilən açıq mənbəli kitabxanaların zəiflikləri haqqında illik hesabatların buraxılması ilə inkişaf prosesində üçüncü tərəf proqram komponentlərinin təhlilinin (İngilis dili Proqram Tərkibi Analizi - SCA) əhəmiyyəti artır. Məlumata görə
Ən nümunəvi hallardan biri
Bu məqalədə təhlil nəticələrinin keyfiyyəti baxımından SCA-nın aparılması üçün alətin seçilməsi məsələsi müzakirə olunacaq. Alətlərin funksional müqayisəsi də veriləcək. Biz CI / CD-yə yerləşdirmə prosesini və sonrakı nəşrlər üçün inteqrasiya imkanlarını tərk edəcəyik. OWASP tərəfindən geniş çeşidli alətlər təqdim edilmişdir
Əməliyyat prinsipi
CPE-nin necə göründüyünü düşünün:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- Part: Komponentin proqrama (a), əməliyyat sisteminə (o), aparata (h) aid olduğunun göstəricisi (Tələb olunan element)
- Satıcı: Məhsulun istehsalçısının adı (Tələb olunan maddə)
- Product: Məhsulun Adı (Tələb olunur)
- Version: Komponent versiyası (köhnəlmiş element)
- Update: Paket yeniləməsi
- Edition: Miras alınmış versiya (köhnəlmiş element)
- Dil: RFC-5646-da müəyyən edilmiş dil
- SW Buraxılışı: Proqram təminatı versiyası
- Hədəf SW: Məhsulun işlədiyi proqram mühiti
- Hədəf HW: Məhsulun işlədiyi aparat mühiti
- Digər: Təchizatçı və ya məhsul haqqında məlumat
CPE nümunəsi belə görünür:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Sətir o deməkdir ki, CPE versiyası 2.3 istehsalçının proqram komponentini təsvir edir pivotal_software
başlığı ilə spring_framework
3.0.0 versiyası. Bir zəiflik açsaq
URL həmçinin SCA alətləri tərəfindən istifadə olunur. Paket URL formatı aşağıdakı kimidir:
scheme:type/namespace/name@version?qualifiers#subpath
- Sxem: Bunun paket URL'si olduğunu göstərən həmişə "pkg" olacaq (Tələb olunur)
- Növü: Paketin "növü" və ya paketin "protokolu", məsələn, maven, npm, nuget, gem, pypi və s. (tələb olunan maddə)
- Ad sahəsi: Bəzi ad prefiksi, məsələn, Maven qrup ID-si, Docker şəkil sahibi, GitHub istifadəçisi və ya təşkilatı. Könüllüdür və növündən asılıdır.
- Adı: Paket Adı (Tələb olunur)
- Version: Paket versiyası
- Qualifiers: Paket üçün əlavə kvalifikasiya məlumatları, məsələn, OS, arxitektura, paylama və s. Könüllü və tipə uyğun element.
- alt yol: Paketin kökünə nisbətən paketdəki əlavə yol
Misal üçün:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
XML formatında BOM-un necə görünə biləcəyinə bir nümunə:
<?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 yalnız Dependency Track üçün giriş parametrləri kimi deyil, həm də təchizat zəncirində proqram komponentlərinin inventarlaşdırılması üçün, məsələn, müştəriyə proqram təminatı vermək üçün istifadə edilə bilər. 2014-cü ildə hətta ABŞ-da baxılmaq üçün qanun təklif edildi
SCA-ya qayıdaq, Dependency Track Slack kimi Bildiriş Platformaları, Kenna Security kimi zəifliyin idarə edilməsi sistemləri ilə qeyri-standart inteqrasiyalara malikdir. Onu da qeyd etmək lazımdır ki, Dependency Track paketlərin köhnəlmiş versiyalarını da aşkarlayır və lisenziyalar haqqında məlumat verir (SPDX dəstəyi sayəsində).
Konkret olaraq SCA-nın keyfiyyətindən danışırıqsa, onda əsaslı fərq var.
Dependency Track layihəni giriş kimi qəbul etmir, əksinə BOM kimi qəbul edir. Bu o deməkdir ki, biz layihəni sınaqdan keçirmək istəyiriksə, ilk növbədə, məsələn, CycloneDX ilə bom.xml yaratmalıyıq. Beləliklə, Dependency Track birbaşa CycloneDX-dən asılıdır. Eyni zamanda, fərdiləşdirməyə imkan verir. Belə ki, OZON komandası yazıb
Bəzi funksional xüsusiyyətləri ümumiləşdirək, həmçinin təhlil üçün dəstəklənən dilləri nəzərdən keçirək:
Dil
Nexus IQ
Asılılıq yoxlanışı
Asılılıq İzi
Java
+
+
+
C / C ++
+
+
-
C#
+
+
-
. Net
+
+
+
Erlanq
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Python
+
+
+
yaqut
+
+
+
Perl
-
-
-
Scala
+
+
+
Məqsəd C
+
+
-
Cəld
+
+
-
R
+
-
-
Go
+
+
+
İşlevsellik
İşlevsellik
Nexus IQ
Asılılıq yoxlanışı
Asılılıq İzi
Mənbə kodunda istifadə olunan komponentlərin lisenziya təmizliyi üçün yoxlanılmasını təmin etmək imkanı
+
-
+
Zəiflikləri skan etmək və təhlil etmək bacarığı və Docker şəkilləri üçün lisenziya təmizliyi
+ Clair ilə inteqrasiya
-
-
Açıq mənbəli kitabxanalardan istifadə etmək üçün təhlükəsizlik siyasətini konfiqurasiya etmək imkanı
+
-
-
Həssas komponentlər üçün açıq mənbə depolarını skan etmək imkanı
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Xüsusi tədqiqat qrupunun mövcudluğu
+
-
-
Qapalı dövrədə işləmə
+
+
+
Üçüncü tərəf verilənlər bazalarından istifadə
+ Sonatype qapalı verilənlər bazası
+ Sonatype OSS, NPM İctimai Məsləhətçiləri
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, öz zəiflik verilənlər bazası dəstəyi
Konfiqurasiya edilmiş siyasətlərə uyğun olaraq inkişaf dövrəsinə yükləməyə cəhd edərkən açıq mənbə komponentlərini filtrləmək imkanı
+
-
-
Zəifliklərin aradan qaldırılması üçün tövsiyələr, düzəliş üçün keçidlərin mövcudluğu
+
+- (ictimai verilənlər bazasındakı təsvirdən asılıdır)
+- (ictimai verilənlər bazasındakı təsvirdən asılıdır)
Aşkar edilmiş zəifliklərin kritikliyə görə sıralanması
+
+
+
Rol giriş modeli
+
-
+
CLI dəstəyi
+
+
+- (yalnız CycloneDX)
Müəyyən edilmiş meyarlara uyğun olaraq zəifliklərin seçilməsi/çeşidlənməsi
+
-
+
Tətbiq Statusuna görə İdarə Paneli
+
-
+
PDF formatında hesabatın yaradılması
+
-
-
JSONCSV formatında hesabatın yaradılması
+
+
-
Rus dili dəstəyi
-
-
-
İnteqrasiya variantları
İnteqrasiya
Nexus IQ
Asılılıq yoxlanışı
Asılılıq İzi
LDAP/Active Directory ilə inteqrasiya
+
-
+
Bambuk davamlı inteqrasiya inteqrasiyası
+
-
-
Davamlı inteqrasiya sistemi (davamlı inteqrasiya) TeamCity ilə inteqrasiya
+
-
-
Davamlı inteqrasiya sistemi (davamlı inteqrasiya) GitLab ilə inteqrasiya
+
+- (GitLab üçün plagin kimi)
+
Davamlı inteqrasiya sistemi ilə inteqrasiya (davamlı inteqrasiya) Jenkins
+
+
+
IDE plaginlərinin mövcudluğu
+ IntelliJ, Eclipse, Visual Studio
-
-
Alətin veb-xidmətləri (API) vasitəsilə fərdi inteqrasiyaya dəstək
+
-
+
Asılılıq yoxlanışı
İlk başlanğıc
Qəsdən həssas tətbiqdə Asılılıq Yoxlanmasını işə salın
Bunun üçün istifadə edirik
mvn org.owasp:dependency-check-maven:check
Nəticədə, dependency-check-report.html hədəf kataloqda görünəcək.
Faylı açaq. Boşluqların ümumi sayının xülasəsindən sonra paketi, CPE-ni, CVE-lərin sayını göstərən yüksək Ciddilik və Etibarlılıq səviyyəsinə malik zəifliklər haqqında məlumat görə bilərik.
Daha ətraflı məlumat, xüsusən də qərarın (sübutların), yəni müəyyən bir BOM-un verildiyi əsasında verilir.
Sonra CPE, PURL və CVE təsviri gəlir. Yeri gəlmişkən, fiksasiya üçün tövsiyələr NVD verilənlər bazasında olmadığı üçün əlavə edilmir.
Skan nəticələrinə sistematik baxmaq üçün siz Nginx-i minimal parametrlərlə konfiqurasiya edə və ya alınan qüsurları Dependency Check konnektorlarını dəstəkləyən qüsur idarəetmə sisteminə göndərə bilərsiniz. Məsələn, Defect Dojo.
Asılılıq İzi
Quraşdırma
Dependency Track, öz növbəsində, displey qrafikləri olan veb əsaslı platformadır, buna görə də üçüncü tərəfin həllində qüsurların saxlanması ilə bağlı kəskin problem yoxdur.
Quraşdırma üçün aşağıdakı dəstəklənən ssenarilər var: Docker, WAR, Executable WAR.
İlk başlanğıc
Çalışan xidmətin URL-inə keçin. Admin / admin vasitəsilə daxil oluruq, giriş və şifrəni dəyişirik, bundan sonra İdarə panelinə daxil oluruq. Növbəti işimiz Java test tətbiqi üçün layihə yaratmaqdır Əsas səhifə/Layihələr → Layihə yaradın . Nümunə olaraq DVJA-nı götürək.
Dependency Track yalnız BOM-u giriş kimi qəbul edə bildiyinə görə, bu BOM bərpa edilməlidir. istifadə edək
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Biz bom.xml əldə edirik və faylı yaradılmış layihəyə yükləyirik DVJA → Asılılıqlar → BOM yükləyin.
Gəlin İdarəetmə → Analizatorlara gedək. Biz başa düşürük ki, bizdə yalnız NVD daxil olmaqla Daxili Analizatoru aktivləşdirmişik. Sonatype OSS Index-i də birləşdirək.
Beləliklə, layihəmiz üçün aşağıdakı şəkli alırıq:
Həmçinin siyahıda Sonatype OSS-ə aid bir zəifliyi tapa bilərsiniz:
Əsas məyusluq ondan ibarət idi ki, Dependency Track artıq Dependency Check xml hesabatlarını qəbul etmir. Dependency Check inteqrasiyasının ən son dəstəklənən versiyaları 1.0.0 - 4.0.2 idi, mən 5.3.2-ni sınaqdan keçirdim.
Burada
Nexus IQ
İlk başlanğıc
Nexus IQ quraşdırılması proqram arxivindən gəlir
Konsola daxil olduqdan sonra siz Təşkilat və Tətbiq yaratmalısınız.
Gördüyünüz kimi, IQ vəziyyətində konfiqurasiya bir qədər mürəkkəbdir, çünki biz həm də müxtəlif “mərhələlərə” (inkişaf, qurma, mərhələ, buraxılış) aid olan siyasətlər yaratmalıyıq. Bu, həssas komponentləri istehsal boru kəmərinə yaxınlaşdıqda bloklamaq və ya tərtibatçılar tərəfindən yükləndikdə Nexus Repo-ya daxil olan kimi bloklamaq üçün lazımdır.
Açıq mənbə və müəssisə arasındakı fərqi hiss etmək üçün gəlin Nexus IQ vasitəsilə eyni taramanı eyni şəkildə həyata keçirək. 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>
IQ veb interfeysində yaradılan hesabatın URL-ni izləyin:
Burada müxtəlif ciddilik səviyyələrində (Məlumatdan Təhlükəsizlik Kritikinə qədər) bütün siyasət pozuntularını görə bilərsiniz. Komponentin yanındakı D hərfi komponentin Birbaşa Asılılıq, komponentin yanındakı T hərfi isə komponentin Transitiv Asılılıq, yəni keçid olduğunu bildirir.
Yeri gəlmişkən, hesabat
Nexus IQ siyasətinin pozulmasından birini açsaq, komponentin təsvirini, eləcə də vaxt qrafikində cari versiyanın yerini göstərən Versiya Qrafikini, eləcə də zəifliyin hansı nöqtədə dayandırıldığını görə bilərik. həssas olmaq. Qrafikdəki şamların hündürlüyü bu komponentdən istifadənin populyarlığını göstərir.
Zəifliklər bölməsinə keçib CVE-ni açsanız, bu zəifliyin təsviri, aradan qaldırılması üçün tövsiyələr, həmçinin bu komponentin pozulma səbəbi, yəni sinfin mövcudluğu ilə tanış ola bilərsiniz. DiskFileitem.class
.
js komponentlərini silməklə yalnız üçüncü tərəf Java komponentlərini ümumiləşdirək. Mötərizədə NVD-dən kənarda aşkar edilmiş zəifliklərin sayını göstəririk.
Ümumi Nexus IQ:
- Skan edilmiş asılılıqlar: 62
- Həssas Asılılıqlar: 16
- Tapılan boşluqlar: 42 (8 sonatip db)
Ümumi asılılıq yoxlanışı:
- Skan edilmiş asılılıqlar: 47
- Həssas Asılılıqlar: 13
- Tapılan boşluqlar: 91 (14 sonatip oss)
Ümumi Asılılıq İzi:
- Skan edilmiş asılılıqlar: 59
- Həssas Asılılıqlar: 10
- Tapılan boşluqlar: 51 (1 sonatip oss)
Növbəti addım nəticələri təhlil etmək və bu zəifliklərdən hansının real qüsur, hansının yanlış müsbət olduğunu müəyyən etməkdir.
İmtina
Bu baxış danılmaz həqiqət deyil. Müəllifin başqalarının fonunda ayrıca bir aləti ayırmaq məqsədi yox idi. İcmalın məqsədi SCA alətlərinin necə işlədiyini və onların nəticələrinin yoxlanılmasını göstərmək idi.
Nəticələrin müqayisəsi
Qaydalar və şərtlər:
Üçüncü tərəf komponent zəiflikləri üçün yanlış pozitivlər:
- Müəyyən edilmiş komponentə CVE uyğunsuzluğu
- Məsələn, əgər struts2 çərçivəsində zəiflik aşkar edilərsə və alət bu zəiflikdən təsirlənməyən struts-plitələr çərçivəsinin komponentinə işarə edirsə, bu yanlış müsbətdir.
- Aşkar edilmiş komponent versiyasına CVE uyğunsuzluğu
- Məsələn, zəiflik python versiyası > 3.5 ilə bağlıdır və alət 2.7 versiyasını həssas kimi qeyd edir - bu, yanlış müsbətdir, çünki əslində zəiflik yalnız 3.x məhsul bölməsinə aiddir.
- CVE-lərin təkrarlanması
- Məsələn, SCA RCE-nin həyata keçirilməsinə imkan verən CVE-yə işarə edirsə, SCA həmin RCE-yə tabe olan Cisco məhsullarına tətbiq edilən eyni CVE-yə işarə edir. Bu halda, yalan müsbət olacaq.
- Məsələn, spring-web komponentində CVE tapıldı, bundan sonra SCA Spring Framework-ün digər komponentlərində eyni CVE-yə işarə edir, CVE-nin isə digər komponentlərlə heç bir əlaqəsi yoxdur. Bu halda, yalan müsbət olacaq.
Tədqiqatın obyekti DVJA Açıq Mənbə layihəsidir. Tədqiqat yalnız java komponentlərini əhatə etdi (js olmadan).
Xülasə nəticələr
Müəyyən edilmiş zəifliklərin əl ilə nəzərdən keçirilməsinin nəticələrinə keçək. Hər bir CVE üçün tam hesabatı Əlavədə tapa bilərsiniz.
Bütün zəifliklər üçün ümumi nəticələr:
Parametr
Nexus IQ
Asılılıq yoxlanışı
Asılılıq İzi
Müəyyən edilmiş ümumi zəifliklər
42
91
51
Yanlış müəyyən edilmiş zəifliklər (yanlış müsbət)
2 (4.76%)
62 (68,13%)
29 (56.86%)
Müvafiq zəiflik tapılmadı (yalan mənfi)
10
20
27
Komponentlər üzrə yekun nəticələr:
Parametr
Nexus IQ
Asılılıq yoxlanışı
Asılılıq İzi
Ümumi Komponentlər Açıqlandı
62
47
59
Ümumi Zəif Komponentlər
16
13
10
Həssas komponentlər səhv müəyyən edilmişdir (yalan pozitiv)
1
5
0
Həssas komponentlər səhv müəyyən edilmişdir (yalan pozitiv)
0
6
6
Yanlış müsbət və yalançı mənfilərin ümumi boşluqların sayına nisbətini qiymətləndirmək üçün vizual qrafiklər quraq. Komponentlər üfüqi, onlarda müəyyən edilmiş zəifliklər isə şaquli olaraq qeyd olunur.
Müqayisə üçün, oxşar tədqiqat Sonatype komandası tərəfindən OWASP Dependency Check-dən istifadə edərək 1531 komponentdən ibarət layihəni sınaqdan keçirib. Gördüyümüz kimi, səs-küyün düzgün cavablara nisbəti nəticələrimizə uyğundur.
Mənbə:
Bu cür nəticələrin səbəbini anlamaq üçün skan nəticələrimizdən bəzi CVE-lərə nəzər salaq.
daha
№ 1
Əvvəlcə Sonatype Nexus IQ-nun bəzi maraqlı məqamlarını təhlil edək.
Nexus IQ, Spring Framework-də bir neçə dəfə RCE etmək imkanı ilə seriyasızlaşdırma problemini qeyd edir. CVE-2016-1000027 spring-web: 3.0.5 ilk dəfə və CVE-2011-2894 yaz-kontekstində:3.0.5 və spring-core:3.0.5. Əvvəlcə bir neçə CVE-də zəifliyin təkrarlanması olduğu görünür. Çünki NVD verilənlər bazasında CVE-2016-1000027 və CVE-2011-2894-ə baxsanız, deyəsən, hər şey göz qabağındadır.
Komponent
Zəiflik
spring-web: 3.0.5
CVE-2016-1000027
yaz-kontekst: 3.0.5
CVE-2011-2894
yay nüvəsi: 3.0.5
CVE-2011-2894
Təsvir
Təsvir
CVE-2011-2894 özü tərəfindən olduqca yaxşı tanınır. Hesabatda RemoteInvocationSerializingExporter
CVE-2011-2894-də zəiflik burada görünür HttpInvokerServiceExporter
. Nexus IQ bizə belə deyir:
Bununla belə, NVD-də belə bir şey yoxdur, buna görə Dependency Check və Dependency Track yanlış neqativlər alır.
CVE-2011-2894-ün təsvirindən də başa düşmək olar ki, zəiflik həqiqətən də həm bahar kontekstində: 3.0.5, həm də yay nüvəsi: 3.0.5-də mövcuddur. Bunun təsdiqini bu zəifliyi tapan şəxsin məqaləsində tapmaq olar.
№ 2
Komponent
Zəiflik
Nəticə
struts2 nüvəli: 2.3.30
CVE-2016-4003
SAXTA
CVE-2016-4003 zəifliyini öyrənsək, onun 2.3.28 versiyasında düzəldildiyini başa düşəcəyik, buna baxmayaraq Nexus IQ bu barədə bizə məlumat verir. Zəifliyin təsvirində qeyd var:
Yəni, zəiflik yalnız JRE-nin köhnəlmiş versiyası ilə birlikdə mövcuddur və bu barədə bizə xəbərdarlıq etmək qərarına gəldilər. Buna baxmayaraq, biz bunu ən dəhşətli olmasa da, Yalan Müsbət hesab edirik.
3
Komponent
Zəiflik
Nəticə
xwork-core: 2.3.30
CVE-2017-9804
TRUE
xwork-core: 2.3.30
CVE-2017-7672
SAXTA
CVE-2017-9804 və CVE-2017-7672 üçün təsvirə baxsaq, problemin burada olduğunu anlayacağıq. URLValidator class
, CVE-2017-9804 ilə CVE-2017-7672-dən qaynaqlanır. İkinci zəifliyin mövcudluğu heç bir faydalı yük daşımır, yalnız onun şiddəti Yüksək səviyyəyə yüksəlmişdir, buna görə də bu, lazımsız səs-küy hesab edilə bilər.
Ümumilikdə, Nexus IQ üçün başqa heç bir yanlış müsbət tapılmadı.
№ 4
IQ-nu digər həllərdən fərqləndirən bir neçə şey var.
Komponent
Zəiflik
Nəticə
spring-web: 3.0.5
CVE-2020-5398
TRUE
NVD-də CVE deyir ki, o, yalnız 5.2.x - 5.2.3, 5.1.x - 5.1.13 və 5.0.x - 5.0.16 versiyalarına aiddir, lakin Nexus IQ-da CVE təsvirinə baxsaq, onda aşağıdakıları görəcəyik:
Məsləhətdən yayınma haqqında bildiriş: Sonatype təhlükəsizlik tədqiqat qrupu aşkar etdi ki, bu zəiflik məsləhətdə qeyd edildiyi kimi 3.0.2.x deyil, 5.0.RELEASE versiyasında təqdim edilib.
Bunun ardınca bu boşluq üçün PoC gəlir və onun 3.0.5 versiyasında mövcud olduğunu bildirir.
Yanlış mənfi Asılılıq Yoxlanması və Asılılıq İzinə göndərilir.
№ 5
Dependency Check və Dependency Track üçün yanlış müsbətə baxaq.
Asılılıq yoxlanışı NVD-də bütün çərçivəyə tətbiq olunan CVE-ləri bu CVE-lərin tətbiq olunmadığı komponentlərə əks etdirdiyi üçün fərqlənir. Bu, yoxlanılan CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182-ə aiddir. ” üçün struts-taglib:1.3.8 və struts-tiles-1.3.8. Bu komponentlərin CVE-də təsvir olunanlarla heç bir əlaqəsi yoxdur - sorğunun işlənməsi, səhifənin yoxlanılması və s. Bu, bu CVE-lər və komponentlər arasında yalnız çərçivənin ümumi olması ilə əlaqədardır, ona görə də Dependency Check bunu zəiflik hesab etmişdir.
Spring-tx:3.0.5 ilə eyni vəziyyət və struts-core:1.3.8 ilə oxşar vəziyyət. Struts-core üçün, Dependency Check və Dependency Track əslində ayrı bir çərçivə olan struts2-core-a aid olan çoxlu boşluqlar tapdı. Bu halda, Nexus IQ şəkli düzgün başa düşdü və onun buraxdığı CVE-lərdə struts-core-un ömrünün sona çatdığını və struts2-core-a keçmək lazım olduğunu göstərdi.
№ 6
Bəzi hallarda, Asılılığın Yoxlanması və Asılılığın İzlənməsi xətasını müalicə etmək ədalətsizdir. Xüsusilə CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225 və Asılılıq Yoxlanışı spring-core:3.0.5-ə istinad edilir, əslində spring-web:3.0.5-ə aiddir. Eyni zamanda, bu CVE-lərin bəziləri Nexus IQ tərəfindən tapıldı, lakin IQ onları başqa bir komponentlə düzgün müəyyənləşdirdi. Yaz nüvəsində bu zəifliklərin tapılmadığından, onların prinsipcə çərçivədə olmadığını iddia etmək olmaz və açıq mənbə alətləri bu zəiflikləri haqlı olaraq qeyd etdi (sadəcə bir az qaçırdılar).
Tapıntılar
Gördüyümüz kimi, müəyyən edilmiş zəifliklərin etibarlılığının əl ilə nəzərdən keçirilməsi ilə müəyyən edilməsi birmənalı nəticələr vermir və bu, mübahisəli məsələlərə səbəb olur. Nəticələr budur ki, Nexus IQ həlli ən aşağı yanlış müsbət nisbətə və ən yüksək dəqiqliyə malikdir.
Əvvəla, bu onunla əlaqədardır ki, Sonatype komandası öz verilənlər bazalarında NVD-dən hər bir CVE zəifliyi üçün təsviri genişləndirərək, komponentin müəyyən bir versiyası üçün zəifliyin sinfinə və ya funksiyasına qədər əlavə əməliyyatlar həyata keçirmişdir. tədqiqat (məsələn, köhnə proqram versiyalarında zəiflikləri yoxlamaq yolu ilə).
Nəticələrə NVD-yə daxil olmayan, lakin SONATYPE ilə işarələnmiş Sonatype verilənlər bazasında mövcud olan zəifliklər də mühüm təsir göstərir. Məlumata görə
Nəticədə, Dependency Check bəzi həssas komponentləri əldən verərək çoxlu səs-küy yaradır. Dependency Track daha az səs-küy yaradır və çoxlu sayda komponentləri aşkarlayır, bu da veb-interfeysdə gözlərə vizual olaraq zərər vermir.
Buna baxmayaraq, təcrübə göstərir ki, yetkin DevSecOps üçün ilk addımlar olmalıdır ki, açıq mənbədir. SCA-nı inkişafa daxil etmək üçün düşünmək lazım olan ilk şey proseslərdir, yəni rəhbərlik və əlaqəli şöbələrlə təşkilatınızda ideal proseslərin necə görünməsi barədə düşünməkdir. Belə çıxa bilər ki, təşkilatınız üçün əvvəlcə Dependency Check və ya Dependency Track bütün biznes ehtiyaclarını əhatə edəcək və Müəssisə həlləri inkişaf etdirilən tətbiqlərin artan mürəkkəbliyi səbəbindən məntiqi davamı olacaq.
Əlavə A. Komponentlər üçün nəticələr
Rəmzləri:
- Komponentdə yüksək - yüksək və kritik səviyyəli zəifliklər
- Orta — Komponentdə orta dərəcədə zəifliklər
- DOĞRU - Əsl müsbət məsələ
- FALSE - Yanlış müsbət məsələ
Komponent
Nexus IQ
Asılılıq yoxlanışı
Asılılıq İzi
Nəticə
dom4j: 1.6.1
Yüksək
Yüksək
Yüksək
TRUE
log4j nüvəsi: 2.3
Yüksək
Yüksək
Yüksək
TRUE
log4j: 1.2.14
Yüksək
Yüksək
-
TRUE
ümumi kolleksiyalar: 3.1
Yüksək
Yüksək
Yüksək
TRUE
commons-fileupload: 1.3.2
Yüksək
Yüksək
Yüksək
TRUE
Commons-beanutils: 1.7.0
Yüksək
Yüksək
Yüksək
TRUE
commons-codec: 1:10
Mühit
-
-
TRUE
mysql-connector-java: 5.1.42
Yüksək
Yüksək
Yüksək
TRUE
yay ifadəsi: 3.0.5
Yüksək
komponent tapılmadı
TRUE
spring-web: 3.0.5
Yüksək
komponent tapılmadı
Yüksək
TRUE
yaz-kontekst: 3.0.5
Mühit
komponent tapılmadı
-
TRUE
yay nüvəsi: 3.0.5
Mühit
Yüksək
Yüksək
TRUE
struts2-config-brauzer-plugin:2.3.30
Mühit
-
-
TRUE
spring-tx: 3.0.5
-
Yüksək
-
SAXTA
struts-core: 1.3.8
Yüksək
Yüksək
Yüksək
TRUE
xwork-core: 2.3.30
Yüksək
-
-
TRUE
struts2 nüvəli: 2.3.30
Yüksək
Yüksək
Yüksək
TRUE
struts-taglib: 1.3.8
-
Yüksək
-
SAXTA
struts-kafel-1.3.8
-
Yüksək
-
SAXTA
Əlavə B. Zəifliyin nəticələri
Rəmzləri:
- Komponentdə yüksək - yüksək və kritik səviyyəli zəifliklər
- Orta — Komponentdə orta dərəcədə zəifliklər
- DOĞRU - Əsl müsbət məsələ
- FALSE - Yanlış müsbət məsələ
Komponent
Nexus IQ
Asılılıq yoxlanışı
Asılılıq İzi
Sərtlik
Nəticə
Qeyd
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
Yüksək
TRUE
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
Yüksək
TRUE
log4j nüvəsi: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
Yüksək
TRUE
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
Aşağı
TRUE
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
Yüksək
TRUE
-
CVE-2020-9488
-
Aşağı
TRUE
SONATYPE-2010-0053
-
-
Yüksək
TRUE
ümumi kolleksiyalar: 3.1
-
CVE-2015-6420
CVE-2015-6420
Yüksək
SAXTA
RCE (OSSINDEX) dublikatları
-
CVE-2017-15708
CVE-2017-15708
Yüksək
SAXTA
RCE (OSSINDEX) dublikatları
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
Yüksək
TRUE
commons-fileupload: 1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
Yüksək
TRUE
SONATYPE-2014-0173
-
-
Mühit
TRUE
Commons-beanutils: 1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
Yüksək
TRUE
-
CVE-2019-10086
CVE-2019-10086
Yüksək
SAXTA
Zəiflik yalnız 1.9.2+ versiyaları üçün tətbiq edilir
commons-codec: 1:10
SONATYPE-2012-0050
-
-
Mühit
TRUE
mysql-connector-java: 5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
Yüksək
TRUE
CVE-2019-2692
CVE-2019-2692
-
Mühit
TRUE
-
CVE-2020-2875
-
Mühit
SAXTA
CVE-2019-2692 ilə eyni zəiflik, lakin əlavə ilə "hücumlar əlavə məhsullara əhəmiyyətli dərəcədə təsir göstərə bilər"
-
CVE-2017-15945
-
Yüksək
SAXTA
mysql-connector-java-ya aid deyil
-
CVE-2020-2933
-
Aşağı
SAXTA
CVE-2020-2934-ə dublikat
CVE-2020-2934
CVE-2020-2934
-
Mühit
TRUE
yay ifadəsi: 3.0.5
CVE-2018-1270
komponent tapılmadı
-
Yüksək
TRUE
CVE-2018-1257
-
-
Mühit
TRUE
spring-web: 3.0.5
CVE-2016-1000027
komponent tapılmadı
-
Yüksək
TRUE
CVE-2014-0225
-
CVE-2014-0225
Yüksək
TRUE
CVE-2011-2730
-
-
Yüksək
TRUE
-
-
CVE-2013-4152
Mühit
TRUE
CVE-2018-1272
-
-
Yüksək
TRUE
CVE-2020-5398
-
-
Yüksək
TRUE
İQ-nin lehinə olan hal: "Sonatype təhlükəsizlik tədqiqat qrupu aşkar etdi ki, bu zəiflik məsləhətdə qeyd edildiyi kimi 3.0.2.x deyil, 5.0.RELEASE versiyasında təqdim edilib."
CVE-2013-6429
-
-
Mühit
TRUE
CVE-2014-0054
-
CVE-2014-0054
Mühit
TRUE
CVE-2013-6430
-
-
Mühit
TRUE
yaz-kontekst: 3.0.5
CVE-2011-2894
komponent tapılmadı
-
Mühit
TRUE
yay nüvəsi: 3.0.5
-
CVE-2011-2730
CVE-2011-2730
Yüksək
TRUE
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
Mühit
TRUE
-
-
CVE-2013-4152
Mühit
SAXTA
Spring-web-də eyni zəifliyin dublikatı
-
CVE-2013-4152
-
Mühit
SAXTA
Zəiflik spring-web komponentinə aiddir
-
CVE-2013-6429
CVE-2013-6429
Mühit
SAXTA
Zəiflik spring-web komponentinə aiddir
-
CVE-2013-6430
-
Mühit
SAXTA
Zəiflik spring-web komponentinə aiddir
-
CVE-2013-7315
CVE-2013-7315
Mühit
SAXTA
CVE-2013-4152-dən SPLIT. + Zəiflik spring-web komponentinə aiddir
-
CVE-2014-0054
CVE-2014-0054
Mühit
SAXTA
Zəiflik spring-web komponentinə aiddir
-
CVE-2014-0225
-
Yüksək
SAXTA
Zəiflik spring-web komponentinə aiddir
-
-
CVE-2014-0225
Yüksək
SAXTA
Spring-web-də eyni zəifliyin dublikatı
-
CVE-2014-1904
CVE-2014-1904
Mühit
SAXTA
Zəiflik spring-web-mvc komponentinə aiddir
-
CVE-2014-3625
CVE-2014-3625
Mühit
SAXTA
Zəiflik spring-web-mvc komponentinə aiddir
-
CVE-2016-9878
CVE-2016-9878
Yüksək
SAXTA
Zəiflik spring-web-mvc komponentinə aiddir
-
CVE-2018-1270
CVE-2018-1270
Yüksək
SAXTA
Yaz ifadəsi / yaz mesajları üçün
-
CVE-2018-1271
CVE-2018-1271
Mühit
SAXTA
Zəiflik spring-web-mvc komponentinə aiddir
-
CVE-2018-1272
CVE-2018-1272
Yüksək
TRUE
CVE-2014-3578
CVE-2014-3578(OSSINDEX)
CVE-2014-3578
Mühit
TRUE
SONATYPE-2015-0327
-
-
Aşağı
TRUE
struts2-config-brauzer-plugin:2.3.30
SONATYPE-2016-0104
-
-
Mühit
TRUE
spring-tx: 3.0.5
-
CVE-2011-2730
-
Yüksək
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2011-2894
-
Yüksək
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2013-4152
-
Mühit
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2013-6429
-
Mühit
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2013-6430
-
Mühit
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2013-7315
-
Mühit
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2014-0054
-
Mühit
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2014-0225
-
Yüksək
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2014-1904
-
Mühit
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2014-3625
-
Mühit
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2016-9878
-
Yüksək
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2018-1270
-
Yüksək
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2018-1271
-
Mühit
SAXTA
Zəiflik spring-tx-ə aid deyil
-
CVE-2018-1272
-
Mühit
SAXTA
Zəiflik spring-tx-ə aid deyil
struts-core: 1.3.8
-
CVE-2011-5057(OSSINDEX)
Mühit
FASLE
Struts 2-ə qarşı zəiflik
-
CVE-2012-0391(OSSINDEX)
CVE-2012-0391
Yüksək
SAXTA
Struts 2-ə qarşı zəiflik
-
CVE-2014-0094(OSSINDEX)
CVE-2014-0094
Mühit
SAXTA
Struts 2-ə qarşı zəiflik
-
CVE-2014-0113(OSSINDEX)
CVE-2014-0113
Yüksək
SAXTA
Struts 2-ə qarşı zəiflik
CVE-2016-1182
3VE-2016-1182
-
Yüksək
TRUE
-
-
CVE-2011-5057
Mühit
SAXTA
Struts 2-ə qarşı zəiflik
-
CVE-2012-0392(OSSINDEX)
CVE-2012-0392
Yüksək
SAXTA
Struts 2-ə qarşı zəiflik
-
CVE-2012-0393(OSSINDEX)
CVE-2012-0393
Mühit
SAXTA
Struts 2-ə qarşı zəiflik
CVE-2015-0899
CVE-2015-0899
-
Yüksək
TRUE
-
CVE-2012-0394
CVE-2012-0394
Mühit
SAXTA
Struts 2-ə qarşı zəiflik
-
CVE-2012-0838(OSSINDEX)
CVE-2012-0838
Yüksək
SAXTA
Struts 2-ə qarşı zəiflik
-
CVE-2013-1965(OSSINDEX)
CVE-2013-1965
Yüksək
SAXTA
Struts 2-ə qarşı zəiflik
-
CVE-2013-1966(OSSINDEX)
CVE-2013-1966
Yüksək
FASLE
Struts 2-ə qarşı zəiflik
-
CVE-2013-2115
CVE-2013-2115
Yüksək
FASLE
Struts 2-ə qarşı zəiflik
-
CVE-2013-2134(OSSINDEX)
CVE-2013-2134
Yüksək
FASLE
Struts 2-ə qarşı zəiflik
-
CVE-2013-2135(OSSINDEX)
CVE-2013-2135
Yüksək
FASLE
Struts 2-ə qarşı zəiflik
CVE-2014-0114
CVE-2014-0114
-
Yüksək
TRUE
-
CVE-2015-2992
CVE-2015-2992
Mühit
SAXTA
Struts 2-ə qarşı zəiflik
-
CVE-2016-0785(OSSINDEX)
CVE-2016-0785
Yüksək
SAXTA
Struts 2-ə qarşı zəiflik
CVE-2016-1181
CVE-2016-1181
-
Yüksək
TRUE
-
CVE-2016-4003(OSSINDEX)
CVE-2016-4003
Yüksək
SAXTA
Struts 2-ə qarşı zəiflik
xwork-core: 2.3.30
CVE-2017-9804
-
-
Yüksək
TRUE
SONATYPE-2017-0173
-
-
Yüksək
TRUE
CVE-2017-7672
-
-
Yüksək
SAXTA
CVE-2017-9804-ə ikiqat
SONATYPE-2016-0127
-
-
Yüksək
TRUE
struts2 nüvəli: 2.3.30
-
CVE-2016-6795
CVE-2016-6795
Yüksək
TRUE
-
CVE-2017-9787
CVE-2017-9787
Yüksək
TRUE
-
CVE-2017-9791
CVE-2017-9791
Yüksək
TRUE
-
CVE-2017-9793
-
Yüksək
SAXTA
CVE-2018-1327-ə dublikat
-
CVE-2017-9804
-
Yüksək
TRUE
-
CVE-2017-9805
CVE-2017-9805
Yüksək
TRUE
CVE-2016-4003
-
-
Mühit
SAXTA
2 versiyası olan 2.3.28-ə qədər Apache Struts 2.3.30.x-ə aiddir. Bununla belə, təsvirə əsasən, CVE, JRE 2 və aşağıda istifadə edildiyi müddətcə Struts 1.7-nin bütün versiyalarında işləyir. Görünür, bizi burada təkrar sığortalamaq qərarına gəliblər, amma bu, daha çox YANLIŞ kimi görünür
-
CVE-2018-1327
CVE-2018-1327
Yüksək
TRUE
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
Yüksək
TRUE
2017-ci ildə Equifax-da təcavüzkarlar tərəfindən istifadə edilən eyni zəiflik
CVE-2017-12611
CVE-2017-12611
-
Yüksək
TRUE
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
Yüksək
TRUE
struts-taglib: 1.3.8
-
CVE-2012-0394
-
Mühit
SAXTA
2 nüvəli dayaqlar üçün
-
CVE-2013-2115
-
Yüksək
SAXTA
2 nüvəli dayaqlar üçün
-
CVE-2014-0114
-
Yüksək
SAXTA
Commons-beanutils üçün
-
CVE-2015-0899
-
Yüksək
SAXTA
Taglib ilə əlaqəli deyil
-
CVE-2015-2992
-
Mühit
SAXTA
Struts2-core ilə əlaqədardır
-
CVE-2016-1181
-
Yüksək
SAXTA
Taglib ilə əlaqəli deyil
-
CVE-2016-1182
-
Yüksək
SAXTA
Taglib ilə əlaqəli deyil
struts-kafel-1.3.8
-
CVE-2012-0394
-
Mühit
SAXTA
2 nüvəli dayaqlar üçün
-
CVE-2013-2115
-
Yüksək
SAXTA
2 nüvəli dayaqlar üçün
-
CVE-2014-0114
-
Yüksək
SAXTA
Commons-beanutils altında
-
CVE-2015-0899
-
Yüksək
SAXTA
Kafellərə tətbiq edilmir
-
CVE-2015-2992
-
Mühit
SAXTA
2 nüvəli dayaqlar üçün
-
CVE-2016-1181
-
Yüksək
SAXTA
Taglib ilə əlaqəli deyil
-
CVE-2016-1182
-
Yüksək
SAXTA
Taglib ilə əlaqəli deyil
Mənbə: www.habr.com