취약점 분석 도구 설치 및 설정
이 문서는 취약점 분석에 사용하는 두 가지 도구(Dependency Track, OSV API)의 설치·실행 방법과 트러블슈팅을 담고 있습니다.
권장 순서: OSV API로 먼저 빠르게 조회하고, 이후 Dependency Track으로 지속 모니터링 체계를 구축합니다.
Dependency Track 설치 및 실행
Dependency Track은 SBOM을 업로드하면 자동으로 취약점을 스캔하고 대시보드로 보여주는 오픈소스 도구다. 최초 NVD 데이터 동기화에 10~30분이 걸리므로, 셀프스터디 시 미리 실행해두는 것을 권장합니다.
Docker Compose 파일 (docker-compose.yml):
version: '3'
services:
dtrack-apiserver:
image: dependencytrack/apiserver:latest
ports:
- "8080:8080"
volumes:
- dtrack-data:/data
environment:
- ALPINE_DATABASE_MODE=internal
dtrack-frontend:
image: dependencytrack/frontend:latest
ports:
- "8081:8080"
environment:
- API_BASE_URL=http://localhost:8080
volumes:
dtrack-data:
실행:
# docker-compose.yml 저장 후
docker compose up -d
# 초기화 대기 (3-5분)
# 접속: http://localhost:8081
# 초기 계정: admin / admin (반드시 변경)
SBOM 업로드 및 취약점 스캔 단계:
- Projects 메뉴 → Create Project (이름, 버전 입력)
- 생성된 프로젝트 클릭 → Components 탭
- Upload BOM 버튼 클릭
output/sbom/sbom.cdx.json선택 후 업로드- Vulnerabilities 탭에서 결과 확인 (분석에 1~2분 소요)
OSV API로 빠른 조회 (Dependency Track 없이)
OSV는 Google이 운영하는 오픈소스 취약점 데이터베이스다. Docker 없이 curl 한 줄로 특정 패키지의 취약점을 조회할 수 있습니다.
특정 패키지 취약점 조회:
# log4j-core 2.14.1 취약점 조회
curl -X POST https://api.osv.dev/v1/query \
-H "Content-Type: application/json" \
-d '{
"package": {
"name": "log4j-core",
"ecosystem": "Maven"
},
"version": "2.14.1"
}'
배치 조회 (여러 패키지 동시):
curl -X POST https://api.osv.dev/v1/querybatch \
-H "Content-Type: application/json" \
-d '{
"queries": [
{"package": {"name": "log4j-core", "ecosystem": "Maven"}, "version": "2.14.1"},
{"package": {"name": "requests", "ecosystem": "PyPI"}, "version": "2.25.0"}
]
}'
vulnerability-analyst agent는 output/sbom/ 에 있는 CycloneDX SBOM 파일을 자동으로 읽어 각 컴포넌트에 대해 OSV API를 조회하고, 결과를 리포트로 정리합니다. 직접 curl 명령어를 입력할 필요가 없습니다.
트러블슈팅
| 증상 | 원인 | 해결 방법 |
|---|---|---|
| Dependency Track 접속 안 됨 | 초기화 중 | 3~5분 대기 후 재시도 |
| 취약점 0개 | NVD 데이터 로딩 중 | 10~30분 대기 (최초 실행 시) |
| OSV API 응답 없음 | 네트워크 문제 | curl -I https://api.osv.dev 로 연결 확인 |
| SBOM 업로드 오류 | 파일 형식 문제 | CycloneDX JSON 형식 확인, bomFormat 필드 존재 여부 확인 |
| agent 실행 오류 | SBOM 파일 없음 | output/sbom/ 에 .cdx.json 파일 존재 여부 확인 |