본문으로 건너뛰기

취약점 분석 도구 설치 및 설정

이 문서는 취약점 분석에 사용하는 두 가지 도구(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 업로드 및 취약점 스캔 단계:

  1. Projects 메뉴 → Create Project (이름, 버전 입력)
  2. 생성된 프로젝트 클릭 → Components 탭
  3. Upload BOM 버튼 클릭
  4. output/sbom/sbom.cdx.json 선택 후 업로드
  5. 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 파일 존재 여부 확인