Dependency-Check เป็นเครื่องมือการวิเคราะห์องค์ประกอบของซอฟต์แวร์ (SCA) ที่พยายามตรวจจับช่องโหว่ที่เปิดเผยต่อสาธารณะซึ่งอยู่ภายในการขึ้นต่อกันของโครงการ โดยพิจารณาว่ามีตัวระบุ Common Platform Enumeration (CPE) สำหรับการขึ้นต่อกันที่กำหนดหรือไม่ หากพบ ระบบจะสร้างรายงานที่เชื่อมโยงกับรายการ CVE ที่เกี่ยวข้อง
เอกสารและลิงก์ไปยังเวอร์ชันไบนารี่ที่ใช้งานจริงสามารถพบได้บนหน้า GitHub นอกจากนี้ ข้อมูลเพิ่มเติมเกี่ยวกับสถาปัตยกรรมและวิธีการขยายการตรวจสอบการพึ่งพาสามารถพบได้ในวิกิ
ผลิตภัณฑ์นี้ใช้ NVD API แต่ไม่ได้รับการรับรองหรือรับรองโดย NVD
ตอนนี้จำเป็นต้องใช้ Java 11 เพื่อรัน dependency-check 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 การตรวจสอบการพึ่งพา 10.0.2 ใช้ส่วนหัว User-Agent
ที่อัปเดตซึ่งจะอนุญาตให้ NVD บล็อกการโทรจากไคลเอนต์รุ่นเก่า
การตรวจสอบการพึ่งพาได้ย้ายจากการใช้ฟีดข้อมูล NVD ไปเป็น NVD API ขอ แนะนำให้ผู้ใช้ตรวจสอบการพึ่งพาได้รับคีย์ NVD API ดูhttps://nvd.nist.gov/developers/request-an-api-key หากไม่มีการอัปเดตการตรวจสอบการพึ่งพาคีย์ NVD API จะ ช้ามาก โปรดดูเอกสารประกอบสำหรับการผสานรวม cli, maven, gradle หรือ ant เกี่ยวกับวิธีตั้งค่าคีย์ NVD API
NVD API มีการบังคับใช้ขีดจำกัดอัตรา หากคุณใช้คีย์ API เดียวและมีหลายบิลด์ คุณอาจถึงขีดจำกัดอัตราและได้รับข้อผิดพลาด 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 ขั้นต่ำ: Java 11
การตรวจสอบการขึ้นต่อกันของ OWASP จำเป็นต้องมีการเข้าถึงทรัพยากรที่โฮสต์ภายนอกจำนวนมาก สำหรับข้อมูลเพิ่มเติม โปรดดูที่ จำเป็นต้องมีการเข้าถึงอินเทอร์เน็ต
เพื่อวิเคราะห์การตรวจสอบการพึ่งพาสแต็กเทคโนโลยีบางอย่างอาจจำเป็นต้องติดตั้งเครื่องมือการพัฒนาอื่น ๆ การวิเคราะห์บางส่วนที่แสดงด้านล่างนี้อาจเป็นการทดลองและจำเป็นต้องเปิดใช้งานเครื่องวิเคราะห์เชิงทดลอง
go
ต้องติดตั้งElixir
ต้องใช้ mix_audit
npm
, pnpm
และ yarn
จำเป็นต้องติดตั้ง npm
, pnpm
หรือ yarn
audit
ที่เกี่ยวข้องของแต่ละรายการbundle-audit
ซึ่งจะต้องติดตั้ง สำหรับคำแนะนำในการใช้ปลั๊กอิน Jenkins โปรดดูหน้าปลั๊กอินตรวจสอบการพึ่งพา OWASP
คำแนะนำโดยละเอียดเพิ่มเติมสามารถพบได้ในหน้า GitHub ตรวจสอบการพึ่งพา สามารถดาวน์โหลด CLI ล่าสุดได้จาก 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]
คำแนะนำโดยละเอียดเพิ่มเติมสามารถพบได้ในหน้า GitHub dependency-check-maven ตามค่าเริ่มต้น ปลั๊กอินจะเชื่อมโยงกับขั้นตอน 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 Plugin โปรดดูที่หน้า dependency-check-gradle github
สำหรับคำแนะนำในการใช้งาน Ant Task โปรดดูหน้า GitHub การตรวจสอบการขึ้นต่อกันของ Ant
เพื่อให้การติดตั้งผ่าน คุณต้องติดตั้งส่วนประกอบต่อไปนี้:
java -version
11.0mvn -version
3.5.0 และสูงกว่ากรณีทดสอบต้องการ:
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
โปรดจำไว้ว่าต้องทำการทดสอบอย่างน้อยหนึ่งครั้งก่อนที่จะเปิด 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) -> 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
ข้อมูลถาวรและไดเร็กทอรีแคชถูกนำมาใช้ ช่วยให้คุณสามารถทำลายคอนเทนเนอร์ได้หลังจากรันแล้ว
สำหรับลินุกซ์:
#! /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"
สำหรับวินโดวส์:
@ 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
เอกสารประกอบในหน้า GitHub สร้างขึ้นจากพื้นที่เก็บข้อมูลนี้:
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
ลิขสิทธิ์ (c) 2012-2024 เจเรมี ลอง สงวนลิขสิทธิ์.