تتزايد أهمية تحليل مكونات برامج الطرف الثالث (تحليل تكوين البرامج الإنجليزية - SCA) في عملية التطوير مع إصدار تقارير سنوية حول نقاط الضعف في مكتبات المصدر المفتوح ، والتي تنشرها Synopsys و Sonatype و Snyk و White Source. وفقا للتقرير
واحدة من أكثر الحالات توضيحية
ستناقش هذه المقالة مسألة اختيار أداة لإجراء SCA من حيث جودة نتائج التحليل. سيتم أيضًا إجراء مقارنة وظيفية للأدوات. سنترك عملية التضمين في CI / CD وفرص التكامل للمنشورات اللاحقة. تم تقديم مجموعة واسعة من الأدوات بواسطة OWASP
كيف يعمل
فكر في الشكل الذي يبدو عليه CPE:
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
- جزء: إشارة إلى أن المكون ينتمي إلى التطبيق (أ) ، نظام التشغيل (س) ، الأجهزة (ح) (عنصر مطلوب)
- العلامة التجارية: اسم الشركة المصنعة للمنتج (عنصر مطلوب)
- المنتج: اسم المنتج (مطلوب)
- الاسم: إصدار المكون (عنصر مهمل)
- تحديث: تحديث الحزمة
- الطبعة: نسخة موروثة (عنصر مهمل)
- اللغات: اللغة المحددة في RFC-5646
- إصدار SW: إصدار البرنامج
- الهدف SW: بيئة البرنامج التي يتم فيها تشغيل المنتج
- الهدف HW: بيئة الأجهزة حيث يتم تشغيل المنتج
- الآخر: معلومات المورد أو المنتج
مثال على CPE يبدو كالتالي:
cpe:2.3:a:pivotal_software:spring_framework:3.0.0:*:*:*:*:*:*:*
تعني السلسلة أن CPE الإصدار 2.3 يصف مكون تطبيق من الشركة المصنعة pivotal_software
مع العنوان spring_framework
الإصدار 3.0.0. إذا فتحنا ثغرة أمنية
يتم استخدام عنوان URL أيضًا بواسطة أدوات SCA. تنسيق URL الخاص بالحزمة كما يلي:
scheme:type/namespace/name@version?qualifiers#subpath
- مخطط: سيكون هناك دائمًا "pkg" للإشارة إلى أن هذا عنوان URL للحزمة (مطلوب)
- النوع: "نوع" الحزمة ، أو "بروتوكول" الحزمة ، مثل maven و npm و nuget و gem و pypi وما إلى ذلك. (عنصر مطلوب)
- مساحة الاسم: بادئة اسم ما ، مثل معرف مجموعة Maven أو مالك صورة Docker أو مستخدم GitHub أو المؤسسة. اختياري ويعتمد على النوع.
- الاسم: اسم الحزمة (مطلوب)
- الاسم: إصدار الحزمة
- تصفيات: بيانات تأهيل إضافية للحزمة ، مثل نظام التشغيل ، والهندسة المعمارية ، والتوزيع ، وما إلى ذلك. العنصر الاختياري والنوع المحدد.
- المسار الفرعي: مسار إضافي في الحزمة بالنسبة إلى جذر الحزمة
على سبيل المثال:
pkg:golang/google.golang.org/genproto#googleapis/api/annotations
pkg:maven/org.apache.commons/[email protected]
pkg:pypi/[email protected]
مثال لما قد يبدو عليه BOM في تنسيق 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>
يمكن استخدام قائمة مكونات الصنف ليس فقط كمعلمات إدخال لتتبع التبعية ، ولكن أيضًا لجرد مكونات البرامج في سلسلة التوريد ، على سبيل المثال ، لتوفير البرامج للعميل. في عام 2014 ، تم اقتراح قانون للنظر فيه في الولايات المتحدة
بالعودة إلى SCA ، فإن Dependency Track لديه تكامل خارج الصندوق مع منصات الإخطار مثل Slack وأنظمة إدارة الثغرات الأمنية مثل Kenna Security. من الجدير بالذكر أيضًا أن Dependency Track يكتشف أيضًا الإصدارات القديمة من الحزم ويوفر معلومات حول التراخيص (بسبب دعم SPDX).
إذا تحدثنا تحديدًا عن جودة SCA ، فهناك فرق جوهري.
لا يقبل Dependency Track مشروعًا كمدخل ، ولكنه يقبل BOM. هذا يعني أنه إذا أردنا اختبار المشروع ، فسنحتاج أولاً إلى إنشاء bom.xml ، على سبيل المثال باستخدام CycloneDX. وبالتالي ، يعتمد مسار التبعية بشكل مباشر على CycloneDX. في نفس الوقت ، يسمح بالتخصيص. لذلك كتب فريق OZON
دعنا نلخص بعض الميزات الوظيفية ، وننظر أيضًا في اللغات المدعومة للتحليل:
لغة
نيكزس الذكاء
التحقق من التبعية
مسار التبعية
جافا
+
+
+
C / C ++
+
+
-
C#
+
+
-
.شبكة
+
+
+
إرلانج
-
-
+
جافا سكريبت (NodeJS)
+
+
+
PHP
+
+
+
بايثون
+
+
+
روبي
+
+
+
بيرل
-
-
-
سكالا
+
+
+
الهدف C
+
+
-
سويفت
+
+
-
R
+
-
-
Go
+
+
+
وظائف
وظائف
نيكزس الذكاء
التحقق من التبعية
مسار التبعية
القدرة على التأكد من أن المكونات المستخدمة في كود المصدر يتم فحصها للتأكد من نقاء الترخيص
+
-
+
القدرة على المسح والتحليل بحثًا عن نقاط الضعف ونظافة الترخيص لصور Docker
+ التكامل مع كلير
-
-
القدرة على تكوين نهج الأمان لاستخدام مكتبات مفتوحة المصدر
+
-
-
القدرة على مسح مستودعات مفتوحة المصدر للمكونات الضعيفة
+ RubyGems و Maven و NPM و Nuget و Pypi و Conan و Bower و Conda و Go و p2 و R و Yum و Helm و Docker و CocoaPods و Git LFS
-
+ Hex ، RubyGems ، Maven ، NPM ، Nuget ، Pypi
توافر فريق بحث متخصص
+
-
-
العملية في دائرة مغلقة
+
+
+
استخدام قواعد بيانات الطرف الثالث
+ قاعدة بيانات مغلقة Sonatype
+ Sonatype OSS ، NPM Public Advisors
+ Sonatype OSS و NPM Public Advisors و RetireJS و VulnDB ودعم قاعدة بيانات الثغرات الأمنية
القدرة على تصفية المكونات مفتوحة المصدر عند محاولة التحميل إلى حلقة التطوير وفقًا للسياسات المكونة
+
-
-
توصيات لإصلاح الثغرات الأمنية ، وتوافر روابط للإصلاح
+
+ - (يعتمد على الوصف في قواعد البيانات العامة)
+ - (يعتمد على الوصف في قواعد البيانات العامة)
ترتيب الثغرات المكتشفة حسب الأهمية
+
+
+
نموذج الوصول إلى الدور
+
-
+
دعم CLI
+
+
+ - (CycloneDX فقط)
اختيار / تصنيف نقاط الضعف وفقًا لمعايير محددة
+
-
+
لوحة القيادة حسب حالة التطبيق
+
-
+
إصدار التقرير بصيغة PDF
+
-
-
إنشاء تقرير بتنسيق JSONCSV
+
+
-
دعم اللغة الروسية
-
-
-
خيارات التكامل
التكامل
نيكزس الذكاء
التحقق من التبعية
مسار التبعية
التكامل مع LDAP / Active Directory
+
-
+
التكامل المستمر من الخيزران
+
-
-
التكامل مع نظام التكامل المستمر (التكامل المستمر) TeamCity
+
-
-
التكامل مع نظام التكامل المستمر (التكامل المستمر) GitLab
+
+ - (كمكوِّن إضافي لـ GitLab)
+
التكامل مع نظام التكامل المستمر (التكامل المستمر) جنكينز
+
+
+
توافر ملحقات IDE
+ IntelliJ و Eclipse و Visual Studio
-
-
دعم التكامل المخصص عبر خدمات الويب (API) للأداة
+
-
+
التحقق من التبعية
البداية الأولى
قم بتشغيل Dependency Check على تطبيق ضعيف بشكل متعمد
لهذا نستخدم
mvn org.owasp:dependency-check-maven:check
نتيجة لذلك ، سوف تظهر تبعية-check-report.html في الدليل الهدف.
لنفتح الملف. بعد ملخص للعدد الإجمالي للثغرات الأمنية ، يمكننا أن نرى معلومات حول نقاط الضعف بمستوى عالٍ من الخطورة والثقة ، تشير إلى الحزمة ، CPE ، وعدد من CVEs.
تتبع معلومات أكثر تفصيلاً ، على وجه الخصوص ، على أساس اتخاذ القرار (الدليل) ، أي قائمة مواد معينة.
يأتي بعد ذلك CPE و PURL ووصف CVE. بالمناسبة ، لم يتم إرفاق توصيات الإصلاح بسبب غيابها في قاعدة بيانات NVD.
لعرض نتائج الفحص بشكل منهجي ، يمكنك تكوين Nginx مع الحد الأدنى من الإعدادات ، أو إرسال العيوب المستلمة إلى نظام إدارة العيوب الذي يدعم موصلات التحقق من التبعية. على سبيل المثال ، Defect Dojo.
مسار التبعية
تركيب
يعد Dependency Track ، بدوره ، نظامًا أساسيًا على شبكة الإنترنت به رسوم بيانية للعرض ، لذلك لا توجد مشكلة حادة في تخزين العيوب في حل جهة خارجية.
هناك سيناريوهات مدعومة للتثبيت: Docker و WAR و Executable WAR.
البداية الأولى
انتقل إلى عنوان URL للخدمة قيد التشغيل. ندخل من خلال admin / admin ، ونغير تسجيل الدخول وكلمة المرور ، وبعد ذلك نصل إلى لوحة التحكم الرئيسية. الشيء التالي الذي سنفعله هو إنشاء مشروع لتطبيق اختبار Java بتنسيق الصفحة الرئيسية / المشاريع → إنشاء مشروع . لنأخذ DVJA كمثال.
نظرًا لأن تتبع التبعية لا يمكن أن يأخذ BOM إلا كمدخلات ، يجب استرداد BOM هذا. لنستخدم
mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom
نحصل على bom.xml ونحمل الملف في المشروع الذي تم إنشاؤه DVJA → التبعيات → تحميل BOM.
دعنا ننتقل إلى الإدارة ← المحللات. نحن نتفهم أنه لدينا فقط المحلل الداخلي ، والذي يتضمن NVD. دعونا أيضًا نربط مؤشر Sonatype OSS.
وهكذا نحصل على الصورة التالية لمشروعنا:
في القائمة أيضًا ، يمكنك العثور على ثغرة أمنية واحدة تنطبق على Sonatype OSS:
خيبة الأمل الرئيسية كانت أن تتبع التبعية لم يعد يقبل تقارير التحقق من التبعية xml. كانت أحدث الإصدارات المدعومة من تكامل Dependency Check 1.0.0 - 4.0.2 أثناء اختبار 5.3.2.
ها هو
نيكزس الذكاء
البداية الأولى
يتم تثبيت Nexus IQ من أرشيفات البرامج
بعد تسجيل الدخول إلى وحدة التحكم ، تحتاج إلى إنشاء منظمة وتطبيق.
كما ترى ، يعد التكوين في حالة معدل الذكاء أكثر تعقيدًا إلى حد ما ، لأننا نحتاج أيضًا إلى إنشاء سياسات قابلة للتطبيق على "المراحل" المختلفة (dev ، build ، stage ، release). يعد هذا ضروريًا لمنع المكونات الضعيفة أثناء اقترابها من خط أنابيب الإنتاج ، أو حظرها بمجرد دخولها إلى Nexus Repo عند تنزيلها بواسطة المطورين.
لتشعر بالفرق بين المصدر المفتوح والمؤسسة ، دعنا نجري نفس الفحص من خلال Nexus IQ بنفس الطريقة 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>
اتبع عنوان URL للتقرير الذي تم إنشاؤه في واجهة الويب الخاصة بـ IQ:
يمكنك هنا الاطلاع على جميع انتهاكات السياسة بمستويات خطورة مختلفة (من المعلومات إلى الأهمية الأمنية). يعني الحرف D الموجود بجوار المكون أن المكون هو تبعية مباشرة ، ويعني الحرف T الموجود بجوار المكون أن المكون تبعية انتقالية ، أي أنه متعد.
بالمناسبة ، التقرير
إذا فتحنا أحد انتهاكات سياسة Nexus IQ ، فيمكننا رؤية وصف المكون ، بالإضافة إلى مخطط الإصدار ، الذي يعرض موقع الإصدار الحالي على الرسم البياني الزمني ، وكذلك في أي نقطة تتوقف الثغرة الأمنية عن كن عرضة للخطر. يوضح ارتفاع الشموع على الرسم البياني مدى شيوع استخدام هذا المكون.
إذا انتقلت إلى قسم الثغرات الأمنية وفتحت CVE ، فيمكنك قراءة وصف هذه الثغرة الأمنية ، وتوصيات للمعالجة ، بالإضافة إلى سبب انتهاك هذا المكون ، أي وجود الفئة DiskFileitem.class
.
دعنا نلخص فقط مكونات Java التابعة لجهات خارجية عن طريق إزالة مكونات js. بين قوسين ، نشير إلى عدد تلك الثغرات الأمنية التي تم العثور عليها خارج NVD.
إجمالي نسبة الذكاء في Nexus:
- التبعيات الممسوحة ضوئيًا: 62
- التبعيات المستضعفة: 16
- تم العثور على ثغرات أمنية: 42 (8 سوناتيب ديسيبل)
فحص التبعية الإجمالية:
- التبعيات الممسوحة ضوئيًا: 47
- التبعيات المستضعفة: 13
- تم العثور على ثغرات أمنية: 91 (14 sonatype oss)
إجمالي مسار التبعية:
- التبعيات الممسوحة ضوئيًا: 59
- التبعيات المستضعفة: 10
- تم العثور على ثغرات أمنية: 51 (1 sonatype oss)
الخطوة التالية هي تحليل النتائج ومعرفة أي من نقاط الضعف هذه هو عيب حقيقي وأيها إيجابي خاطئ.
تنصل
هذه المراجعة ليست حقيقة لا جدال فيها. لم يكن للمؤلف هدف تحديد أداة منفصلة على خلفية الآخرين. كان الغرض من المراجعة هو إظهار كيفية عمل أدوات SCA وكيفية التحقق من نتائجها.
مقارنة النتائج
الشروط والأحكام:
الإيجابيات الكاذبة للثغرات الأمنية لمكونات الطرف الثالث هي:
- عدم تطابق CVE مع المكون المحدد
- على سبيل المثال ، إذا تم العثور على ثغرة أمنية في إطار عمل struts2 ، وكانت الأداة تشير إلى أحد مكونات إطار عمل بلاطات الدعامات التي لا تتأثر بهذه الثغرة الأمنية ، فهذه نتيجة إيجابية خاطئة
- عدم تطابق CVE مع إصدار المكون المكتشف
- على سبيل المثال ، ترتبط الثغرة الأمنية بإصدار python> 3.5 وتقوم الأداة بتمييز الإصدار 2.7 على أنه ضعيف - وهذا إيجابي كاذب ، نظرًا لأن الثغرة تنطبق فقط على فرع المنتج 3.x
- ازدواجية التطرف العنيف
- على سبيل المثال ، إذا أشارت SCA إلى CVE الذي يسمح بتنفيذ RCE ، فإن SCA تشير إلى نفس CVE الذي ينطبق على منتجات Cisco التي تخضع لهذا RCE. في هذه الحالة ، سيكون موجبًا كاذبًا.
- على سبيل المثال ، تم العثور على CVE في مكون Spring-web ، وبعد ذلك تشير SCA إلى نفس التطرف العنيف في المكونات الأخرى لإطار الربيع ، في حين أن مكافحة التطرف العنيف لا علاقة لها بالمكونات الأخرى. في هذه الحالة ، سيكون موجبًا كاذبًا.
موضوع البحث هو مشروع المصدر المفتوح DVJA. اشتملت الدراسة على مكونات جافا فقط (بدون js).
نتائج موجزة
دعنا ننتقل إلى نتيجة المراجعة اليدوية للثغرات الأمنية المحددة. يمكن العثور على تقرير كامل عن كل CVE في الملحق.
نتائج موجزة لجميع نقاط الضعف:
المعلمة
نيكزس الذكاء
التحقق من التبعية
مسار التبعية
تحديد إجمالي نقاط الضعف
42
91
51
نقاط الضعف التي تم تحديدها بشكل غير صحيح (إيجابية كاذبة)
2 (4.76٪)
62 (68,13٪)
29 (56.86٪)
لم يتم العثور على ثغرات أمنية ذات صلة (سلبية كاذبة)
10
20
27
النتائج الموجزة حسب المكونات:
المعلمة
نيكزس الذكاء
التحقق من التبعية
مسار التبعية
تم الكشف عن إجمالي المكونات
62
47
59
إجمالي المكونات المعرضة للخطر
16
13
10
تم تحديد المكونات الضعيفة بشكل غير صحيح (إيجابية كاذبة)
1
5
0
تم تحديد المكونات الضعيفة بشكل غير صحيح (إيجابية كاذبة)
0
6
6
دعونا نبني الرسوم البيانية المرئية لتقدير نسبة الإيجابية الزائفة والسلبية الزائفة إلى العدد الإجمالي للثغرات الأمنية. يتم تمييز المكونات أفقيًا ، ويتم تمييز الثغرات التي تم تحديدها فيها عموديًا.
في المقابل ، أجرى فريق Sonatype دراسة مماثلة لاختبار مشروع مكون من 1531 مكونًا باستخدام OWASP Dependency Check. كما نرى ، تتوافق نسبة الضوضاء إلى الاستجابات الصحيحة مع نتائجنا.
المصدر:
دعونا نلقي نظرة على بعض من CVEs من نتائج الفحص لدينا لفهم سبب هذه النتائج.
أكثر
№ 1
دعنا أولاً نحلل بعض النقاط المثيرة للاهتمام في Sonatype Nexus IQ.
يشير Nexus IQ إلى مشكلة إلغاء التسلسل مع القدرة على RCE عدة مرات في Spring Framework. CVE-2016-1000027 في spring-web: 3.0.5 لأول مرة ، و CVE-2011-2894 في سياق الربيع: 3.0.5 و spring-core: 3.0.5. في البداية ، يبدو أن هناك ازدواجية في نقاط الضعف عبر العديد من مكافحة التطرف العنيف. لذلك ، إذا نظرت إلى CVE-2016-1000027 و CVE-2011-2894 في قاعدة بيانات NVD ، فيبدو أن كل شيء واضح
عنصر
عالي التأثر
سبرينج ويب: 3.0.5
CVE-2016-1000027
سياق الربيع: 3.0.5
CVE-2011-2894
نواة الربيع: 3.0.5
CVE-2011-2894
وصف
وصف
CVE-2011-2894 معروف جيدًا بحد ذاته. في التقرير RemoteInvocationSerializingExporter
في CVE-2011-2894 ، تظهر الثغرة الأمنية في HttpInvokerServiceExporter
. هذا ما يخبرنا به Nexus IQ:
ومع ذلك ، لا يوجد شيء مثل هذا في NVD ، وهذا هو سبب تلقي فحص التبعية وتتبع التبعية سلبيات كاذبة.
يمكن أيضًا أن يُفهم من وصف CVE-2011-2894 أن الثغرة موجودة بالفعل في سياق الربيع: 3.0.5 و Spring-core: 3.0.5. يمكن العثور على تأكيد لهذا في المقالة من الشخص الذي وجد هذه الثغرة الأمنية.
№ 2
عنصر
عالي التأثر
نتيجة
2-النواة: 2.3.30
CVE-2016-4003
خاطئة
إذا قمنا بدراسة الثغرة الأمنية CVE-2016-4003 ، فسوف نفهم أنه تم إصلاحها في الإصدار 2.3.28 ، ومع ذلك يُعلمنا Nexus IQ بذلك. هناك ملاحظة في وصف الثغرة الأمنية:
أي أن الثغرة موجودة فقط بالاقتران مع نسخة قديمة من JRE ، والتي قرروا تحذيرنا بشأنها. ومع ذلك ، فإننا نعتبرها إيجابية كاذبة ، وإن لم تكن أفظعها.
№ 3
عنصر
عالي التأثر
نتيجة
xwork-core: 2.3.30
CVE-2017-9804
الحقيقة
xwork-core: 2.3.30
CVE-2017-7672
خاطئة
إذا نظرنا إلى وصف CVE-2017-9804 و CVE-2017-7672 ، فسوف نفهم أن المشكلة في URLValidator class
، مع CVE-2017-9804 النابع من CVE-2017-7672. لا يحمل وجود الثغرة الأمنية الثانية أي حمولة ، باستثناء أن شدتها قد نمت إلى عالية ، لذلك يمكن اعتبار ذلك ضوضاء غير ضرورية.
بشكل عام ، لم يتم العثور على إيجابيات خاطئة أخرى لـ Nexus IQ.
№ 4
هناك بعض الأشياء التي تجعل معدل الذكاء يبرز من الحلول الأخرى.
عنصر
عالي التأثر
نتيجة
سبرينج ويب: 3.0.5
CVE-2020-5398
الحقيقة
تنص CVE في NVD على أنها تنطبق فقط على الإصدارات 5.2.x إلى 5.2.3 و 5.1.x إلى 5.1.13 والإصدارات 5.0.x إلى 5.0.16 ، ومع ذلك ، إذا نظرنا إلى وصف CVE في Nexus IQ ، ثم سنرى ما يلي:
إشعار انحراف استشاري: اكتشف فريق البحث الأمني في Sonatype أن هذه الثغرة الأمنية قد تم تقديمها في الإصدار 3.0.2.RELEASE وليس 5.0.x كما هو مذكور في الاستشارة.
ويتبع ذلك إثبات PoC لهذه الثغرة الأمنية ، والذي ينص على أنه موجود في الإصدار 3.0.5.
يتم إرسال السلبية الكاذبة إلى التحقق من التبعية ومسار التبعية.
№ 5
لنلقِ نظرة على النتائج الإيجابية الخاطئة لفحص التبعية ومسار التبعية.
يبرز فحص التبعية بشكل خاص لأنه يعكس تلك CVEs التي تنطبق على إطار العمل بأكمله في NVD لتلك المكونات التي لا تنطبق عليها CVEs. ينطبق هذا على CVE-2012-0394 ، CVE-2013-2115 ، CVE-definitely2014 ، CVE-0114-2015 ، CVE-0899-2015 ، CVE-2992-2016 ، CVE-1181-2016 ، والتي تحقق التبعية "مثبتة" "إلى الدعامات- تاجليب: 1182 و الدعامات- البلاط- 1.3.8. لا علاقة لهذه المكونات بما هو موصوف في CVE - معالجة الطلب والتحقق من صحة الصفحة وما إلى ذلك. ويرجع ذلك إلى حقيقة أن إطار العمل هو الوحيد المشترك بين عناصر مكافحة التطرف العنيف هذه والمكونات ، ولهذا السبب اعتبر فحص التبعية هذه ثغرة أمنية.
نفس الوضع مع spring-tx: 3.0.5 ، وحالة مماثلة مع الدعامات الأساسية: 1.3.8. بالنسبة إلى struts-core ، وجد التحقق من التبعية ومسار التبعية الكثير من الثغرات الأمنية التي تنطبق بالفعل على struts2-core ، والتي تعد في الأساس إطار عمل منفصل. في هذه الحالة ، فهم Nexus IQ الصورة بشكل صحيح وفي تلك CVEs التي أصدرها ، أشار إلى أن الدعامات الأساسية قد انتهت وأنه كان من الضروري التبديل إلى struts2-core.
№ 6
في بعض الحالات ، من غير العدل معالجة خطأ صريح في فحص التبعية وتتبع التبعية. على وجه الخصوص CVE-2013-4152 ، CVE-2013-6429 ، CVE-2013-6430 ، CVE-2013-7315 ، CVE-2014-0054 ، CVE-2014-0225 ، CVE -2014 وهي فحص التبعية ومسار التبعية يشير إلى Spring-core: 0225 تشير في الواقع إلى spring-web: 3.0.5. في الوقت نفسه ، وجد Nexus IQ بعضًا من هذه التطرف العنيف ، ومع ذلك ، حددها معدل الذكاء بشكل صحيح لمكون آخر. انطلاقاً من حقيقة أن هذه الثغرات لم يتم العثور عليها في نواة الربيع ، لا يمكن القول بأنها ليست في إطار العمل من حيث المبدأ ، وقد أشارت أدوات المصدر المفتوح بشكل صحيح إلى هذه الثغرات (لقد فاتتهم قليلاً).
النتائج
كما نرى ، فإن تحديد موثوقية الثغرات الأمنية التي تم تحديدها من خلال المراجعة اليدوية لا يعطي نتائج واضحة ، مما يسبب مشاكل مثيرة للجدل. النتائج هي أن Nexus IQ يحتوي على أقل معدل إيجابي خاطئ وأعلى دقة.
بادئ ذي بدء ، يرجع هذا إلى حقيقة أن فريق Sonatype قام بتوسيع الوصف لكل ثغرة أمنية في مواجهة التطرف العنيف من NVD في قواعد البيانات الخاصة بهم ، مما يشير إلى فئة أو وظيفة الثغرة الأمنية لإصدار معين من المكون ، بعد تنفيذ عمليات إضافية البحث (على سبيل المثال ، عن طريق التحقق من الثغرات الأمنية في إصدارات البرامج القديمة).
تلعب الثغرات الأمنية التي لم يتم تضمينها في NVD تأثيرًا مهمًا على النتائج ، ولكنها مع ذلك موجودة في قاعدة بيانات Sonatype التي تحمل علامة SONATYPE. وفقا للتقرير
نتيجة لذلك ، يُصدر فحص التبعية الكثير من الضوضاء ، ويفقد بعض المكونات الضعيفة. تنتج Dependency Track ضوضاء أقل وتكتشف عددًا كبيرًا من المكونات ، والتي لا تؤذي العينين في واجهة الويب.
ومع ذلك ، تظهر الممارسة أن المصدر المفتوح هو الذي يجب أن يصبح الخطوات الأولى نحو DevSecOps ناضجة. أول شيء يجب التفكير فيه لتضمين SCA في التنمية هو العمليات ، أي التفكير مع الإدارة والإدارات ذات الصلة حول الشكل الذي يجب أن تبدو عليه العمليات المثالية في مؤسستك. قد يتضح أنه بالنسبة لمؤسستك ، في البداية ، سيغطي فحص التبعية أو تتبع التبعية جميع احتياجات العمل ، وستكون حلول المؤسسات استمرارًا منطقيًا بسبب التعقيد المتزايد للتطبيقات التي يتم تطويرها.
الملحق أ. نتائج المكونات
الرموز:
- نقاط الضعف عالية المستوى والحرجة في المكون
- ثغرات أمنية متوسطة الخطورة في المكون
- صحيح - قضية إيجابية حقيقية
- خطأ - قضية إيجابية كاذبة
عنصر
نيكزس الذكاء
التحقق من التبعية
مسار التبعية
نتيجة
dom4j: 1.6.1
مرتفع
مرتفع
مرتفع
الحقيقة
log4j- النواة: 2.3
مرتفع
مرتفع
مرتفع
الحقيقة
log4j: 1.2.14
مرتفع
مرتفع
-
الحقيقة
المجموعات المشتركة: 3.1
مرتفع
مرتفع
مرتفع
الحقيقة
تحميل ملف مشترك: 1.3.2
مرتفع
مرتفع
مرتفع
الحقيقة
كومونس بينوتيلز: 1.7.0
مرتفع
مرتفع
مرتفع
الحقيقة
الكودك المشترك: 1: 10
متوسط
-
-
الحقيقة
mysql- رابط- جافا: 5.1.42
مرتفع
مرتفع
مرتفع
الحقيقة
التعبير الربيعي: 3.0.5
مرتفع
المكون غير موجود
الحقيقة
سبرينج ويب: 3.0.5
مرتفع
المكون غير موجود
مرتفع
الحقيقة
سياق الربيع: 3.0.5
متوسط
المكون غير موجود
-
الحقيقة
نواة الربيع: 3.0.5
متوسط
مرتفع
مرتفع
الحقيقة
struts2-config-browser-plugin: 2.3.30
متوسط
-
-
الحقيقة
الربيع- TX: 3.0.5
-
مرتفع
-
خاطئة
الدعامات الأساسية: 1.3.8
مرتفع
مرتفع
مرتفع
الحقيقة
xwork-core: 2.3.30
مرتفع
-
-
الحقيقة
2-النواة: 2.3.30
مرتفع
مرتفع
مرتفع
الحقيقة
الدعامات تاجليب: 1.3.8
-
مرتفع
-
خاطئة
الدعامات والبلاط 1.3.8
-
مرتفع
-
خاطئة
الملحق ب. نتائج الثغرات الأمنية
الرموز:
- نقاط الضعف عالية المستوى والحرجة في المكون
- ثغرات أمنية متوسطة الخطورة في المكون
- صحيح - قضية إيجابية حقيقية
- خطأ - قضية إيجابية كاذبة
عنصر
نيكزس الذكاء
التحقق من التبعية
مسار التبعية
خطورة
نتيجة
تعليق
dom4j: 1.6.1
CVE-2018-1000632
CVE-2018-1000632
CVE-2018-1000632
مرتفع
الحقيقة
CVE-2020-10683
CVE-2020-10683
CVE-2020-10683
مرتفع
الحقيقة
log4j- النواة: 2.3
CVE-2017-5645
CVE-2017-5645
CVE-2017-5645
مرتفع
الحقيقة
CVE-2020-9488
CVE-2020-9488
CVE-2020-9488
منخفض
الحقيقة
log4j: 1.2.14
CVE-2019-17571
CVE-2019-17571
-
مرتفع
الحقيقة
-
CVE-2020-9488
-
منخفض
الحقيقة
سوناتيب 2010-0053
-
-
مرتفع
الحقيقة
المجموعات المشتركة: 3.1
-
CVE-2015-6420
CVE-2015-6420
مرتفع
خاطئة
تكرارات RCE (OSSINDEX)
-
CVE-2017-15708
CVE-2017-15708
مرتفع
خاطئة
تكرارات RCE (OSSINDEX)
سوناتيب 2015-0002
آر سي إي (أوسينديكس)
RCE (OSSINDEX)
مرتفع
الحقيقة
تحميل ملف مشترك: 1.3.2
CVE-2016-1000031
CVE-2016-1000031
CVE-2016-1000031
مرتفع
الحقيقة
سوناتيب 2014-0173
-
-
متوسط
الحقيقة
كومونس بينوتيلز: 1.7.0
CVE-2014-0114
CVE-2014-0114
CVE-2014-0114
مرتفع
الحقيقة
-
CVE-2019-10086
CVE-2019-10086
مرتفع
خاطئة
تنطبق الثغرة الأمنية فقط على الإصدارات 1.9.2+
الكودك المشترك: 1: 10
سوناتيب 2012-0050
-
-
متوسط
الحقيقة
mysql- رابط- جافا: 5.1.42
CVE-2018-3258
CVE-2018-3258
CVE-2018-3258
مرتفع
الحقيقة
CVE-2019-2692
CVE-2019-2692
-
متوسط
الحقيقة
-
CVE-2020-2875
-
متوسط
خاطئة
نفس الثغرة الأمنية مثل CVE-2019-2692 ، ولكن مع الإضافة "قد تؤثر الهجمات بشكل كبير على المنتجات الإضافية"
-
CVE-2017-15945
-
مرتفع
خاطئة
لا ينطبق على mysql-connector-java
-
CVE-2020-2933
-
منخفض
خاطئة
نسخة طبق الأصل من CVE-2020-2934
CVE-2020-2934
CVE-2020-2934
-
متوسط
الحقيقة
التعبير الربيعي: 3.0.5
CVE-2018-1270
المكون غير موجود
-
مرتفع
الحقيقة
CVE-2018-1257
-
-
متوسط
الحقيقة
سبرينج ويب: 3.0.5
CVE-2016-1000027
المكون غير موجود
-
مرتفع
الحقيقة
CVE-2014-0225
-
CVE-2014-0225
مرتفع
الحقيقة
CVE-2011-2730
-
-
مرتفع
الحقيقة
-
-
CVE-2013-4152
متوسط
الحقيقة
CVE-2018-1272
-
-
مرتفع
الحقيقة
CVE-2020-5398
-
-
مرتفع
الحقيقة
مثال على ذلك لصالح IQ: "اكتشف فريق البحث الأمني Sonatype أن هذه الثغرة الأمنية قد تم تقديمها في الإصدار 3.0.2.RELEASE وليس 5.0.x كما هو مذكور في الاستشارة."
CVE-2013-6429
-
-
متوسط
الحقيقة
CVE-2014-0054
-
CVE-2014-0054
متوسط
الحقيقة
CVE-2013-6430
-
-
متوسط
الحقيقة
سياق الربيع: 3.0.5
CVE-2011-2894
المكون غير موجود
-
متوسط
الحقيقة
نواة الربيع: 3.0.5
-
CVE-2011-2730
CVE-2011-2730
مرتفع
الحقيقة
CVE-2011-2894
CVE-2011-2894
CVE-2011-2894
متوسط
الحقيقة
-
-
CVE-2013-4152
متوسط
خاطئة
نسخة مكررة من نفس الثغرة الأمنية في سبرينغ ويب
-
CVE-2013-4152
-
متوسط
خاطئة
تتعلق الثغرة الأمنية بمكوِّن ربيع الويب
-
CVE-2013-6429
CVE-2013-6429
متوسط
خاطئة
تتعلق الثغرة الأمنية بمكوِّن ربيع الويب
-
CVE-2013-6430
-
متوسط
خاطئة
تتعلق الثغرة الأمنية بمكوِّن ربيع الويب
-
CVE-2013-7315
CVE-2013-7315
متوسط
خاطئة
انقسام من CVE-2013-4152. + تتعلق الثغرة الأمنية بمكوِّن ربيع الويب
-
CVE-2014-0054
CVE-2014-0054
متوسط
خاطئة
تتعلق الثغرة الأمنية بمكوِّن ربيع الويب
-
CVE-2014-0225
-
مرتفع
خاطئة
تتعلق الثغرة الأمنية بمكوِّن ربيع الويب
-
-
CVE-2014-0225
مرتفع
خاطئة
نسخة مكررة من نفس الثغرة الأمنية في سبرينغ ويب
-
CVE-2014-1904
CVE-2014-1904
متوسط
خاطئة
تتعلق الثغرة الأمنية بمكوِّن Spring-web-mvc
-
CVE-2014-3625
CVE-2014-3625
متوسط
خاطئة
تتعلق الثغرة الأمنية بمكوِّن Spring-web-mvc
-
CVE-2016-9878
CVE-2016-9878
مرتفع
خاطئة
تتعلق الثغرة الأمنية بمكوِّن Spring-web-mvc
-
CVE-2018-1270
CVE-2018-1270
مرتفع
خاطئة
لربيع التعبير / رسائل الربيع
-
CVE-2018-1271
CVE-2018-1271
متوسط
خاطئة
تتعلق الثغرة الأمنية بمكوِّن Spring-web-mvc
-
CVE-2018-1272
CVE-2018-1272
مرتفع
الحقيقة
CVE-2014-3578
CVE-2014-3578 (OSSINDEX)
CVE-2014-3578
متوسط
الحقيقة
سوناتيب 2015-0327
-
-
منخفض
الحقيقة
struts2-config-browser-plugin: 2.3.30
سوناتيب 2016-0104
-
-
متوسط
الحقيقة
الربيع- TX: 3.0.5
-
CVE-2011-2730
-
مرتفع
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2011-2894
-
مرتفع
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2013-4152
-
متوسط
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2013-6429
-
متوسط
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2013-6430
-
متوسط
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2013-7315
-
متوسط
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2014-0054
-
متوسط
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2014-0225
-
مرتفع
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2014-1904
-
متوسط
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2014-3625
-
متوسط
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2016-9878
-
مرتفع
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2018-1270
-
مرتفع
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2018-1271
-
متوسط
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
-
CVE-2018-1272
-
متوسط
خاطئة
لا تنطبق الثغرة الأمنية على spring-tx
الدعامات الأساسية: 1.3.8
-
CVE-2011-5057 (OSSINDEX)
متوسط
سهل
القابلية للتأثر بالدعامات 2
-
CVE-2012-0391 (OSSINDEX)
CVE-2012-0391
مرتفع
خاطئة
القابلية للتأثر بالدعامات 2
-
CVE-2014-0094 (OSSINDEX)
CVE-2014-0094
متوسط
خاطئة
القابلية للتأثر بالدعامات 2
-
CVE-2014-0113 (OSSINDEX)
CVE-2014-0113
مرتفع
خاطئة
القابلية للتأثر بالدعامات 2
CVE-2016-1182
3VE-2016-1182
-
مرتفع
الحقيقة
-
-
CVE-2011-5057
متوسط
خاطئة
القابلية للتأثر بالدعامات 2
-
CVE-2012-0392 (OSSINDEX)
CVE-2012-0392
مرتفع
خاطئة
القابلية للتأثر بالدعامات 2
-
CVE-2012-0393 (OSSINDEX)
CVE-2012-0393
متوسط
خاطئة
القابلية للتأثر بالدعامات 2
CVE-2015-0899
CVE-2015-0899
-
مرتفع
الحقيقة
-
CVE-2012-0394
CVE-2012-0394
متوسط
خاطئة
القابلية للتأثر بالدعامات 2
-
CVE-2012-0838 (OSSINDEX)
CVE-2012-0838
مرتفع
خاطئة
القابلية للتأثر بالدعامات 2
-
CVE-2013-1965 (OSSINDEX)
CVE-2013-1965
مرتفع
خاطئة
القابلية للتأثر بالدعامات 2
-
CVE-2013-1966 (OSSINDEX)
CVE-2013-1966
مرتفع
سهل
القابلية للتأثر بالدعامات 2
-
CVE-2013-2115
CVE-2013-2115
مرتفع
سهل
القابلية للتأثر بالدعامات 2
-
CVE-2013-2134 (OSSINDEX)
CVE-2013-2134
مرتفع
سهل
القابلية للتأثر بالدعامات 2
-
CVE-2013-2135 (OSSINDEX)
CVE-2013-2135
مرتفع
سهل
القابلية للتأثر بالدعامات 2
CVE-2014-0114
CVE-2014-0114
-
مرتفع
الحقيقة
-
CVE-2015-2992
CVE-2015-2992
متوسط
خاطئة
القابلية للتأثر بالدعامات 2
-
CVE-2016-0785 (OSSINDEX)
CVE-2016-0785
مرتفع
خاطئة
القابلية للتأثر بالدعامات 2
CVE-2016-1181
CVE-2016-1181
-
مرتفع
الحقيقة
-
CVE-2016-4003 (OSSINDEX)
CVE-2016-4003
مرتفع
خاطئة
القابلية للتأثر بالدعامات 2
xwork-core: 2.3.30
CVE-2017-9804
-
-
مرتفع
الحقيقة
سوناتيب 2017-0173
-
-
مرتفع
الحقيقة
CVE-2017-7672
-
-
مرتفع
خاطئة
مضاعفة CVE-2017-9804
سوناتيب 2016-0127
-
-
مرتفع
الحقيقة
2-النواة: 2.3.30
-
CVE-2016-6795
CVE-2016-6795
مرتفع
الحقيقة
-
CVE-2017-9787
CVE-2017-9787
مرتفع
الحقيقة
-
CVE-2017-9791
CVE-2017-9791
مرتفع
الحقيقة
-
CVE-2017-9793
-
مرتفع
خاطئة
نسخة طبق الأصل من CVE-2018-1327
-
CVE-2017-9804
-
مرتفع
الحقيقة
-
CVE-2017-9805
CVE-2017-9805
مرتفع
الحقيقة
CVE-2016-4003
-
-
متوسط
خاطئة
ينطبق على Apache Struts 2.x حتى 2.3.28 ، وهو الإصدار 2.3.30. ومع ذلك ، بناءً على الوصف ، تعمل CVE على جميع إصدارات Struts 2 طالما يتم استخدام JRE 1.7 وما يليه. من الواضح أنهم قرروا إعادة تأميننا هنا ، لكن يبدو الأمر أشبه بالخطأ
-
CVE-2018-1327
CVE-2018-1327
مرتفع
الحقيقة
CVE-2017-5638
CVE-2017-5638
CVE-2017-5638
مرتفع
الحقيقة
نفس الثغرة الأمنية التي استغلها المهاجمون في Equifax في عام 2017
CVE-2017-12611
CVE-2017-12611
-
مرتفع
الحقيقة
CVE-2018-11776
CVE-2018-11776
CVE-2018-11776
مرتفع
الحقيقة
الدعامات تاجليب: 1.3.8
-
CVE-2012-0394
-
متوسط
خاطئة
للدعامات 2 النواة
-
CVE-2013-2115
-
مرتفع
خاطئة
للدعامات 2 النواة
-
CVE-2014-0114
-
مرتفع
خاطئة
للمشاعات - الفول السوداني
-
CVE-2015-0899
-
مرتفع
خاطئة
لا علاقة لها تاجليب
-
CVE-2015-2992
-
متوسط
خاطئة
المتعلقة بالدعامات 2 النواة
-
CVE-2016-1181
-
مرتفع
خاطئة
لا علاقة لها تاجليب
-
CVE-2016-1182
-
مرتفع
خاطئة
لا علاقة لها تاجليب
الدعامات والبلاط 1.3.8
-
CVE-2012-0394
-
متوسط
خاطئة
للدعامات 2 النواة
-
CVE-2013-2115
-
مرتفع
خاطئة
للدعامات 2 النواة
-
CVE-2014-0114
-
مرتفع
خاطئة
تحت الفول السوداني
-
CVE-2015-0899
-
مرتفع
خاطئة
لا ينطبق على البلاط
-
CVE-2015-2992
-
متوسط
خاطئة
للدعامات 2 النواة
-
CVE-2016-1181
-
مرتفع
خاطئة
لا علاقة لها تاجليب
-
CVE-2016-1182
-
مرتفع
خاطئة
لا علاقة لها تاجليب
المصدر: www.habr.com