93 lines
3.0 KiB
Markdown
93 lines
3.0 KiB
Markdown
# OWASP Dependency-Check 운영 가이드
|
|
|
|
**적용 범위**: bibimbap `pom.xml` — `dependency-check-maven 12.2.2`
|
|
**결정 출처**: D-B4-cve (sid 20260629-175705)
|
|
**관련 체크리스트**: [security-remediation-checklist.md §B4](./security-remediation-checklist.md#b4-의존성세션운영-하드닝)
|
|
|
|
## 설정 개요
|
|
|
|
```xml
|
|
<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 데이터 갱신 포함)
|
|
|
|
```bash
|
|
mvn dependency-check:check
|
|
```
|
|
|
|
NVD API 키가 없으면 요청 제한에 걸려 매우 느릴 수 있다. 처음 실행 시 수 분 소요 정상.
|
|
|
|
### 오프라인 모드 (캐시 재사용)
|
|
|
|
`autoUpdate=false`가 기본이므로 플러그인 설정 그대로 실행하면 로컬 캐시를 사용한다.
|
|
|
|
```bash
|
|
mvn dependency-check:check
|
|
```
|
|
|
|
캐시 위치: `~/.m2/repository/org/owasp/dependency-check-data/` (기본값).
|
|
캐시가 없으면 온라인 다운로드가 강제된다.
|
|
|
|
캐시를 명시적으로 지정하려면:
|
|
|
|
```bash
|
|
mvn dependency-check:check -Ddependency-check.dataDirectory=/path/to/cache
|
|
```
|
|
|
|
### 도커 dev 환경
|
|
|
|
```bash
|
|
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 파일 사용:
|
|
|
|
```bash
|
|
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 요약 출력됨.
|
|
|
|
## 관련 문서
|
|
|
|
- [multipart-size-risk.md](./multipart-size-risk.md) — 1GB 유지 리스크 (동일 B4 트랙)
|
|
- [security-remediation-checklist.md](./security-remediation-checklist.md) — 전체 보안 체크리스트
|