
OWASP dependency-check एक सॉफ़्टवेयर संरचना विश्लेषण उपयोगिता है जो एप्लिकेशन निर्भरताओं में सार्वजनिक रूप से प्रकट सुरक्षा कमजोरियों का पता लगाती है।
Dependency-Check एक Software Composition Analysis (SCA) उपकरण है जो किसी प्रोजेक्ट की निर्भरताओं (dependencies) में निहित सार्वजनिक रूप से प्रकट की गई कमजोरियों (vulnerabilities) का पता लगाने का प्रयास करता है। यह यह निर्धारित करके करता है कि किसी दिए गए निर्भरता के लिए कोई Common Platform Enumeration (CPE) पहचानकर्ता (identifier) मौजूद है या नहीं। यदि मिल जाता है, तो यह संबंधित CVE प्रविष्टियों से जुड़ी एक रिपोर्ट तैयार करेगा।
प्रोडक्शन बाइनरी रिलीज़ के दस्तावेज़ और लिंक github pages पर पाए जा सकते हैं। इसके अतिरिक्त, आर्किटेक्चर और dependency-check को विस्तारित करने के तरीकों के बारे में अधिक जानकारी wiki पर पाई जा सकती है।
यह उत्पाद NVD API का उपयोग करता है लेकिन NVD द्वारा समर्थित (endorsed) या प्रमाणित (certified) नहीं है।
NVD API संगतता परिवर्तनों के कारण, अपग्रेड अनिवार्य है। अधिक जानकारी के लिए #7463 देखें।
dependency-check 11.0.0 या उच्चतर चलाने के लिए अब Java 11 आवश्यक है
H2 डेटाबेस अपग्रेड
11.0.0 में स्थानीय H2 डेटाबेस का उपयोग करने वाले ब्रेकिंग परिवर्तन शामिल हैं। NVD डेटा का पूर्ण डाउनलोड होगा। ध्यान दें कि यदि आप साझा डेटा निर्देशिका का उपयोग कर रहे हैं, तो h2 डेटाबेस फ़ाइल dependency-check के पुराने संस्करणों के साथ संगत नहीं है। यदि आपको समस्याएँ आती हैं, तो आपको purge चलाने की आवश्यकता हो सकती है:
./gradlew dependencyCheckPurgemvn org.owasp:dependency-check-maven:11.0.0:purgedependency-check.sh --purgeDependency-check 9.0.0+ (जनवरी 2024) से NVD data-feed के बजाय NVD API का उपयोग कर रहा है। Dependency-check के उपयोगकर्ताओं को NVD API कुंजी प्राप्त करने के लिए अत्यधिक प्रोत्साहित किया जाता है; देखें https://nvd.nist.gov/developers/request-an-api-key
NVD API कुंजी के बिना dependency-check के अपडेट अत्यंत धीमे होंगे।
NVD API कुंजी सेट करने के तरीके के बारे में cli, maven, gradle, या ant एकीकरण के दस्तावेज़ देखें।
NVD API ने रेट लिमिट (rate limits) लागू की हैं। यदि आप एक एकल API कुंजी का उपयोग कर रहे हैं और कई बिल्ड होते हैं, तो आप रेट लिमिट तक पहुँच सकते हैं और 403 त्रुटियाँ प्राप्त कर सकते हैं। CI वातावरण में कैशिंग रणनीति का उपयोग करना आवश्यक है।
सितंबर 2025 में Sonatype OSS Index ने प्रमाणीकरण के लिए API टोकन के उपयोग को लागू करना शुरू कर दिया। अप्रैल 2026 में Sonatype Guide में एक अनुवर्ती माइग्रेशन शुरू हुआ, जिससे Sonatype Guide API टोकन के उपयोग में परिवर्तन की शुरुआत हुई, जिन्हें 2026 के अंत से पहले पुराने OSS Index API कुंजियों/टोकनों को बदलने की योजना है।
क्रेडेंशियल के बिना, Dependency Check OSS Index विश्लेषक (analyzer) को स्वचालित रूप से अक्षम कर देगा। Sonatype Guide टोकन या पुरानी OSS Index API कुंजी के उपयोग के लिए विश्लेषक क्रेडेंशियल सेट करने के तरीके के बारे में CLI, Maven, Gradle, या Ant एकीकरण के दस्तावेज़ देखें।
यदि आप Sonatype OSS Index (Guide के माध्यम से) का उपयोग करना चाहते हैं, तो आपको Dependency-Check को कॉन्फ़िगर करना होगा और Sonatype Guide में माइग्रेशन के निहितार्थों पर विचार करना होगा; जिसका वाणिज्यिक/उपयोग मॉडल बदल गया है। अधिक जानकारी के लिए analyzer documentation देखें।
9.0.0+ के साथ उपयोगकर्ताओं को निर्भरता समाधान (dependency resolution) के कारण NoSuchMethodError अपवादों की समस्याएँ आ सकती हैं। यदि आपको यह समस्या आती है, तो आपको dependency-check की कुछ transitive निर्भरताओं को विशिष्ट संस्करणों पर पिन करने की आवश्यकता होगी। उदाहरण के लिए:
/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 को कई बाह्य रूप से होस्ट किए गए संसाधनों तक पहुँच की आवश्यकता होती है। अधिक जानकारी के लिए Internet Access Required देखें।
कुछ प्रौद्योगिकी स्टैक का विश्लेषण करने के लिए dependency-check को अन्य विकास उपकरण स्थापित करने की आवश्यकता हो सकती है। नीचे सूचीबद्ध कुछ विश्लेषण प्रयोगात्मक (experimental) हो सकते हैं और उनके लिए प्रयोगात्मक विश्लेषक (experimental analyzers) सक्षम होने चाहिए।
go स्थापित होना चाहिए।Elixir प्रोजेक्ट के विश्लेषण के लिए mix_audit आवश्यक है।npm, pnpm, और yarn प्रोजेक्ट के विश्लेषण के लिए npm, pnpm, या yarn स्थापित होना चाहिए।
audit सुविधा का उपयोग करता है।bundle-audit के चारों ओर एक रैपर है, जिसे स्थापित किया जाना चाहिए।Jenkins प्लगइन के उपयोग के निर्देशों के लिए कृपया OWASP Dependency-Check Plugin page देखें।
अधिक विस्तृत निर्देश dependency-check github pages पर पाए जा सकते हैं। नवीनतम CLI को github के releases section से डाउनलोड किया जा सकता है।
नवीनतम रिलीज़ डाउनलोड करना:
$ 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]
Homebrew के साथ Mac पर
नोट - 5.x से 6.0.0 में अपग्रेड करने वाले homebrew उपयोगकर्ताओं को 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 pages पर पाए जा सकते हैं। डिफ़ॉल्ट रूप से, प्लगइन 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 page देखें।
Ant टास्क के उपयोग के निर्देशों के लिए, कृपया dependency-check-ant github page देखें।
स्थापना सफल होने के लिए, आपके पास निम्नलिखित घटक स्थापित होने चाहिए:
java -version 25.0mvn -version 3.6.3 और उच्चतरपरीक्षण मामलों के लिए आवश्यक:
go version 1.12 और उच्चतरनिम्नलिखित निर्देश बताते हैं कि वर्तमान स्नैपशॉट को कैसे संकलित (compile) और उपयोग किया जाए। हालाँकि स्थिर स्नैपशॉट बनाए रखने का पूरा इरादा है, फिर भी यह अनुशंसा की जाती है कि ऊपर सूचीबद्ध रिलीज़ संस्करणों का उपयोग किया जाए।
रिपॉजिटरी में परीक्षण संसाधनों के कारण कुछ बड़ी फ़ाइलें हैं। टीम ने इतिहास को जितना संभव हो उतना साफ करने का प्रयास किया है। हालाँकि, यह अनुशंसा की जाती है कि आप समय बचाने के लिए एक शैलो क्लोन (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 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%\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 pages पर दस्तावेज़ इस रिपॉजिटरी से उत्पन्न होते हैं:
mvn -s settings.xml site site:stage
पूरा होने के बाद, अपने ब्राउज़र को ./target/staging/index.html पर इंगित करें।
dependency-check docker इमेज बिल्ड करने के लिए कमांड चलाएँ:
mvn -s settings.xml install
./docker-build.sh
Apache 2.0 लाइसेंस की शर्तों के तहत संशोधित करने और पुनर्वितरित करने की अनुमति दी गई है। पूर्ण लाइसेंस के लिए LICENSE.txt फ़ाइल देखें।
Dependency-Check कई अन्य ओपन सोर्स लाइब्रेरीज़ का उपयोग करता है। अधिक जानकारी के लिए कृपया NOTICE.txt फ़ाइल देखें।
यह उत्पाद NVD API का उपयोग करता है लेकिन NVD द्वारा समर्थित या प्रमाणित नहीं है।
Copyright (c) 2012-2025 Jeremy Long. All Rights Reserved.
