bibimbap/docs/security/owasp-dependency-check-guid...

3.0 KiB

OWASP Dependency-Check 운영 가이드

적용 범위: bibimbap pom.xmldependency-check-maven 12.2.2 결정 출처: D-B4-cve (sid 20260629-175705) 관련 체크리스트: security-remediation-checklist.md §B4

설정 개요

<plugin>
  <groupId>org.owasp</groupId>
  <artifactId>dependency-check-maven</artifactId>
  <version>12.2.2</version>
  <configuration>
    <autoUpdate>false</autoUpdate>
    <failBuildOnCVSS>7</failBuildOnCVSS>
    <skipProvidedScope>true</skipProvidedScope>
  </configuration>
  <!-- executions 없음 — 빌드 phase 비bind -->
</plugin>

수동 실행

온라인 모드 (NVD 데이터 갱신 포함)

mvn dependency-check:check

NVD API 키가 없으면 요청 제한에 걸려 매우 느릴 수 있다. 처음 실행 시 수 분 소요 정상.

오프라인 모드 (캐시 재사용)

autoUpdate=false가 기본이므로 플러그인 설정 그대로 실행하면 로컬 캐시를 사용한다.

mvn dependency-check:check

캐시 위치: ~/.m2/repository/org/owasp/dependency-check-data/ (기본값). 캐시가 없으면 온라인 다운로드가 강제된다.

캐시를 명시적으로 지정하려면:

mvn dependency-check:check -Ddependency-check.dataDirectory=/path/to/cache

도커 dev 환경

docker compose exec app mvn dependency-check:check

호스트 ~/.m2 가 마운트되어 있으면 캐시를 공유한다.

예외 기준

설정 설명
failBuildOnCVSS 7 CVSS 7.0 이상 high/critical만 빌드 실패 유발
skipProvidedScope true WAS/컨테이너 제공 라이브러리(서블릿 API 등) 제외

CVSS 7 미만(low/medium) CVE는 보고서에 기록되지만 빌드를 실패시키지 않는다. 특정 CVE를 false positive로 억제하려면 suppression 파일 사용:

mvn dependency-check:check -Ddependency-check.suppressionFile=owasp-suppressions.xml

빌드 phase 비bind 이유

executions 블록을 두지 않아 일반 mvn package·mvn test 에 포함되지 않는다.

이유:

  1. NVD 데이터 갱신/조회에 수 분이 소요되어 CI 빌드 시간 급증.
  2. autoUpdate=false 오프라인 모드에서도 스캔 자체 시간이 30초~수 분.
  3. CVE 결과는 즉각 hotfix가 아닌 우선순위 검토·예외 결정을 필요로 한다 — 빌드 자동 실패보다 수동 검토가 적합.
  4. 로컬 dev 캐시 없는 환경(CI 클린 이미지)에서 온라인 의존성 생김.

권장 주기: 배포 전 수동 1회 실행 → 보고서 검토 → CVSS 7+ 항목 처리 후 배포.

보고서 위치

실행 후 target/dependency-check-report.html 생성. 콘솔에서 HIGH/CRITICAL 요약 출력됨.

관련 문서