본문으로 건너뛰기

취약점 데이터 출처

TRUSCA는 5개 공개 취약점 피드를 컴파일한 번들인 Trivy DB로 SBOM을 CVE에 대조합니다. 본 페이지는 각 출처가 무엇을 기여하는지, 언제 갱신되는지, 어떤 생태계를 커버하는지의 reference입니다.

대상 독자

"이 CVE는 어디서 오는가?", "왜 이 생태계는 빠졌나?"에 답해야 하는 보안 리드·감사인·운영자. 다운로드·갱신·air-gapped 미러 같은 운영자 라이프사이클은 취약점 데이터 (Trivy DB)를 참조하세요.

출처 매트릭스

출처주체업스트림 갱신기여 항목
NVD — National Vulnerability DatabaseNIST약 6시간CVE ID, CVSS v3 벡터, CPE 매칭, 참조. CVE 백본.
OSV — Open Source VulnerabilitiesGoogle연속생태계별 어드바이저리 + 정밀 버전 범위(introduced / fixed / last_affected).
GHSA — GitHub Security AdvisoriesGitHub연속어드바이저리 메타데이터, 수정 버전, 철회 상태. npm / pip / Maven은 GHSA가 먼저인 경우가 많음.
EPSS — Exploit Prediction Scoring SystemFIRST일간30일 익스플로잇 확률 0.0–1.0 + 백분위. 선택적 EPSS 게이트 구동.
KEV — Known Exploited VulnerabilitiesCISA발표 시해당 CVE의 실환경 익스플로잇 확인 여부 boolean. 최우선 트리아지 신호.

다섯 출처 모두 동일한 Trivy DB 번들에 함께 들어 있습니다 — 포털은 스캔 시점에 이 API들을 호출하지 않습니다. 스캔별 매칭은 워커의 /var/lib/trivy/db/에서 읽으며, Trivy DB refresh 태스크가 이를 최신으로 유지합니다.

포털에서의 갱신 주기

레이어주기노브
업스트림 Trivy DB 재빌드약 6시간 (Aqua가 새 OCI 태그 게시)
포털 워커가 새 DB pull주간TRIVY_DB_REFRESH_HOURS (기본 168)
로컬 DB에 대한 스캔별 매칭스캔당 (네트워크 없음)
기존 SBOM 자동 재매칭DB 성공 갱신 후 매번Celery beat 태스크 tasks.rematch.run_rematch

자동 재매칭 beat(roadmap)은 DT가 우리 배포에서 제공하지 못했던 킬러 기능입니다 — 새 CVE가 갱신된 DB에 들어오면, beat 태스크가 모든 프로젝트의 최신 SBOM을 순회해 매칭되는 vulnerability_findings 행을 새로 씁니다. 사용자는 재스캔 없이 Vulnerabilities 탭에서 새 발견을 확인합니다.

재탐지의 사용자 뷰(배너·알림 트리거)는 재탐지를 참조하세요.

생태계 커버리지

Trivy DB는 컴포넌트를 package URL(purl)로 매칭합니다. 아래 생태계는 커버리지가 조밀합니다 — 각각 전용 OSV 스트림 + GHSA 기여가 있습니다.

생태계purl 타입주 피드비고
npm (JavaScript / Node)pkg:npm/*OSV + GHSA + NVD1급 — 대부분 CVE는 GHSA에 먼저.
PyPI (Python)pkg:pypi/*OSV + GHSA + NVD1급.
Maven (Java / Kotlin)pkg:maven/*OSV + GHSA + NVD1급. v0.10.0(roadmap)부터 classifier 인식.
Go 모듈pkg:golang/*OSV + GHSA + NVD1급. 취약점 DB는 vuln.go.dev.
RubyGemspkg:gem/*OSV + GHSA1급.
crates.io (Rust)pkg:cargo/*OSV + GHSA1급.
Packagist (PHP)pkg:composer/*OSV + GHSA1급.
NuGet (.NET)pkg:nuget/*OSV + GHSA + NVD1급.
Hex (Elixir / Erlang)pkg:hex/*OSV견고.
Pub (Dart / Flutter)pkg:pub/*OSV견고.
Conan (C / C++)pkg:conan/*OSV위보다 희소 — C/C++ CVE는 OS 패키지 CVE인 경우가 많음(아래).
OS 패키지 (Alpine, Debian, RHEL 등)pkg:apk/*, pkg:deb/*, pkg:rpm/*NVD + 배포판별 보안 어드바이저리컨테이너 스캔 파이프라인(scan_container.py)이 사용. C/C++ 코드 레포의 소스 스캔에선 생성되지 않음.

컴포넌트의 purl이 피드 엔트리와 일치하지 않으면 finding이 만들어지지 않습니다 — 설계상 조용히. 흔한 두 원인:

  • 비정규 purl. cdxgen은 보수적입니다 — 잘못된 package.json은 정규화되지 않는 purl을 낼 수 있습니다. 스캔 ID와 함께 이슈로 보고하세요. 생성기는 점진 강화.
  • OSV / GHSA에 아직 없는 생태계. 커버리지는 매월 늘어납니다. 업스트림 진실은 OSV 생태계 목록.

분석 유형

Dependency-Track 급 도구와 비교해 Trivy DB는 finding별로 다음 신호를 노출합니다. 포털은 Vulnerabilities 탭과 API로 모두 노출합니다.

신호출처포털 위치
CVE IDNVD / OSV / GHSA행 식별자, 헤더 chip.
Severity (critical / high / medium / low)NVD CVSS v3 (우선) → GHSA → OSV행 배지, 분포 카드, severity 필터.
CVSS v3 벡터NVDFinding drawer → Summary.
설명 / 제목NVD / GHSAFinding drawer → Summary.
CWENVDFinding drawer → Summary.
수정 버전GHSA → OSV (fixed 범위)Finding drawer → Affected component → "Fixed in".
영향 버전 범위OSV (introduced / last_affected / fixed)매처가 사용; 직접 노출은 없음.
EPSS 점수 / 백분위EPSSFinding drawer → Summary; 정렬 가능 컬럼; GATE_EPSS_THRESHOLD 게이트.
KEV (실환경)KEV 카탈로그Finding 행 배지; 게이트 구동 가능 (post-GA 로드맵).
ReferencesNVD / GHSA / OSV (URL 중복 제거)Finding drawer → References.

포털이 소비하지 않는 것:

  • 상용 피드의 큐레이션된 취약점 리서치(Black Duck KnowledgeBase, Snyk DB) — 설계상 공개 피드만 사용.
  • NVD로 흘러드는 것 외 벤더 어드바이저리(Oracle CPU, Microsoft MSRC). 향후 릴리스에서 추가 Trivy data source로 붙일 수 있음.
  • Reachability 분석. 포털은 콜 그래프를 파싱하지 않으며, 매칭된 CVE는 모두 "영향 가능"으로 표시.

트리아지에의 의미

위 매트릭스는 모든 분석가가 자동으로 받는 입력입니다. 다음 두 관행이 신호 대 잡음을 높입니다.

  1. CVSS 위에 EPSS를 겹쳐 보세요. EPSS 백분위 > 95medium은 EPSS < 5critical보다 먼저 봐야 합니다. 컬럼 정렬 또는 GATE_EPSS_THRESHOLD env로 게이트.
  2. KEV로 필터링하세요. Vulnerabilities 탭은 KEV 필터를 제공합니다 — CISA 카탈로그에 있는 것은 실환경 익스플로잇이 확인된 것이며, severity 단독 순위보다 먼저 패치해야 합니다.

사용자 흐름(drawer, VEX 상태 머신, suppression)은 Vulnerabilities를 참조하세요.

참고