CISA · OpenVEX · CycloneDX
VEX 완전 가이드
취약점이 발견됐다고 해서 모두 위험한 것은 아닙니다. VEX는 SBOM의 취약점 정보에 "이 취약점이 실제로 악용 가능한가?"를 명시하는 표준 문서입니다. Alert Fatigue를 줄이고 실제 위험 요소에 집중하게 합니다.
01
VEX란 무엇인가
VEX(Vulnerability Exploitability eXchange)는 미국 CISA가 주도하는 SBOM 보완 표준입니다. SBOM이 "어떤 컴포넌트가 포함됐나?"를 알려준다면, VEX는 "그 취약점이 이 제품에서 실제로 악용될 수 있나?"를 명시합니다.
핵심 개념
취약점 개수가 많다고 위험한 게 아닙니다. Log4Shell(CVE-2021-44228)을 탑재해도 해당 기능이 실행 경로(Call Graph)에 없으면 Not Affected입니다. VEX는 이 판단 근거를 공식 문서로 남깁니다.
VEX 없이 SBOM만 있을 때
CVE 500개 발견 → 500개 모두 검토 → 팀 번아웃, Alert Fatigue. 실제 위험한 것과 아닌 것의 구분이 불가능합니다.
VEX 적용 후
500개 CVE 중 VEX 분류 → Affected 12개만 즉시 대응. 나머지 488개는 Not Affected / Fixed / Under Investigation으로 근거 문서화.
규제 맥락
EU CRA · 미국 EO 14028 · 국내 2027 공공 SBOM 의무화 모두 SBOM + VEX 조합을 요구합니다. VEX 없는 SBOM은 불완전한 규제 대응입니다.
02
VEX 5가지 상태값 (Status)
VEX 문서의 핵심은 각 CVE에 대한 상태(Status)를 명시하는 것입니다.
| 상태값 | 의미 | 실무 예시 | 고객 대응 포인트 |
|---|---|---|---|
| Affected | 취약점이 실제 악용 가능 | Log4j 취약 버전이 외부 입력 처리 경로에 위치 | 즉시 패치 대상. SLA 협의 필요 |
| Not Affected | 포함되지만 취약 기능이 미호출 | Log4j 탑재했지만 JNDI lookup 기능 미사용 | VEX 문서로 "실행 경로 외부" 근거 제시 |
| Fixed | 패치·업데이트로 해결 완료 | OpenSSL 3.0.7 → 3.0.8로 업데이트 | 패치 날짜·버전 명시. 감사 자료 활용 |
| Under Investigation | 영향 여부 분석 중 | 신규 CVE 발표 직후 코드 분석 중 | 분석 완료 예상 날짜 제시 |
| In Triage | 영향 확인, 패치 방법 검토 중 | 취약점 확인, 패치 없는 제로데이 상황 | 완화 조치(Mitigation) 제시 |
실무 팁
고객사 보안팀은 "CVE 몇 개?"보다 "Affected는 몇 개?"를 더 중요하게 봅니다. 500개 중 Affected 12개라는 숫자가 훨씬 설득력 있는 보안 리포트입니다.
03
VEX 문서 구조 (CycloneDX 형식)
VEX는 CycloneDX, OpenVEX, CSAF 세 가지 형식으로 표현됩니다. 가장 널리 쓰이는 CycloneDX VEX 구조입니다.
CycloneDX VEX · JSON
// CycloneDX 형식 VEX 문서 예시
{
"bomFormat": "CycloneDX", "specVersion": "1.5",
"metadata": {
"timestamp": "2026-04-15T09:00:00Z",
"component": { "name": "example-service", "version": "2.3.1" }
},
"vulnerabilities": [{
"id": "CVE-2021-44228", // Log4Shell CVSS 10.0
"analysis": {
"state": "not_affected", ← 핵심 상태값
"justification": "protected_by_compiler",
"detail": "JNDI lookup disabled at build time."
},
"affects": [{ "ref": "pkg:maven/log4j-core@2.14.1" }]
}]
}
justification 주요 값
component_not_present — 컴포넌트 미포함 |
vulnerable_code_not_in_execute_path — 실행 경로 외부 |
protected_by_mitigating_control — WAF 등 외부 방어 존재
04
CI/CD 연동 흐름
VEX는 빌드 파이프라인에 통합될 때 가장 강력합니다. SBOM 생성 → VEX 분석 → Policy Gate 순서로 자동화됩니다.
Git Push
코드 변경
→
Build
컴파일·패키지
→
SBOM 생성
CycloneDX
→
VEX 분석
Reachability
→
Policy Gate
Affected만 차단
→
배포
VEX 문서 첨부
VEX 기반 Policy Gate
CVE 전체 차단이 아닌 Affected 상태의 취약점만 빌드 차단. False Positive로 인한 파이프라인 중단을 방지합니다.
자동 VEX 갱신
새 CVE 발표 시 Under Investigation으로 자동 등록 → 분석 완료 시 상태 업데이트. VEX 버전 관리가 자동화됩니다.
릴리즈 아티팩트 첨부
소프트웨어 릴리즈 시 SBOM + VEX를 함께 패키징. EU CRA 규제 납품 요구사항을 자동 충족합니다.
주의
VEX의 Not Affected 판정은 기술적 근거가 필수입니다. "그 기능 안 쓴다"는 주장만으로는 부족하며, Call Graph 분석 · 빌드 플래그 · 환경 설정 등 검증 가능한 근거를 justification 필드에 명시해야 합니다.
05
고객 대응 Q&A
고객사에서 자주 나오는 VEX 관련 질문과 권장 응답입니다.
QNVD 점수가 9.8 Critical인데 왜 패치 우선순위가 낮나요?›
권장 답변: NVD 점수(CVSS)는 취약점 자체의 심각도이고, VEX는 이 제품의 이 환경에서의 실제 악용 가능성입니다.
"해당 CVE는 JNDI lookup 기능을 통해 공격이 가능한데, 저희 제품에서는 해당 기능이 빌드 시점에 비활성화되어 있고 외부 입력과 연결되는 실행 경로가 존재하지 않습니다. VEX 상태는 Not Affected이며, 코드 분석 리포트를 첨부해드릴 수 있습니다."
"해당 CVE는 JNDI lookup 기능을 통해 공격이 가능한데, 저희 제품에서는 해당 기능이 빌드 시점에 비활성화되어 있고 외부 입력과 연결되는 실행 경로가 존재하지 않습니다. VEX 상태는 Not Affected이며, 코드 분석 리포트를 첨부해드릴 수 있습니다."
Q"Not Affected"라고 했는데 나중에 문제가 생기면 책임은 누가 지나요?›
권장 답변: VEX는 분석 시점의 상태를 기록한 문서이며, 기술적 근거가 명시되어 있어 법적 방어 자료로 활용됩니다.
"VEX는 '절대 안전' 선언이 아닙니다. 당시 분석 근거와 날짜·버전이 기록된 문서입니다. 새 익스플로잇 기법이 발견되면 상태가 Under Investigation으로 전환되고 재분석이 트리거됩니다. 오히려 VEX 없이 '패치 안 했음'이 더 큰 법적 리스크입니다."
"VEX는 '절대 안전' 선언이 아닙니다. 당시 분석 근거와 날짜·버전이 기록된 문서입니다. 새 익스플로잇 기법이 발견되면 상태가 Under Investigation으로 전환되고 재분석이 트리거됩니다. 오히려 VEX 없이 '패치 안 했음'이 더 큰 법적 리스크입니다."
Q기존 보안 스캐너가 있는데 VEX가 추가로 왜 필요한가요?›
권장 답변: 기존 스캐너는 취약점을 탐지하고, VEX는 탐지된 결과를 컨텍스트화합니다.
"Snyk·SonarQube 같은 스캐너는 CVE 목록을 생성합니다. VEX는 그 목록의 각 항목이 실제 이 제품·버전·환경에서 악용 가능한지를 공식 문서로 기록합니다. SBOM 의무화 이후 제출 패키지에는 VEX가 사실상 필수입니다."
"Snyk·SonarQube 같은 스캐너는 CVE 목록을 생성합니다. VEX는 그 목록의 각 항목이 실제 이 제품·버전·환경에서 악용 가능한지를 공식 문서로 기록합니다. SBOM 의무화 이후 제출 패키지에는 VEX가 사실상 필수입니다."
QVEX 문서를 매 릴리즈마다 수동으로 업데이트해야 하나요?›
권장 답변: 자동화가 핵심 가치입니다.
"저희 솔루션은 CI/CD에 통합되어 빌드할 때마다 SBOM + VEX를 자동 생성합니다. 새 CVE가 NVD에 등록되면 영향 컴포넌트의 VEX 상태가 자동으로 Under Investigation으로 변경되고 분석 큐에 추가됩니다."
"저희 솔루션은 CI/CD에 통합되어 빌드할 때마다 SBOM + VEX를 자동 생성합니다. 새 CVE가 NVD에 등록되면 영향 컴포넌트의 VEX 상태가 자동으로 Under Investigation으로 변경되고 분석 큐에 추가됩니다."
06
규제 연계 — CRA · EO 14028 · 국내 SBOM 의무화
VEX는 주요 규제 프레임워크에서 SBOM의 필수 보완 문서로 명시되고 있습니다.
EU CRA (Cyber Resilience Act)
2025년 발효. 디지털 제품 제조사는 알려진 취약점에 대한 대응 현황을 문서화해야 합니다. VEX는 "대응 현황 문서"의 표준 형식으로 인정됩니다.
미국 EO 14028
연방정부 납품 소프트웨어에 SBOM 제출 의무화. CISA가 VEX를 SBOM 보완 표준으로 공식 권고. 미국 공공 시장 진출 시 필수 요건입니다.
국내 — 2027 공공 SBOM 의무화
2027년부터 공공기관 SW 납품 시 SBOM 제출 의무화 예정. 과기정통부·KISA 가이드라인이 VEX 형식 포함. 지금 준비하지 않으면 2027년에 급진적 대응이 필요합니다.
세일즈 핵심 메시지
"VEX 없는 SBOM은 의사 없는 건강검진 결과지입니다. 수치는 있는데 해석이 없습니다. 규제 심사관도, 고객사 CISO도 이제는 VEX가 첨부된 SBOM을 요구합니다."