종속성 검사는 프로젝트의 종속성 내에 포함되어 공개적으로 공개된 취약점을 탐지하려고 시도하는 SCA(소프트웨어 구성 분석) 도구입니다. 이는 특정 종속성에 대한 CPE(Common Platform Enumeration) 식별자가 있는지 확인하여 이를 수행합니다. 발견되면 관련 CVE 항목에 연결되는 보고서가 생성됩니다.
프로덕션 바이너리 릴리스에 대한 문서 및 링크는 github 페이지에서 찾을 수 있습니다. 또한 아키텍처에 대한 자세한 내용과 종속성 검사를 확장하는 방법은 위키에서 찾을 수 있습니다.
이 제품은 NVD API를 사용하지만 NVD에서 보증하거나 인증하지 않습니다.
이제 종속성 검사 11.0.0 이상을 실행하려면 Java 11이 필요합니다.
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는 NVD가 이전 클라이언트의 호출을 차단할 수 있도록 업데이트된 User-Agent
헤더를 사용합니다.
종속성 검사가 NVD 데이터 피드 사용에서 NVD API로 이동되었습니다. 종속성 검사 사용자는 NVD API 키를 얻는 것이 좋습니다 . https://nvd.nist.gov/developers/request-an-api-key를 참조하세요. NVD API 키가 없으면 종속성 확인 업데이트가 매우 느려 집니다. NVD API 키를 설정하는 방법은 cli, maven, gradle 또는 ant 통합에 대한 문서를 참조하세요.
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 버전: 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
*nix에서
$ ./bin/dependency-check.sh -h
$ ./bin/dependency-check.sh --out . --scan [path to jar files to be scanned]
Windows의 경우
> .bindependency-check.bat -h
> .bindependency-check.bat --out . --scan [path to jar files to be scanned]
Mac에서 Homebrew 참고 - 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 페이지에서 확인할 수 있습니다. 기본적으로 플러그인은 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 플러그인 사용에 대한 지침은 dependency-check-gradle github 페이지를 참조하세요.
Ant 작업 사용에 대한 지침은 dependency-check-ant github 페이지를 참조하세요.
설치를 통과하려면 다음 구성 요소가 설치되어 있어야 합니다.
java -version
11.0mvn -version
3.5.0 이상테스트 사례에는 다음이 필요합니다.
go version
다음 지침에서는 현재 스냅샷을 컴파일하고 사용하는 방법을 간략하게 설명합니다. 모든 의도는 안정적인 스냅샷을 유지하는 것이지만 위에 나열된 릴리스 버전을 사용하는 것이 좋습니다.
테스트 리소스로 인해 저장소에 일부 대용량 파일이 있습니다. 팀은 가능한 한 기록을 정리하려고 노력했습니다. 그러나 시간을 절약하려면 얕은 복제를 수행하는 것이 좋습니다.
git clone --depth 1 https://github.com/jeremylong/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
> .clitargetreleasebindependency-check.bat -h
> .clitargetreleasebindependency-check.bat --out . --scan ./src/test/resources
그런 다음 결과 'dependent-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"
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
Github 페이지의 문서는 다음 저장소에서 생성됩니다.
mvn -s settings.xml site site:staging
완료되면 브라우저에서 ./target/staging/index.html
을 지정하세요.
종속성 확인 Docker 이미지를 빌드하려면 다음 명령을 실행하세요.
mvn -s settings.xml install
./build-docker.sh
수정 및 재배포 권한은 Apache 2.0 라이센스 조건에 따라 부여됩니다. 전체 라이선스는 LICENSE.txt 파일을 참조하세요.
종속성 검사는 다른 여러 오픈 소스 라이브러리를 사용합니다. 자세한 내용은 NOTICE.txt 파일을 참조하세요.
이 제품은 NVD API를 사용하지만 NVD에서 보증하거나 인증하지 않습니다.
저작권 (c) 2012-2024 Jeremy Long. 모든 권리 보유.