Synopsys, Sonatype, Snyk va White Source tomonidan nashr etiladigan ochiq kodli kutubxonalarning zaifliklari to'g'risidagi yillik hisobotlarning chiqarilishi bilan ishlab chiqish jarayonida uchinchi tomon dasturiy ta'minot komponentlarini (Software Composition Analysis - SCA) tahlil qilishning ahamiyati ortib bormoqda. . Hisobotga ko'ra
Eng yorqin misollardan biri
Ushbu maqolada tahlil natijalarining sifati nuqtai nazaridan SCAni o'tkazish uchun vositani tanlash masalasi muhokama qilinadi. Asboblarning funktsional taqqoslanishi ham taqdim etiladi. CI/CD ga integratsiyalashuv jarayoni va integratsiya imkoniyatlari keyingi nashrlar uchun qoldiriladi. OWASP tomonidan keng turdagi vositalar taqdim etildi
Ish printsipi
Keling, CPE qanday ko'rinishini ko'rib chiqaylik:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- Bo'lim: Komponent ilovaga (a), operatsion tizimga (o), apparatga (h) tegishli ekanligini ko'rsatish (majburiy)
- Sotuvchi: Mahsulot ishlab chiqaruvchisi nomi (majburiy)
- Mahsulot: Mahsulot nomi (majburiy)
- Version: Komponent versiyasi (eskirgan element)
- yangilash: Paket yangilanishi
- Edition: Eski versiya (eskirgan element)
- Til: RFC-5646 da belgilangan til
- SW nashri: Dasturiy ta'minot versiyasi
- Maqsadli SW: Mahsulot ishlaydigan dasturiy ta'minot muhiti
- Maqsadli HW: Mahsulot ishlaydigan apparat muhiti
- Boshqa: Yetkazib beruvchi yoki mahsulot haqida ma'lumot
Misol CPE quyidagicha ko'rinadi:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
Chiziq CPE 2.3 versiyasi ishlab chiqaruvchidan dastur komponentini tavsiflashini anglatadi pivotal_software
nomi bilan spring_framework
3.0.0 versiyasi. Agar zaiflikni ochsak
URL SCA vositalari tomonidan ham qo'llaniladi. Paket URL formati quyidagicha:
scheme:type/namespace/name@version?qualifiers#subpath
- Sxema: Bu paket URL manzili ekanligini bildiruvchi har doim "pkg" bo'ladi (majburiy)
- turi: Paketning "turi" yoki paketning "protokoli", masalan, maven, npm, nuget, gem, pypi va boshqalar. (Majburiy element)
- Nom maydoni: Maven guruhi identifikatori, Docker tasvir egasi, GitHub foydalanuvchisi yoki tashkilot kabi ba'zi nomlar prefiksi. Majburiy emas va turiga bog'liq.
- Ism: Paket nomi (majburiy)
- Version: Paket versiyasi
- Saralovchilar: Paket uchun qo'shimcha malaka ma'lumotlari, masalan, OS, arxitektura, tarqatish va boshqalar. Majburiy emas va turga xos.
- Subpath: Paket ildiziga nisbatan paketdagi qo'shimcha yo'l
Masalan:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
XML formatida BOM qanday ko'rinishiga misol:
<?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 nafaqat Dependency Track uchun kirish parametrlari sifatida, balki ta'minot zanjiridagi dasturiy ta'minot komponentlarini inventarizatsiya qilish uchun, masalan, mijozni dasturiy ta'minot bilan ta'minlash uchun ham ishlatilishi mumkin. 2014 yilda hatto AQShda qonun taklif qilingan
SCA-ga qaytsak, Dependency Track Slack kabi bildirishnoma platformalari, Kenna Security kabi zaifliklarni boshqarish tizimlari bilan tayyor integratsiyaga ega. Shuni ham ta'kidlash kerakki, Dependency Track, boshqa narsalar qatori, paketlarning eskirgan versiyalarini aniqlaydi va litsenziyalar haqida ma'lumot beradi (SPDX qo'llab-quvvatlashi tufayli).
Agar SCA sifati haqida alohida gapiradigan bo'lsak, unda asosiy farq bor.
Dependency Track loyihani kirish sifatida qabul qilmaydi, balki BOMni qabul qiladi. Bu shuni anglatadiki, agar biz loyihani sinab ko'rmoqchi bo'lsak, avval bom.xml ni yaratishimiz kerak, masalan, CycloneDX yordamida. Shunday qilib, Dependency Track bevosita CycloneDX ga bog'liq. Shu bilan birga, u moslashtirishga imkon beradi. Bu haqda OZON jamoasi yozgan
Keling, ba'zi funktsional xususiyatlarni umumlashtiramiz, shuningdek tahlil qilish uchun qo'llab-quvvatlanadigan tillarni ko'rib chiqamiz:
til
Nexus IQ
Tobelikni tekshirish
Tobelik treki
Java
+
+
+
C / C ++
+
+
-
C#
+
+
-
.Net
+
+
+
erlang
-
-
+
JavaScript (NodeJS)
+
+
+
PHP
+
+
+
Python
+
+
+
yoqut
+
+
+
Perl
-
-
-
Scala
+
+
+
Ob'ektiv C
+
+
-
Swift
+
+
-
R
+
-
-
Go
+
+
+
Funktsionallik
Funktsionallik
Nexus IQ
Tobelikni tekshirish
Tobelik treki
Manba kodida ishlatiladigan komponentlarning litsenziyalangan tozaligi tekshirilishini ta'minlash qobiliyati
+
-
+
Zaifliklarni skanerlash va tahlil qilish va Docker tasvirlari uchun litsenziya tozaligi
+ Clair bilan integratsiya
-
-
Ochiq kodli kutubxonalardan foydalanish uchun xavfsizlik siyosatini sozlash imkoniyati
+
-
-
Zaif komponentlar uchun ochiq manbali omborlarni skanerlash imkoniyati
+ RubyGems, Maven, NPM, Nuget, Pypi, Conan, Bower, Conda, Go, p2, R, Yum, Helm, Docker, CocoaPods, Git LFS
-
+ Hex, RubyGems, Maven, NPM, Nuget, Pypi
Ixtisoslashgan tadqiqot guruhining mavjudligi
+
-
-
Yopiq tsikl bilan ishlash
+
+
+
Uchinchi tomon ma'lumotlar bazalaridan foydalanish
+ Yopiq Sonatype ma'lumotlar bazasi
+ Sonatype OSS, NPM jamoatchilik maslahatchilari
+ Sonatype OSS, NPM Public Advisors, RetireJS, VulnDB, o'zining zaiflik ma'lumotlar bazasini qo'llab-quvvatlash
Sozlangan siyosatlarga muvofiq ishlab chiqish tsikliga yuklashga urinayotganda ochiq manba komponentlarini filtrlash imkoniyati
+
-
-
Zaifliklarni tuzatish bo'yicha tavsiyalar, tuzatishlarga havolalar mavjudligi
+
+- (ommaviy ma'lumotlar bazalaridagi tavsifga bog'liq)
+- (ommaviy ma'lumotlar bazalaridagi tavsifga bog'liq)
Aniqlangan zaifliklarning jiddiylik darajasi bo'yicha reytingi
+
+
+
Rolga asoslangan kirish modeli
+
-
+
CLI qo'llab-quvvatlash
+
+
+- (faqat CycloneDX uchun)
Belgilangan mezonlar bo'yicha zaifliklarni tanlash/saralash
+
-
+
Ilova holati bo'yicha asboblar paneli
+
-
+
PDF formatida hisobotlarni yaratish
+
-
-
JSONCSV formatida hisobotlarni yaratish
+
+
-
Rus tilini qo'llab-quvvatlash
-
-
-
Integratsiya qobiliyatlari
Integratsiya
Nexus IQ
Tobelikni tekshirish
Tobelik treki
LDAP/Active Directory integratsiyasi
+
-
+
Bamboo uzluksiz integratsiya tizimi bilan integratsiya
+
-
-
TeamCity uzluksiz integratsiya tizimi bilan integratsiya
+
-
-
GitLab uzluksiz integratsiya tizimi bilan integratsiya
+
+- (GitLab uchun plagin sifatida)
+
Jenkins uzluksiz integratsiya tizimi bilan integratsiya
+
+
+
IDE uchun plaginlarning mavjudligi
+ IntelliJ, Eclipse, Visual Studio
-
-
Asbobning veb-xizmatlari (API) orqali shaxsiy integratsiyani qo'llab-quvvatlash
+
-
+
Tobelikni tekshirish
Birinchidan boshlang
Qasddan zaif dasturda Dependency Check dasturini ishga tushiraylik
Buning uchun biz foydalanamiz
mvn org.owasp:dependency-check-maven:check
Natijada, maqsadli katalogda dependency-check-report.html paydo bo'ladi.
Keling, faylni ochamiz. Zaifliklarning umumiy soni haqidagi qisqacha ma'lumotdan so'ng, paket, CPE va CVE sonini ko'rsatuvchi yuqori darajadagi jiddiylik va ishonchga ega zaifliklar haqidagi ma'lumotlarni ko'rishimiz mumkin.
Keyinchalik batafsil ma'lumot, xususan, qaror qabul qilingan asos (dalil), ya'ni ma'lum bir BOM keladi.
Keyinchalik CPE, PURL va CVE tavsifi keladi. Aytgancha, tuzatish bo'yicha tavsiyalar NVD ma'lumotlar bazasida yo'qligi sababli kiritilmagan.
Skanerlash natijalarini muntazam ko'rish uchun siz Nginx-ni minimal sozlamalar bilan sozlashingiz yoki natijada paydo bo'lgan nuqsonlarni Dependency Check-ga ulagichlarni qo'llab-quvvatlaydigan nuqsonlarni boshqarish tizimiga yuborishingiz mumkin. Masalan, Defect Dojo.
Tobelik treki
sozlama
Dependency Track, o'z navbatida, displey grafiklari bo'lgan veb-platformadir, shuning uchun uchinchi tomon yechimida nuqsonlarni saqlashning dolzarb muammosi bu erda paydo bo'lmaydi.
O'rnatish uchun qo'llab-quvvatlanadigan skriptlar: Docker, WAR, Executable WAR.
Birinchidan boshlang
Ishlayotgan xizmatning URL manziliga o'tamiz. Biz admin/admin orqali tizimga kiramiz, login va parolni o'zgartiramiz, so'ngra asboblar paneliga o'tamiz. Keyingi ishimiz Java-da test dasturi uchun loyiha yaratishdir Bosh sahifa/Loyihalar → Loyiha yaratish . Misol tariqasida DVJA ni olaylik.
Dependency Track faqat BOMni kirish sifatida qabul qilishi mumkinligi sababli, ushbu BOMni olish kerak. Keling, foyda keltiraylik
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
Biz bom.xml ni olamiz va faylni yaratilgan loyihaga yuklaymiz DVJA → Bog'liqliklar → BOMni yuklash.
Keling, Ma'muriyat → Analizatorlarga o'tamiz. Bizda faqat ichki analizator yoqilganligini tushunamiz, jumladan NVD. Keling, Sonatype OSS Index-ni ham bog'laymiz.
Shunday qilib, biz loyihamiz uchun quyidagi rasmni olamiz:
Shuningdek, ro'yxatda Sonatype OSS-ga tegishli zaiflikni topishingiz mumkin:
Asosiy umidsizlik, Dependency Track endi Dependency Check xml hisobotlarini qabul qilmasligi edi. Dependency Check integratsiyasining so'nggi qo'llab-quvvatlanadigan versiyalari 1.0.0 - 4.0.2 edi, men esa 5.3.2 ni sinab ko'rdim.
shu yerda
Nexus IQ
Birinchidan boshlang
Nexus IQ-ni o'rnatish arxividan olingan
Konsolga kirganingizdan so'ng siz tashkilot va dastur yaratishingiz kerak.
Ko'rib turganingizdek, IQ holatini sozlash biroz murakkabroq, chunki biz turli "bosqichlar" (ishlab chiqish, qurish, bosqich, chiqarish) uchun qo'llaniladigan siyosatlarni yaratishimiz kerak. Bu ishlab chiqarishga yaqinroq quvur liniyasi orqali harakatlanayotgan zaif komponentlarni bloklash yoki ishlab chiquvchilar tomonidan yuklab olinganda Nexus Repo-ga kirishi bilanoq ularni bloklash uchun kerak.
Ochiq manba va korporativ o'rtasidagi farqni his qilish uchun keling, Nexus IQ orqali bir xil skanerdan o'tkazamiz. 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-interfeysida yaratilgan hisobotning URL manziliga amal qiling:
Bu yerda siz turli ahamiyatga egalik darajalarini ko‘rsatuvchi barcha siyosat buzilishlarini ko‘rishingiz mumkin (Ma’lumotdan Xavfsizlik darajasigacha). Komponentning yonidagi D harfi komponentning To'g'ridan-to'g'ri bog'liqligini, T harfi esa komponentning o'tishli bog'liqligini, ya'ni o'tishli ekanligini anglatadi.
Aytgancha, hisobot
Agar biz Nexus IQ siyosatining buzilishidan birini ochsak, biz komponent tavsifini, shuningdek, vaqt grafigida joriy versiyaning joylashishini, shuningdek, zaiflik qaysi nuqtada to'xtashini ko'rsatadigan Versiya grafigini ko'rishimiz mumkin. zaif bo'ling. Grafikdagi shamlarning balandligi ushbu komponentdan foydalanishning mashhurligini ko'rsatadi.
Agar siz zaifliklar bo'limiga o'tsangiz va CVE-ni kengaytirsangiz, siz ushbu zaiflikning tavsifi, bartaraf etish bo'yicha tavsiyalar, shuningdek, ushbu komponent nima uchun buzilganligi, ya'ni sinf mavjudligi bilan tanishishingiz mumkin. DiskFileitem.class
.
Js komponentlarini olib tashlagan holda, faqat uchinchi tomon Java komponentlari bilan bog'liq bo'lganlarni umumlashtiramiz. Qavslar ichida biz NVD dan tashqarida topilgan zaifliklar sonini ko'rsatamiz.
Jami Nexus IQ:
- Skanerlangan bog'liqliklar: 62
- Zaif qaramliklar: 16
- Topilgan zaifliklar: 42 (8 sonatip db)
Umumiy qaramlikni tekshirish:
- Skanerlangan bog'liqliklar: 47
- Zaif qaramliklar: 13
- Topilgan zaifliklar: 91 (14 sonatype oss)
Umumiy qaramlik treki:
- Skanerlangan bog'liqliklar: 59
- Zaif qaramliklar: 10
- Topilgan zaifliklar: 51 (1 sonatype oss)
Keyingi bosqichlarda biz olingan natijalarni tahlil qilamiz va ushbu zaifliklarning qaysi biri haqiqiy nuqson va qaysi biri noto'g'ri ijobiy ekanligini aniqlaymiz.
Rad etish
Ushbu sharh shubhasiz haqiqat emas. Muallif boshqalarning fonida alohida asbobni ajratib ko'rsatishni maqsad qilmagan. Ko'rib chiqishdan maqsad SCA vositalarining ishlash mexanizmlarini va ularning natijalarini tekshirish usullarini ko'rsatish edi.
Natijalarni solishtirish
Foydalanish shartlari:
Uchinchi tomon komponentlarining zaifliklari uchun noto'g'ri ijobiy:
- Aniqlangan komponentga CVE nomuvofiqligi
- Misol uchun, agar struts2 ramkasida zaiflik aniqlansa va asbob bu zaiflik taalluqli bo'lmagan struts-plitkalar ramkasining tarkibiy qismiga ishora qilsa, bu noto'g'ri ijobiydir.
- Komponentning aniqlangan versiyasiga CVE nomuvofiqligi
- Masalan, zaiflik python versiyasi > 3.5 bilan bog'langan va vosita 2.7 versiyasini zaif deb belgilaydi - bu noto'g'ri ijobiy, chunki aslida zaiflik faqat 3.x mahsulot filialiga tegishli
- CVE dublikati
- Misol uchun, agar SCA RCE ni faollashtiradigan CVE ni belgilasa, SCA ushbu RCE ta'sir qiladigan Cisco mahsulotlariga tegishli bo'lgan o'sha komponent uchun CVE ni belgilaydi. Bunday holda, u noto'g'ri ijobiy bo'ladi.
- Masalan, Spring-web komponentida CVE topildi, shundan so'ng SCA Spring Frameworkning boshqa komponentlarida bir xil CVE ga ishora qiladi, CVE esa boshqa komponentlar bilan hech qanday aloqasi yo'q. Bunday holda, u noto'g'ri ijobiy bo'ladi.
Tadqiqot ob'ekti DVJA Open Source loyihasi edi. Tadqiqot faqat java komponentlarini (jssiz) qamrab oldi.
Xulosa natijalari
Keling, aniqlangan zaifliklarni qo'lda tekshirish natijalariga to'g'ridan-to'g'ri murojaat qilaylik. Har bir CVE uchun to'liq hisobotni Ilovada topish mumkin.
Barcha zaifliklar uchun xulosalar:
Parametr
Nexus IQ
Tobelikni tekshirish
Tobelik treki
Jami zaifliklar aniqlandi
42
91
51
Noto'g'ri aniqlangan zaifliklar (noto'g'ri ijobiy)
2 (% 4.76)
62 (% 68,13)
29 (% 56.86)
Tegishli zaifliklar topilmadi (noto'g'ri salbiy)
10
20
27
Komponent bo'yicha xulosalar:
Parametr
Nexus IQ
Tobelikni tekshirish
Tobelik treki
Jami komponentlar aniqlandi
62
47
59
Jami zaif komponentlar
16
13
10
Noto'g'ri aniqlangan zaif komponentlar (noto'g'ri ijobiy)
1
5
0
Noto'g'ri aniqlangan zaif komponentlar (noto'g'ri ijobiy)
0
6
6
Noto'g'ri ijobiy va noto'g'ri manfiy zaifliklarning umumiy soniga nisbatini baholash uchun vizual grafiklarni tuzamiz. Komponentlar gorizontal ravishda belgilanadi va ularda aniqlangan zaifliklar vertikal ravishda belgilanadi.
Taqqoslash uchun, shunga o'xshash tadqiqot Sonatype jamoasi tomonidan OWASP Dependency Check yordamida 1531 komponentdan iborat loyihani sinovdan o'tkazdi. Ko'rib turganimizdek, shovqinning to'g'ri javoblarga nisbati bizning natijalarimiz bilan taqqoslanadi.
Manba:
Keling, ushbu natijalarning sababini tushunish uchun skanerlash natijalarimizdan ba'zi CVE'larni ko'rib chiqaylik.
Nizom
№1
Keling, birinchi navbatda Sonatype Nexus IQ haqidagi qiziqarli fikrlarni ko'rib chiqaylik.
Nexus IQ Spring Framework-da RCE-ni bir necha marta bajarish qobiliyati bilan seriyani yo'qotish bilan bog'liq muammoga ishora qiladi. Bahor-vebda CVE-2016-1000027: birinchi marta 3.0.5 va CVE-2011-2894 bahor kontekstida: 3.0.5 va bahor yadrosi: 3.0.5. Avvaliga, bir nechta CVElarda zaiflikning takrorlanishi borligi ko'rinadi. Chunki, agar siz NVD ma'lumotlar bazasida CVE-2016-1000027 va CVE-2011-2894 ga qarasangiz, hamma narsa aniq ko'rinadi.
tarkibiy
Zaiflik
spring-web: 3.0.5
CVE-2016-1000027
bahor konteksti: 3.0.5
CVE-2011-2894
bahor yadrosi: 3.0.5
CVE-2011-2894
tavsifi
tavsifi
CVE-2011-2894-ning o'zi juda mashhur. Hisobotda RemoteInvocationSerializingExporter
CVE-2011-2894 da zaiflik mavjud HttpInvokerServiceExporter
. Bu Nexus IQ bizga aytadi:
Biroq, NVD-da bunday narsa yo'q, shuning uchun Dependency Check va Dependency Track har biri noto'g'ri salbiy qabul qiladi.
Shuningdek, CVE-2011-2894 tavsifidan shuni tushunish mumkinki, zaiflik haqiqatdan ham bahor konteksti: 3.0.5 va bahor yadrosi: 3.0.5 da mavjud. Buning tasdig'ini ushbu zaiflikni topgan shaxsning maqolasida topish mumkin.
№2
tarkibiy
Zaiflik
natija
struts2-yadro: 2.3.30
CVE-2016-4003
FALSE
Agar biz CVE-2016-4003 zaifligini o'rgansak, u 2.3.28 versiyada tuzatilganligini tushunamiz, ammo Nexus IQ bu haqda bizga xabar beradi. Zaiflikning tavsifida eslatma mavjud:
Ya'ni, zaiflik faqat JRE ning eskirgan versiyasi bilan birgalikda mavjud bo'lib, ular bizni ogohlantirishga qaror qilishdi. Shunga qaramay, biz bu noto'g'ri ijobiy deb hisoblaymiz, garchi eng yomoni bo'lmasa ham.
3 raqami
tarkibiy
Zaiflik
natija
xwork-core: 2.3.30
CVE-2017-9804
HAQ
xwork-core: 2.3.30
CVE-2017-7672
FALSE
Agar biz CVE-2017-9804 va CVE-2017-7672 tavsiflarini ko'rib chiqsak, muammo nimada ekanligini tushunamiz. URLValidator class
, CVE-2017-9804 CVE-2017-7672 dan kelib chiqqan holda. Ikkinchi zaiflikning mavjudligi, uning zo'ravonligi Oliy darajaga ko'tarilganidan tashqari, hech qanday foydali yukni ko'tarmaydi, shuning uchun biz uni keraksiz shovqin deb hisoblashimiz mumkin.
Umuman olganda, Nexus IQ uchun boshqa noto'g'ri pozitivlar topilmadi.
№4
IQ ni boshqa yechimlardan ajratib turadigan bir qancha jihatlar mavjud.
tarkibiy
Zaiflik
natija
spring-web: 3.0.5
CVE-2020-5398
HAQ
NVDdagi CVEda aytilishicha, u faqat 5.2.x 5.2.3 dan oldingi, 5.1.x 5.1.13 dan oldingi va 5.0.x 5.0.16 dan oldingi versiyalari uchun amal qiladi, ammo agar Nexus IQ da CVE tavsifiga qarasak. , keyin biz quyidagilarni ko'ramiz:
Maslahatdan chetlanish haqida eslatma: Sonatype xavfsizlik tadqiqot guruhi ushbu zaiflik maslahatda aytilganidek 3.0.2.x emas, balki 5.0.RELEASE versiyasida joriy qilinganligini aniqladi.
Buning ortidan ushbu zaiflik uchun PoC keladi, u 3.0.5 versiyasida mavjudligini bildiradi.
Noto'g'ri salbiy Dependency Check va Dependency Track-ga yuboriladi.
№5
Keling, Dependency Check va Dependency Track uchun noto'g'ri musbatni ko'rib chiqaylik.
Bog'liqlik tekshiruvi shu bilan ajralib turadiki, u NVD-ning butun ramkasiga tegishli bo'lgan CVE-larni ushbu CVElar qo'llanilmaydigan komponentlarga aks ettiradi. Bu CVE-2012-0394, CVE-2013-2115, CVE-2014-0114, CVE-2015-0899, CVE-2015-2992, CVE-2016-1181, CVE-2016-1182 “check up”ga bog'liq ” struts-taglibga:1.3.8 va struts-tiles-1.3.8. Ushbu komponentlar CVE-da tasvirlangan narsalarga hech qanday aloqasi yo'q - so'rovni qayta ishlash, sahifani tekshirish va hokazo. Buning sababi, ushbu CVE va komponentlarning umumiyligi faqat ramkadir, shuning uchun Dependency Check uni zaiflik deb hisobladi.
Xuddi shu holat spring-tx: 3.0.5 va shunga o'xshash holat struts-core: 1.3.8. Struts-yadrosi uchun Dependency Check va Dependency Track juda ko'p zaifliklarni topdi, ular aslida alohida ramka bo'lgan struts2-yadro uchun amal qiladi. Bunday holda, Nexus IQ rasmni to'g'ri tushundi va u e'lon qilgan CVE'larda u struts-yadroning ishlash muddati tugashini va struts2-yadroga o'tish kerakligini ko'rsatdi.
№6
Ba'zi hollarda, aniq bog'liqlikni tekshirish va bog'liqlikni kuzatish xatosini izohlash adolatdan emas. Xususan, CVE-2013-4152, CVE-2013-6429, CVE-2013-6430, CVE-2013-7315, CVE-2014-0054, CVE-2014-0225, CVE-2014-0225, qaysi bog'liqlikni tekshirish Spring-core ga tegishli: 3.0.5 aslida spring-web ga tegishli: 3.0.5. Shu bilan birga, ushbu CVE'larning ba'zilari Nexus IQ tomonidan ham topilgan, ammo IQ ularni boshqa komponentga to'g'ri aniqlagan. Ushbu zaifliklar bahor yadrosida topilmaganligi sababli, ular printsipial doirada emasligini ta'kidlab bo'lmaydi va ochiq manbali vositalar bu zaifliklarni to'g'ri ko'rsatdi (ular biroz o'tkazib yuborilgan).
topilmalar
Ko'rib turganimizdek, aniqlangan zaifliklarning ishonchliligini qo'lda ko'rib chiqish orqali aniqlash aniq natijalarni bermaydi, shuning uchun bahsli masalalar paydo bo'ladi. Natijalar shuni ko'rsatadiki, Nexus IQ yechimi eng past noto'g'ri ijobiy ko'rsatkichga va eng yuqori aniqlikka ega.
Avvalo, bu Sonatype jamoasi o'z ma'lumotlar bazalarida NVD dan har bir CVE zaifligi tavsifini kengaytirganligi, komponentlarning ma'lum bir versiyasi uchun sinf yoki funktsiyaga qadar zaifliklarni ko'rsatganligi, qo'shimcha tadqiqotlar o'tkazishi bilan bog'liq (masalan, , dasturiy ta'minotning eski versiyalarida zaifliklarni tekshirish).
Natijalarga NVD-ga kiritilmagan, ammo SONATYPE belgisi bilan Sonatype ma'lumotlar bazasida mavjud bo'lgan zaifliklar ham muhim ta'sir ko'rsatadi. Hisobotga ko'ra
Natijada, Dependency Check ba'zi zaif komponentlarni yo'qotib, juda ko'p shovqin chiqaradi. Dependency Track kamroq shovqin ishlab chiqaradi va ko'p sonli komponentlarni aniqlaydi, bu veb-interfeysda ko'zni vizual ravishda shikastlamaydi.
Biroq, amaliyot shuni ko'rsatadiki, ochiq manba etuk DevSecOps sari birinchi qadamlarga aylanishi kerak. SCAni ishlab chiqishga integratsiyalashda siz o'ylashingiz kerak bo'lgan birinchi narsa - bu jarayonlar, ya'ni menejment va tegishli bo'limlar bilan birgalikda tashkilotingizdagi ideal jarayonlar qanday bo'lishi kerakligi haqida o'ylash. Tashkilotingiz uchun dastlab Dependency Check yoki Dependency Track biznesning barcha ehtiyojlarini qoplaydi va Enterprise yechimlari ishlab chiqilayotgan ilovalarning murakkabligi oshib borishi sababli mantiqiy davomi bo'lishi mumkin.
Ilova A: Komponent natijalari
Shartli belgilar:
- Komponentdagi yuqori - yuqori va tanqidiy darajadagi zaifliklar
- O'rta - Komponentdagi o'rtacha kritiklik darajasidagi zaifliklar
- TRUE - Haqiqiy ijobiy masala
- FALSE - noto'g'ri ijobiy masala
tarkibiy
Nexus IQ
Tobelikni tekshirish
Tobelik treki
natija
dom4j: 1.6.1
baland
baland
baland
HAQ
log4j yadrosi: 2.3
baland
baland
baland
HAQ
log4j: 1.2.14
baland
baland
-
HAQ
umumiy to'plamlar: 3.1
baland
baland
baland
HAQ
commons-fileupload: 1.3.2
baland
baland
baland
HAQ
Commons-beanutils: 1.7.0
baland
baland
baland
HAQ
commons-codec: 1:10
o'rta
-
-
HAQ
mysql-ulagichi-java: 5.1.42
baland
baland
baland
HAQ
bahor ifodasi: 3.0.5
baland
komponent topilmadi
HAQ
spring-web: 3.0.5
baland
komponent topilmadi
baland
HAQ
bahor konteksti: 3.0.5
o'rta
komponent topilmadi
-
HAQ
bahor yadrosi: 3.0.5
o'rta
baland
baland
HAQ
struts2-config-brauzer-plagin: 2.3.30
o'rta
-
-
HAQ
spring-tx: 3.0.5
-
baland
-
FALSE
struts-yadro: 1.3.8
baland
baland
baland
HAQ
xwork-core: 2.3.30
baland
-
-
HAQ
struts2 yadroli: 2.3.30
baland
baland
baland
HAQ
struts-taglib: 1.3.8
-
baland
-
FALSE
struts-plitkalar-1.3.8
-
baland
-
FALSE
Ilova B: Zaiflik natijalari
Shartli belgilar:
- Komponentdagi yuqori - yuqori va tanqidiy darajadagi zaifliklar
- O'rta - Komponentdagi o'rtacha kritiklik darajasidagi zaifliklar
- TRUE - Haqiqiy ijobiy masala
- FALSE - noto'g'ri ijobiy masala
tarkibiy
Nexus IQ
Tobelikni tekshirish
Tobelik treki
Zo'ravonlik
natija
izoh
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
baland
HAQ
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
baland
HAQ
log4j yadrosi: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
baland
HAQ
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
past
HAQ
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
baland
HAQ
-
CVE-2020-9488
-
past
HAQ
SONATYPE-2010-0053
-
-
baland
HAQ
umumiy to'plamlar: 3.1
-
CVE-2015-6420
CVE-2015-6420
baland
FALSE
RCE (OSSINDEX) nusxalari
-
CVE-2017-15708
CVE-2017-15708
baland
FALSE
RCE (OSSINDEX) nusxalari
SONATYPE-2015-0002
RCE (OSSINDEX)
RCE(OSSINDEX)
baland
HAQ
commons-fileupload: 1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
baland
HAQ
SONATYPE-2014-0173
-
-
o'rta
HAQ
Commons-beanutils: 1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
baland
HAQ
-
CVE-2019-10086
CVE-2019-10086
baland
FALSE
Zaiflik faqat 1.9.2+ versiyalari uchun amal qiladi
commons-codec: 1:10
SONATYPE-2012-0050
-
-
o'rta
HAQ
mysql-ulagichi-java: 5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
baland
HAQ
CVE-2019-2692
CVE-2019-2692
-
o'rta
HAQ
-
CVE-2020-2875
-
o'rta
FALSE
CVE-2019-2692 bilan bir xil zaiflik, ammo "hujumlar qo'shimcha mahsulotlarga sezilarli darajada ta'sir qilishi mumkin" eslatmasi bilan
-
CVE-2017-15945
-
baland
FALSE
MySQL-connector-java-ga tegishli emas
-
CVE-2020-2933
-
past
FALSE
CVE-2020-2934 dublikati
CVE-2020-2934
CVE-2020-2934
-
o'rta
HAQ
bahor ifodasi: 3.0.5
CVE-2018-1270
komponent topilmadi
-
baland
HAQ
CVE-2018-1257
-
-
o'rta
HAQ
spring-web: 3.0.5
CVE-2016-1000027
komponent topilmadi
-
baland
HAQ
CVE-2014-0225
-
CVE-2014-0225
baland
HAQ
CVE-2011-2730
-
-
baland
HAQ
-
-
CVE-2013-4152
o'rta
HAQ
CVE-2018-1272
-
-
baland
HAQ
CVE-2020-5398
-
-
baland
HAQ
IQ foydasiga yorqin misol: “Sonatype xavfsizlik tadqiqot guruhi ushbu zaiflik maslahatda aytilganidek 3.0.2.x emas, balki 5.0.RELEASE versiyasida joriy qilinganligini aniqladi.”
CVE-2013-6429
-
-
o'rta
HAQ
CVE-2014-0054
-
CVE-2014-0054
o'rta
HAQ
CVE-2013-6430
-
-
o'rta
HAQ
bahor konteksti: 3.0.5
CVE-2011-2894
komponent topilmadi
-
o'rta
HAQ
bahor yadrosi: 3.0.5
-
CVE-2011-2730
CVE-2011-2730
baland
HAQ
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
o'rta
HAQ
-
-
CVE-2013-4152
o'rta
FALSE
Spring-web-da bir xil zaiflikning dublikati
-
CVE-2013-4152
-
o'rta
FALSE
Zaiflik spring-web komponentiga tegishli
-
CVE-2013-6429
CVE-2013-6429
o'rta
FALSE
Zaiflik spring-web komponentiga tegishli
-
CVE-2013-6430
-
o'rta
FALSE
Zaiflik spring-web komponentiga tegishli
-
CVE-2013-7315
CVE-2013-7315
o'rta
FALSE
CVE-2013-4152 dan SPLIT. + Zaiflik spring-web komponentiga tegishli
-
CVE-2014-0054
CVE-2014-0054
o'rta
FALSE
Zaiflik spring-web komponentiga tegishli
-
CVE-2014-0225
-
baland
FALSE
Zaiflik spring-web komponentiga tegishli
-
-
CVE-2014-0225
baland
FALSE
Spring-web-da bir xil zaiflikning dublikati
-
CVE-2014-1904
CVE-2014-1904
o'rta
FALSE
Zaiflik spring-web-mvc komponentiga tegishli
-
CVE-2014-3625
CVE-2014-3625
o'rta
FALSE
Zaiflik spring-web-mvc komponentiga tegishli
-
CVE-2016-9878
CVE-2016-9878
baland
FALSE
Zaiflik spring-web-mvc komponentiga tegishli
-
CVE-2018-1270
CVE-2018-1270
baland
FALSE
Bahor-ifoda/bahor-xabarlar uchun
-
CVE-2018-1271
CVE-2018-1271
o'rta
FALSE
Zaiflik spring-web-mvc komponentiga tegishli
-
CVE-2018-1272
CVE-2018-1272
baland
HAQ
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
o'rta
HAQ
SONATYPE-2015-0327
-
-
past
HAQ
struts2-config-brauzer-plagin: 2.3.30
SONATYPE-2016-0104
-
-
o'rta
HAQ
spring-tx: 3.0.5
-
CVE-2011-2730
-
baland
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2011-2894
-
baland
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2013-4152
-
o'rta
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2013-6429
-
o'rta
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2013-6430
-
o'rta
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2013-7315
-
o'rta
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2014-0054
-
o'rta
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2014-0225
-
baland
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2014-1904
-
o'rta
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2014-3625
-
o'rta
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2016-9878
-
baland
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2018-1270
-
baland
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2018-1271
-
o'rta
FALSE
Zaiflik spring-tx ga xos emas
-
CVE-2018-1272
-
o'rta
FALSE
Zaiflik spring-tx ga xos emas
struts-yadro: 1.3.8
-
CVE-2011-5057 (OSSINDEX)
o'rta
FASLE
Struts 2 uchun zaiflik
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
baland
FALSE
Struts 2 uchun zaiflik
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
o'rta
FALSE
Struts 2 uchun zaiflik
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
baland
FALSE
Struts 2 uchun zaiflik
CVE-2016-1182
3VE-2016-1182
-
baland
HAQ
-
-
CVE-2011-5057
o'rta
FALSE
Struts 2 uchun zaiflik
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
baland
FALSE
Struts 2 uchun zaiflik
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
o'rta
FALSE
Struts 2 uchun zaiflik
CVE-2015-0899
CVE-2015-0899
-
baland
HAQ
-
CVE-2012-0394
CVE-2012-0394
o'rta
FALSE
Struts 2 uchun zaiflik
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
baland
FALSE
Struts 2 uchun zaiflik
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
baland
FALSE
Struts 2 uchun zaiflik
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
baland
FASLE
Struts 2 uchun zaiflik
-
CVE-2013-2115
CVE-2013-2115
baland
FASLE
Struts 2 uchun zaiflik
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
baland
FASLE
Struts 2 uchun zaiflik
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
baland
FASLE
Struts 2 uchun zaiflik
CVE-2014-0114
CVE-2014-0114
-
baland
HAQ
-
CVE-2015-2992
CVE-2015-2992
o'rta
FALSE
Struts 2 uchun zaiflik
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
baland
FALSE
Struts 2 uchun zaiflik
CVE-2016-1181
CVE-2016-1181
-
baland
HAQ
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
baland
FALSE
Struts 2 uchun zaiflik
xwork-core: 2.3.30
CVE-2017-9804
-
-
baland
HAQ
SONATYPE-2017-0173
-
-
baland
HAQ
CVE-2017-7672
-
-
baland
FALSE
CVE-2017-9804 dublikati
SONATYPE-2016-0127
-
-
baland
HAQ
struts2-yadro: 2.3.30
-
CVE-2016-6795
CVE-2016-6795
baland
HAQ
-
CVE-2017-9787
CVE-2017-9787
baland
HAQ
-
CVE-2017-9791
CVE-2017-9791
baland
HAQ
-
CVE-2017-9793
-
baland
FALSE
CVE-2018-1327 dublikati
-
CVE-2017-9804
-
baland
HAQ
-
CVE-2017-9805
CVE-2017-9805
baland
HAQ
CVE-2016-4003
-
-
o'rta
FALSE
Apache Struts 2.x dan 2.3.28 gacha, ya'ni 2.3.30 versiyasi uchun amal qiladi. Biroq, tavsifga asoslanib, agar JRE 2 yoki undan kamroq foydalanilgan bo'lsa, CVE Struts 1.7 ning har qanday versiyasi uchun amal qiladi. Ko'rinishidan, ular bizni bu erda qayta sug'urtalashga qaror qilishdi, lekin bu ko'proq FALSEga o'xshaydi
-
CVE-2018-1327
CVE-2018-1327
baland
HAQ
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
baland
HAQ
Equifax xakerlari 2017 yilda foydalangan zaiflikdan
CVE-2017-12611
CVE-2017-12611
-
baland
HAQ
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
baland
HAQ
struts-taglib: 1.3.8
-
CVE-2012-0394
-
o'rta
FALSE
2 yadroli struts uchun
-
CVE-2013-2115
-
baland
FALSE
2 yadroli struts uchun
-
CVE-2014-0114
-
baland
FALSE
Commons-beanutils uchun
-
CVE-2015-0899
-
baland
FALSE
Taglibga taalluqli emas
-
CVE-2015-2992
-
o'rta
FALSE
Struts2-yadroga ishora qiladi
-
CVE-2016-1181
-
baland
FALSE
Taglibga taalluqli emas
-
CVE-2016-1182
-
baland
FALSE
Taglibga taalluqli emas
struts-plitkalar-1.3.8
-
CVE-2012-0394
-
o'rta
FALSE
2 yadroli struts uchun
-
CVE-2013-2115
-
baland
FALSE
2 yadroli struts uchun
-
CVE-2014-0114
-
baland
FALSE
Commons-beanutils ostida
-
CVE-2015-0899
-
baland
FALSE
Plitkalarga taalluqli emas
-
CVE-2015-2992
-
o'rta
FALSE
2 yadroli struts uchun
-
CVE-2016-1181
-
baland
FALSE
Taglibga taalluqli emas
-
CVE-2016-1182
-
baland
FALSE
Taglibga taalluqli emas
Manba: www.habr.com