
OWASP dependency-check هي أداة لتحليل تركيبة البرمجيات تكتشف الثغرات الأمنية المُعلنة للعموم في تبعيات التطبيقات.
Dependency-Check هي أداة تحليل تكوين البرمجيات (SCA) تحاول اكتشاف الثغرات الأمنية المُعلن عنها علنًا والموجودة في تبعيات المشروع. تقوم بذلك عن طريق تحديد ما إذا كان هناك معرّف تعداد المنصات المشترك (CPE) لتبعية معيّنة. وإذا تم العثور عليه، فستقوم بإنشاء تقرير يربط بإدخالات CVE المرتبطة.
يمكن العثور على التوثيق وروابط الإصدارات الثنائية الجاهزة للإنتاج على صفحات github. بالإضافة إلى ذلك، يمكن العثور على مزيد من المعلومات حول البنية وطرق توسيع dependency-check على [الويكي].
يستخدم هذا المنتج واجهة برمجة تطبيقات NVD ولكنه غير معتمد أو مُصادق عليه من قِبل NVD.
نظرًا لتغييرات التوافق في واجهة برمجة تطبيقات NVD، فإن الترقية إلزامية. راجع #7463 لمزيد من المعلومات.
أصبحت Java 11 مطلوبة الآن لتشغيل dependency-check 11.0.0 أو إصدار أحدث
ترقية قاعدة بيانات H2
يحتوي 11.0.0 على تغييرات جوهرية عند استخدام قاعدة بيانات H2 المحلية. سيحدث
تنزيل كامل لبيانات NVD. لاحظ أنه إذا كنت تستخدم دليل بيانات مشتركًا،
فإن ملف قاعدة بيانات h2 غير متوافق مع الإصدارات الأقدم من dependency-check.
إذا واجهت مشكلات، فقد تحتاج إلى تنفيذ عملية تطهير:
./gradlew dependencyCheckPurgemvn org.owasp:dependency-check-maven:11.0.0:purgedependency-check.sh --purgeانتقلت dependency-check من استخدام خلاصة بيانات NVD إلى واجهة برمجة تطبيقات NVD منذ 9.0.0+ (يناير 2024).
يُشجَّع مستخدمو dependency-check بشدة على الحصول على مفتاح واجهة برمجة تطبيقات NVD؛ راجع https://nvd.nist.gov/developers/request-an-api-key
بدون مفتاح واجهة برمجة تطبيقات NVD، ستكون تحديثات dependency-check بطيئة للغاية.
يرجى الاطلاع على التوثيق الخاص بتكاملات cli أو maven أو gradle أو ant لمعرفة كيفية تعيين مفتاح واجهة برمجة تطبيقات NVD.
تفرض واجهة برمجة تطبيقات NVD حدودًا لمعدل الاستخدام. إذا كنت تستخدم مفتاح API واحدًا وتحدث عمليات بناء متعددة، فقد تصل إلى حد المعدل وتتلقى أخطاء 403. في بيئة التكامل المستمر (CI)، يجب استخدام استراتيجية تخزين مؤقت.
في سبتمبر 2025، بدأ Sonatype OSS Index في فرض استخدام رموز API للمصادقة. وفي أبريل 2026، بدأ الانتقال اللاحق إلى Sonatype Guide، ما أطلق تحولًا إلى استخدام رموز Sonatype Guide API المخطط لها لتحل محل مفاتيح/رموز OSS Index API القديمة قبل نهاية عام 2026.
بدون بيانات اعتماد، سيقوم Dependency Check بتعطيل محلل OSS Index تلقائيًا. يرجى الاطلاع على التوثيق الخاص بتكاملات CLI أو Maven أو Gradle أو Ant لمعرفة كيفية تعيين بيانات اعتماد المحلل لاستخدام رمز Sonatype Guide أو مفتاح OSS Index API القديم.
إذا كنت ترغب في استخدام Sonatype OSS Index (عبر Guide)، فيجب عليك تكوين Dependency-Check والنظر في الآثار المترتبة على الانتقال إلى Sonatype Guide؛ الذي تغيّر نموذجه التجاري/الاستخدامي. راجع توثيق المحلل لمزيد من المعلومات.
مع 9.0.0+ قد يواجه المستخدمون مشكلات مع استثناءات NoSuchMethodError بسبب
حل التبعيات. إذا واجهت هذه المشكلة، فستحتاج إلى تثبيت بعض التبعيات غير المباشرة
لـ dependency-check على إصدارات محددة. على سبيل المثال:
/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.21.2")
// org.owasp.dependencycheck needs these versions. Other plugins pull in older versions..
add("implementation", "org.apache.commons:commons-lang3:3.20.0")
add("implementation", "org.apache.commons:commons-text:1.15.0")
}
}
الحد الأدنى لإصدار Java: Java 11
تتطلب OWASP dependency-check الوصول إلى عدة موارد مستضافة خارجيًا. لمزيد من المعلومات، راجع الوصول إلى الإنترنت المطلوب.
من أجل تحليل بعض مجموعات التقنيات، قد تتطلب dependency-check تثبيت أدوات تطوير أخرى. قد تكون بعض التحليلات المذكورة أدناه تجريبية وتتطلب تمكين المحللات التجريبية.
go.Elixir تثبيت mix_audit.npm وpnpm وyarn تثبيت npm أو pnpm أو yarn.
audit الخاصة بكل منها.bundle-audit، والتي يجب تثبيتها.للحصول على إرشادات حول استخدام إضافة Jenkins، يرجى الاطلاع على صفحة إضافة OWASP Dependency-Check.
يمكن العثور على تعليمات أكثر تفصيلاً على صفحات dependency-check على github. يمكن تنزيل أحدث إصدار من CLI من github في قسم الإصدارات.
تنزيل أحدث إصدار:
$ VERSION=$(curl -s https://dependency-check.github.io/DependencyCheck/current.txt)
$ curl -Ls "https://github.com/dependency-check/DependencyCheck/releases/download/v$VERSION/dependency-check-$VERSION-release.zip" --output dependency-check.zip
على أنظمة *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
على نظام Windows
> .\bin\dependency-check.bat -h
> .\bin\dependency-check.bat --out . --scan [path to jar files to be scanned]
على نظام Mac باستخدام Homebrew
ملاحظة - مستخدمو 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]
يمكن العثور على تعليمات أكثر تفصيلاً على صفحات dependency-check-maven على github.
بشكل افتراضي، تكون الإضافة مرتبطة بمرحلة verify (أي mvn verify). بدلاً من ذلك،
يمكن استدعاء الإضافة مباشرة عبر mvn org.owasp:dependency-check-maven:check.
يمكن تكوين إضافة dependency-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، يرجى الاطلاع على صفحة dependency-check-gradle على github.
للحصول على إرشادات حول استخدام مهمة Ant، يرجى الاطلاع على صفحة dependency-check-ant على github.
لكي ينجح التثبيت، يجب أن تكون المكونات التالية مثبتة لديك:
java -version 25.0mvn -version 3.6.3 والإصدارات الأحدثتتطلب حالات الاختبار:
go version 1.12 والإصدارات الأحدثتوضح التعليمات التالية كيفية تجميع واستخدام اللقطة الحالية (snapshot). وفي حين أن كل النية هي الحفاظ على لقطة مستقرة، يُوصى باستخدام الإصدارات الرسمية المذكورة أعلاه.
يحتوي المستودع على بعض الملفات الكبيرة بسبب موارد الاختبار. حاول الفريق تنظيف سجل git قدر الإمكان. ومع ذلك، يُنصح بإجراء استنساخ ضحل (shallow clone) لتوفير الوقت:
git clone --depth 1 https://github.com/dependency-check/DependencyCheck.git
على أنظمة *nix
$ 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
على نظام Windows
> mvn -s settings.xml install
> .\cli\target\release\bin\dependency-check.bat -h
> .\cli\target\release\bin\dependency-check.bat --out . --scan ./src/test/resources
ثم قم بتحميل ملف 'dependency-check-report.html' الناتج في متصفحك المفضل.
لتسريع أوقات دورات التنفيذ، يمكنك أيضًا التجميع دون تشغيل الاختبارات في كل مرة:
mvn -s settings.xml install -DskipTests=true
يرجى تذكر تشغيل الاختبارات مرة واحدة على الأقل قبل فتح طلب السحب (PR). :)
لتتمكن من تصحيح أخطاء اختباراتك في IntelliJ Idea، يمكنك إدخال إعداد maven ينفذ اختبارك ويتيح التصحيح مع نقاط التوقف وغير ذلك.
بشكل أساسي، تقوم بما هو موصوف في https://www.jetbrains.com/help/idea/work-with-tests-in-maven.html#run_single_test وتضبط forkCount على 0، وإلا فلن يعمل التصحيح.
خطوة بخطوة:
Run -> Edit Configurations+ (Add new configuration) -> MavenRun testscorecommand line، أدخل -DforkCount=0 -f pom.xml -s ../settings.xml testOKRun -> 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%\data\cache"
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"
لبناء dependency-check (باستخدام Java 11) قم بتشغيل الأمر:
mvn -s settings.xml install
يشير Dependency-check إلى عدة تبعيات ضعيفة لا تُستخدم أبدًا
إلا كموارد اختبار. جميع هذه التبعيات الاختبارية الاختيارية مضمنة في
ملف التعريف test-dependencies. لتشغيل dependency-check ضد نفسها،
قم ببساطة باستبعاد ملف التعريف test-dependencies:
mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true
يتم إنشاء التوثيق على صفحات github من هذا المستودع:
mvn -s settings.xml site site:stage
بمجرد الانتهاء، وجّه متصفحك إلى ./target/staging/index.html.
لبناء صورة docker الخاصة بـ dependency-check، قم بتشغيل الأمر:
mvn -s settings.xml install
./docker-build.sh
يُمنح الإذن بالتعديل وإعادة التوزيع بموجب شروط رخصة Apache 2.0. راجع ملف LICENSE.txt للاطلاع على الرخصة الكاملة.
يستخدم Dependency-Check عدة مكتبات أخرى مفتوحة المصدر. يرجى الاطلاع على ملف NOTICE.txt لمزيد من المعلومات.
يستخدم هذا المنتج واجهة برمجة تطبيقات NVD ولكنه غير معتمد أو مُصادق عليه من قِبل NVD.
Copyright (c) 2012-2025 Jeremy Long. All Rights Reserved.
