Dependency-Check adalah alat Analisis Komposisi Perangkat Lunak (SCA) yang berupaya mendeteksi kerentanan yang diungkapkan secara publik dalam dependensi proyek. Hal ini dilakukan dengan menentukan apakah ada pengidentifikasi Common Platform Enumeration (CPE) untuk ketergantungan tertentu. Jika ditemukan, ini akan menghasilkan laporan yang menghubungkan ke entri CVE terkait.
Dokumentasi dan link ke rilis biner produksi dapat ditemukan di halaman github. Selain itu, informasi lebih lanjut tentang arsitektur dan cara memperluas pemeriksaan ketergantungan dapat ditemukan di wiki.
Produk ini menggunakan API NVD tetapi tidak didukung atau disertifikasi oleh NVD.
Java 11 sekarang diperlukan untuk menjalankan pemeriksaan ketergantungan 11.0.0 atau lebih tinggi
Peningkatan basis data H2
11.0.0 berisi perubahan yang dapat menyebabkan gangguan menggunakan database H2 lokal. Pengunduhan penuh data NVD akan terjadi. Perhatikan bahwa jika Anda menggunakan direktori data bersama, file database h2 tidak kompatibel dengan versi pemeriksaan ketergantungan yang lebih lama. Jika Anda mengalami masalah, Anda mungkin perlu melakukan pembersihan:
./gradlew dependencyCheckPurge
mvn org.owasp:dependency-check-maven:9.0.0:purge
dependency-check.sh --purge
Mengupgrade ke 10.0.2 atau lebih baru adalah wajib
Versi pemeriksaan ketergantungan yang lebih lama menyebabkan banyak permintaan duplikat yang berakhir dengan kegagalan pemrosesan yang menyebabkan beban yang tidak perlu pada NVD API. Pemeriksaan ketergantungan 10.0.2 menggunakan header User-Agent
yang diperbarui yang memungkinkan NVD memblokir panggilan dari klien lama.
Pemeriksaan ketergantungan telah berpindah dari penggunaan umpan data NVD ke API NVD. Pengguna pemeriksaan ketergantungan sangat dianjurkan untuk mendapatkan Kunci API NVD; lihat https://nvd.nist.gov/developers/request-an-api-key Tanpa Kunci API NVD, pembaruan pemeriksaan ketergantungan akan sangat lambat . Silakan lihat dokumentasi integrasi cli, maven, gradle, atau ant tentang cara menyetel kunci API NVD.
NVD API telah menerapkan batas kecepatan. Jika Anda menggunakan satu API KEY dan terjadi beberapa build, Anda dapat mencapai batas kapasitas dan menerima kesalahan 403. Dalam lingkungan CI kita harus menggunakan strategi caching.
Dengan 9.0.0 pengguna mungkin mengalami masalah dengan pengecualian NoSuchMethodError
karena resolusi ketergantungan. Jika Anda mengalami masalah ini, Anda perlu menyematkan beberapa dependensi transitif dari pemeriksaan ketergantungan ke versi tertentu. Misalnya:
/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 " )
}
}
Versi Java Minimum: Java 11
Pemeriksaan ketergantungan OWASP memerlukan akses ke beberapa sumber daya yang dihosting secara eksternal. Untuk informasi lebih lanjut lihat Akses Internet Diperlukan.
Untuk menganalisis beberapa pemeriksaan ketergantungan tumpukan teknologi mungkin memerlukan pemasangan alat pengembangan lain. Beberapa analisis yang tercantum di bawah mungkin bersifat eksperimental dan memerlukan pengaktifan penganalisis eksperimental.
go
harus diinstal.Elixir
memerlukan mix_audit
.npm
, pnpm
, dan yarn
memerlukan instalasi npm
, pnpm
, atau yarn
.audit
masing-masing.bundle-audit
, yang harus diinstal. Untuk instruksi penggunaan plugin Jenkins silakan lihat halaman Plugin Dependency-Check OWASP.
Petunjuk lebih rinci dapat ditemukan di halaman github pemeriksaan ketergantungan. CLI terbaru dapat diunduh dari github di bagian rilis.
Mengunduh rilis terbaru:
$ 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
Di *nix
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
Di Windows
> .bindependency-check.bat -h
> .bindependency-check.bat --out . --scan [path to jar files to be scanned]
Di Mac dengan Homebrew Note - pengguna homebrew yang mengupgrade dari 5.x ke 6.0.0 perlu menjalankan dependency-check.sh --purge
.
$ brew update && brew install dependency-check
$ dependency-check -h
$ dependency-check --out . --scan [path to jar files to be scanned]
Petunjuk lebih rinci dapat ditemukan di halaman github dependency-check-maven. Secara default, plugin terikat dengan fase verify
(yaitu mvn verify
). Alternatifnya, seseorang dapat langsung memanggil plugin melalui mvn org.owasp:dependency-check-maven:check
.
Plugin pemeriksaan ketergantungan dapat dikonfigurasi menggunakan yang berikut ini:
< 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 >
Untuk petunjuk penggunaan Plugin Gradle, silakan lihat halaman github dependency-check-gradle.
Untuk petunjuk penggunaan Ant Task, silakan lihat halaman github dependency-check-ant.
Agar instalasi berhasil, Anda harus menginstal komponen berikut:
java -version
11.0mvn -version
3.5.0 dan lebih tinggiKasus pengujian memerlukan:
go version
1.12 dan lebih tinggiPetunjuk berikut menguraikan cara mengkompilasi dan menggunakan snapshot saat ini. Meskipun tujuannya adalah untuk mempertahankan snapshot yang stabil, disarankan agar versi rilis yang tercantum di atas digunakan.
Repositori memiliki beberapa file besar karena sumber daya pengujian. Tim telah berusaha membersihkan sejarah sebanyak mungkin. Namun, disarankan agar Anda melakukan klon dangkal untuk menghemat waktu:
git clone --depth 1 https://github.com/jeremylong/DependencyCheck.git
Di *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
Di Windows
> mvn -s settings.xml install
> .clitargetreleasebindependency-check.bat -h
> .clitargetreleasebindependency-check.bat --out . --scan ./src/test/resources
Kemudian muat 'dependency-check-report.html' yang dihasilkan ke browser favorit Anda.
Untuk mempercepat waktu siklus penyelesaian, Anda juga dapat mengkompilasi tanpa menjalankan pengujian setiap kali:
mvn -s settings.xml install -DskipTests=true
Harap ingat untuk setidaknya menjalankan tes satu kali sebelum membuka PR. :)
Untuk dapat men-debug pengujian Anda di IntelliJ Idea, Anda dapat memperkenalkan konfigurasi pakar yang menjalankan pengujian Anda dan mengaktifkan debugging dengan breakpoint, dll.
Pada dasarnya, Anda melakukan apa yang dijelaskan di https://www.jetbrains.com/help/idea/work-with-tests-in-maven.html#run_single_test dan menyetel forkCount
ke 0, jika tidak, debugging tidak akan berfungsi.
Langkah demi langkah:
Run -> Edit Configurations
+ (Add new configuration) -> Maven
Run tests
core
command line
, masukkan -DforkCount=0 -f pom.xml -s ../settings.xml test
OK
Run -> Debug
, lalu pilih konfigurasi proses yang baru dibuat IntelliJ sekarang akan menjalankan uji coba untuk subproyek core
dengan debugging yang diaktifkan. Breakpoint yang disetel di mana pun dalam kode akan berfungsi.
Jika Anda ingin mempercepat waktu siklus penyelesaian, Anda juga dapat menguji satu fungsi atau satu kelas pengujian saja.
Ini berfungsi dengan menambahkan -Dtest=MyTestClass
atau -Dtest=MyTestClass#myTestFunction
ke konfigurasi yang dijalankan. Baris perintah lengkap dalam konfigurasi run adalah:
-Dtest=MyTestClass#myTestFunction -DforkCount=0 -f pom.xml -s ../settings.xml test
Dalam contoh berikut diasumsikan bahwa sumber yang akan diperiksa berada di direktori kerja saat ini dan laporan akan ditulis ke $(pwd)/odc-reports
. Direktori data dan cache yang persisten digunakan, memungkinkan Anda menghancurkan container setelah dijalankan.
Untuk 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"
Untuk 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"
Untuk membangun pemeriksaan ketergantungan (menggunakan Java 11) jalankan perintah:
mvn -s settings.xml install
Pemeriksaan ketergantungan mereferensikan beberapa dependensi rentan yang tidak pernah digunakan kecuali sebagai sumber daya pengujian. Semua dependensi pengujian opsional ini disertakan dalam profil test-dependencies
. Untuk menjalankan pemeriksaan ketergantungan terhadap dirinya sendiri, cukup kecualikan profil test-dependencies
:
mvn org.owasp:dependency-check-maven:aggregate -P-test-dependencies -DskipProvidedScope=true
Dokumentasi pada halaman github dihasilkan dari repositori ini:
mvn -s settings.xml site site:staging
Setelah selesai, arahkan browser Anda ke ./target/staging/index.html
.
Untuk membangun gambar buruh pelabuhan yang memeriksa ketergantungan, jalankan perintah:
mvn -s settings.xml install
./build-docker.sh
Izin untuk memodifikasi dan mendistribusikan ulang diberikan berdasarkan ketentuan lisensi Apache 2.0. Lihat file LICENSE.txt untuk lisensi lengkap.
Dependency-Check memanfaatkan beberapa perpustakaan sumber terbuka lainnya. Silakan lihat file NOTICE.txt untuk informasi lebih lanjut.
Produk ini menggunakan API NVD tetapi tidak didukung atau disertifikasi oleh NVD.
Hak Cipta (c) 2012-2024 Jeremy Long. Semua Hak Dilindungi Undang-undang.