Dependency-Check هي أداة لتحليل تكوين البرامج (SCA) تحاول اكتشاف نقاط الضعف التي تم الكشف عنها علنًا والمضمنة في تبعيات المشروع. يقوم بذلك عن طريق تحديد ما إذا كان هناك معرف تعداد النظام الأساسي المشترك (CPE) لتبعية معينة. إذا تم العثور عليه، فسيتم إنشاء تقرير يرتبط بإدخالات CVE المرتبطة.
يمكن العثور على الوثائق والروابط لإصدارات الإنتاج الثنائية على صفحات جيثب. بالإضافة إلى ذلك، يمكن العثور على مزيد من المعلومات حول البنية وطرق توسيع نطاق التحقق من التبعية على موقع wiki.
يستخدم هذا المنتج NVD API ولكنه غير معتمد أو معتمد من قبل NVD.
مطلوب الآن Java 11 لتشغيل التحقق من التبعية 11.0.0 أو أعلى
ترقية قاعدة البيانات H2
11.0.0 يحتوي على تغييرات جذرية باستخدام قاعدة بيانات H2 المحلية. سيتم التنزيل الكامل لبيانات NVD. لاحظ أنه إذا كنت تستخدم دليل بيانات مشترك، فإن ملف قاعدة بيانات h2 غير متوافق مع الإصدارات الأقدم من فحص التبعية. إذا واجهت مشكلات، فقد تحتاج إلى إجراء عملية تطهير:
./gradlew dependencyCheckPurge
mvn org.owasp:dependency-check-maven:9.0.0:purge
dependency-check.sh --purge
الترقية إلى 10.0.2 أو الأحدث إلزامية
تتسبب الإصدارات الأقدم من فحص التبعية في حدوث العديد من الطلبات المكررة التي تنتهي بفشل المعالجة مما يتسبب في تحميل غير ضروري على NVD API. يستخدم Dependency-check 10.0.2 رأس User-Agent
المحدث الذي سيسمح لـ NVD بحظر المكالمات من العميل الأقدم.
لقد انتقل التحقق من التبعية من استخدام خلاصة بيانات NVD إلى NVD API. يتم تشجيع مستخدمي التحقق من التبعية بشدة على الحصول على مفتاح NVD API؛ راجع https://nvd.nist.gov/developers/request-an-api-key بدون NVD API Key ستكون تحديثات التحقق من التبعية بطيئة للغاية . يرجى الاطلاع على الوثائق الخاصة بتكاملات cli أو maven أو gradle أو ant حول كيفية تعيين مفتاح NVD API.
فرضت NVD API حدودًا للمعدلات. إذا كنت تستخدم API KEY واحدًا وحدثت عدة إصدارات، فقد تصل إلى الحد الأقصى للمعدل وتتلقى أخطاء 403. في بيئة CI يجب على المرء استخدام استراتيجية التخزين المؤقت.
مع الإصدار 9.0.0، قد يواجه المستخدمون مشكلات تتعلق باستثناءات NoSuchMethodError
بسبب تحليل التبعية. إذا واجهت هذه المشكلة، فستحتاج إلى تثبيت بعض التبعيات المتعدية للتحقق من التبعية في إصدارات معينة. على سبيل المثال:
/buildSrc/build.gradle
dependencies {
constraints {
// org.owasp.dependencycheck needs at least this version of jackson. Other plugins pull in older versions..
add( " implementation " , " com.fasterxml.jackson:jackson-bom:2.16.1 " )
// org.owasp.dependencycheck needs these versions. Other plugins pull in older versions..
add( " implementation " , " org.apache.commons:commons-lang3:3.14.0 " )
add( " implementation " , " org.apache.commons:commons-text:1.11.0 " )
}
}
الحد الأدنى لإصدار جافا: Java 11
يتطلب فحص التبعية OWASP الوصول إلى العديد من الموارد المستضافة خارجيًا. لمزيد من المعلومات، راجع الوصول إلى الإنترنت مطلوب.
من أجل تحليل بعض مكدسات التكنولوجيا، قد يتطلب فحص التبعية تثبيت أدوات تطوير أخرى. قد تكون بعض التحليلات المذكورة أدناه تجريبية وتتطلب تمكين المحللين التجريبيين.
go
أن يتم تثبيته.Elixir
يتطلب mix_audit
.npm
و pnpm
yarn
تثبيت npm
أو pnpm
أو yarn
.audit
الخاصة بكل منها.bundle-audit
، والذي يجب تثبيته. للحصول على إرشادات حول استخدام مكون Jenkins الإضافي، يرجى الاطلاع على صفحة البرنامج الإضافي OWASP Dependency-Check Plugin.
يمكن العثور على تعليمات أكثر تفصيلاً على صفحات جيثب للتحقق من التبعية. يمكن تنزيل أحدث سطر أوامر من github في قسم الإصدارات.
تنزيل الإصدار الأخير:
$ VERSION=$(curl -s https://jeremylong.github.io/DependencyCheck/current.txt)
$ curl -Ls "https://github.com/jeremylong/DependencyCheck/releases/download/v$VERSION/dependency-check-$VERSION-release.zip" --output dependency-check.zip
على * لا شىء
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
على ويندوز
> .bindependency-check.bat -h
> .bindependency-check.bat --out . --scan [path to jar files to be scanned]
على نظام Mac المزود بـ Homebrew Note - سيحتاج مستخدمو homebrew الذين يقومون بالترقية من 5.x إلى 6.0.0 إلى تشغيل dependency-check.sh --purge
.
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --out . --scan [path to jar files to be scanned]
يمكن العثور على تعليمات أكثر تفصيلاً على صفحات جيثب الخاصة بفحص التبعية والتحقق من المهارة. بشكل افتراضي، يرتبط المكون الإضافي بمرحلة verify
(أي mvn verify
). وبدلاً من ذلك، يمكن للمرء استدعاء المكون الإضافي مباشرة عبر mvn org.owasp:dependency-check-maven:check
.
يمكن تكوين البرنامج المساعد للتحقق من التبعية باستخدام ما يلي:
< project >
< build >
< plugins >
...
< plugin >
< groupId >org.owasp groupId >
< artifactId >dependency-check-maven artifactId >
< executions >
< execution >
< goals >
< goal >check goal >
goals >
execution >
executions >
plugin >
...
plugins >
...
build >
...
project >
للحصول على إرشادات حول استخدام البرنامج الإضافي Gradle، يرجى الاطلاع على صفحة github للتحقق من التبعية.
للحصول على تعليمات حول استخدام مهمة Ant، يرجى الاطلاع على صفحة github الخاصة بفحص التبعية.
لكي يتم التثبيت، يجب أن يكون لديك المكونات التالية مثبتة:
java -version
11.0mvn -version
والإصدارات الأحدثتتطلب حالات الاختبارات:
go version
1.12 والإصدارات الأحدثتوضح الإرشادات التالية كيفية تجميع اللقطة الحالية واستخدامها. في حين أن الهدف الأساسي هو الحفاظ على لقطة مستقرة، فمن المستحسن استخدام إصدارات الإصدار المذكورة أعلاه.
يحتوي المستودع على بعض الملفات الكبيرة بسبب موارد الاختبار. لقد حاول الفريق تنظيف التاريخ قدر الإمكان. ومع ذلك، فمن المستحسن إجراء استنساخ سطحي لتوفير الوقت:
git clone --depth 1 https://github.com/jeremylong/DependencyCheck.git
على * لا شىء
$ mvn -s settings.xml install
$ ./cli/target/release/bin/dependency-check.sh -h
$ ./cli/target/release/bin/dependency-check.sh --out . --scan ./src/test/resources
على ويندوز
> mvn -s settings.xml install
> .clitargetreleasebindependency-check.bat -h
> .clitargetreleasebindependency-check.bat --out . --scan ./src/test/resources
ثم قم بتحميل ملف "dependency-check-report.html" الناتج في متصفحك المفضل.
لتسريع أوقات دورة التنفيذ، يمكنك أيضًا التجميع دون تشغيل الاختبارات في كل مرة:
mvn -s settings.xml install -DskipTests=true
يرجى تذكر إجراء الاختبارات مرة واحدة على الأقل قبل فتح قسم العلاقات العامة. :)
لتتمكن من تصحيح أخطاء اختباراتك في IntelliJ Idea، يمكنك تقديم تكوين مخضرم ينفذ اختبارك ويتيح تصحيح الأخطاء باستخدام نقاط التوقف وما إلى ذلك.
في الأساس، يمكنك تنفيذ ما هو موضح في https://www.jetbrains.com/help/idea/work-with-tests-in-maven.html#run_single_test وتعيين forkCount
على 0، وإلا فلن ينجح تصحيح الأخطاء.
خطوة بخطوة:
Run -> Edit Configurations
+ (Add new configuration) -> Maven
Run tests
core
command line
، أدخل -DforkCount=0 -f pom.xml -s ../settings.xml test
OK
Run -> Debug
، ثم اختر تكوين التشغيل الذي تم إنشاؤه حديثًا سيقوم IntelliJ الآن بتنفيذ التشغيل التجريبي للمشروع الفرعي core
مع تمكين تصحيح الأخطاء. يجب أن تعمل نقاط التوقف التي تم تعيينها في أي مكان في التعليمات البرمجية.
إذا كنت ترغب في تسريع أوقات دورة التنفيذ، فيمكنك أيضًا اختبار وظيفة واحدة أو فئة اختبار واحدة فقط.
يعمل هذا عن طريق إضافة -Dtest=MyTestClass
أو -Dtest=MyTestClass#myTestFunction
إلى تكوين التشغيل. سيكون سطر الأوامر الكامل في تكوين التشغيل هو:
-Dtest=MyTestClass#myTestFunction -DforkCount=0 -f pom.xml -s ../settings.xml test
في المثال التالي، من المفترض أن المصدر المطلوب فحصه موجود في دليل العمل الحالي وسيتم كتابة التقارير إلى $(pwd)/odc-reports
. يتم استخدام البيانات الثابتة وأدلة ذاكرة التخزين المؤقت، مما يسمح لك بتدمير الحاوية بعد التشغيل.
لنظام التشغيل Linux:
#! /bin/sh
DC_VERSION= " latest "
DC_DIRECTORY= $HOME /OWASP-Dependency-Check
DC_PROJECT= " dependency-check scan: $( pwd ) "
DATA_DIRECTORY= " $DC_DIRECTORY /data "
CACHE_DIRECTORY= " $DC_DIRECTORY /data/cache "
if [ ! -d " $DATA_DIRECTORY " ] ; then
echo " Initially creating persistent directory: $DATA_DIRECTORY "
mkdir -p " $DATA_DIRECTORY "
fi
if [ ! -d " $CACHE_DIRECTORY " ] ; then
echo " Initially creating persistent directory: $CACHE_DIRECTORY "
mkdir -p " $CACHE_DIRECTORY "
fi
# Make sure we are using the latest version
docker pull owasp/dependency-check: $DC_VERSION
docker run --rm
-e user= $USER
-u $( id -u ${USER} ) : $( id -g ${USER} )
--volume $( pwd ) :/src:z
--volume " $DATA_DIRECTORY " :/usr/share/dependency-check/data:z
--volume $( pwd ) /odc-reports:/report:z
owasp/dependency-check: $DC_VERSION
--scan /src
--format " ALL "
--project " $DC_PROJECT "
--out /report
# Use suppression like this: (where /src == $pwd)
# --suppression "/src/security/dependency-check-suppression.xml"
لنظام التشغيل Windows:
@ echo off
set DC_VERSION = " latest "
set DC_DIRECTORY = %USERPROFILE% OWASP-Dependency-Check
SET DC_PROJECT = " dependency-check scan: %CD% "
set DATA_DIRECTORY = " %DC_DIRECTORY% data "
set CACHE_DIRECTORY = " %DC_DIRECTORY% datacache "
IF NOT EXIST %DATA_DIRECTORY% (
echo Initially creating persistent directory: %DATA_DIRECTORY%
mkdir %DATA_DIRECTORY%
)
IF NOT EXIST %CACHE_DIRECTORY% (
echo Initially creating persistent directory: %CACHE_DIRECTORY%
mkdir %CACHE_DIRECTORY%
)
rem Make sure we are using the latest version
docker pull owasp/dependency-check: %DC_VERSION%
docker run --rm ^
--volume %CD% :/src ^
--volume %DATA_DIRECTORY% :/usr/share/dependency-check/data ^
--volume %CD% /odc-reports:/report ^
owasp/dependency-check: %DC_VERSION% ^
--scan /src ^
--format " ALL " ^
--project " %DC_PROJECT% " ^
--out /report
rem Use suppression like this: (where /src == %CD%)
rem --suppression "/src/security/dependency-check-suppression.xml"
لإنشاء فحص التبعية (باستخدام Java 11) قم بتشغيل الأمر:
mvn -s settings.xml install
يشير التحقق من التبعية إلى العديد من التبعيات الضعيفة التي لا يتم استخدامها أبدًا إلا كموارد اختبار. يتم تضمين كافة تبعيات الاختبار الاختيارية هذه في ملف تعريف test-dependencies
. لتشغيل فحص التبعية ضد نفسه، قم باستبعاد ملف تعريف test-dependencies
:
mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true
يتم إنشاء الوثائق الموجودة على صفحات جيثب من هذا المستودع:
mvn -s settings.xml site site:staging
بمجرد الانتهاء، قم بتوجيه متصفحك إلى ./target/staging/index.html
.
لإنشاء صورة عامل ميناء للتحقق من التبعية، قم بتشغيل الأمر:
mvn -s settings.xml install
./build-docker.sh
يتم منح إذن التعديل وإعادة التوزيع بموجب شروط ترخيص Apache 2.0. راجع ملف LICENSE.txt للحصول على الترخيص الكامل.
يستخدم Dependency-Check العديد من المكتبات الأخرى مفتوحة المصدر. الرجاء مراجعة ملف NOTICE.txt لمزيد من المعلومات.
يستخدم هذا المنتج NVD API ولكنه غير معتمد أو معتمد من قبل NVD.
حقوق الطبع والنشر (ج) 2012-2024 جيريمي لونج. جميع الحقوق محفوظة.