VEX
VEX(Vulnerability Exploitability eXchange)는 "이 취약점이 우리 제품에 실제로 악용 가능한가"를 표준 형식으로 밝히는 문서입니다. 스캔이 CVE 를 발견해도 실제로는 영향이 없는 경우가 많습니다. VEX 는 그 판단을 근거와 함께 문서로 남겨, 받는 쪽의 재확인을 줄입니다.
무엇을 내보내나
VEX 는 새로 판단하는 것이 아니라, 취약점 관리에서 조치·트리아지한 결정을 그대로 반영해 문서로 옮깁니다. 오탐·위험 수용·조치 완료 같은 처리 결과가 각 CVE 의 VEX status 로 변환됩니다. 따라서 정확한 VEX 를 얻으려면 먼저 취약점을 트리아지해 두어야 합니다.
- 조직의 트리아지 결과(오탐 · 위험 수용 · 조치 완료 등)를 VEX status 로 변환해 내보냅니다.
- CVE 가 매핑된 항목만 대상이 됩니다. CVE 가 없는 항목(예: 일부 SAST · 시크릿 발견)은 VEX 로 표현하지 않습니다.
- 서비스 유형과 무관하게, CVE 기반 취약점이 있으면 내보낼 수 있습니다.
- 아직 트리아지하지 않은 항목은
under_investigation(조사 중)으로 나갑니다.
트리아지 상태와 VEX status
취약점 관리에서 내린 결정이 VEX status 로 변환됩니다. 결정을 내리지 않은 항목은 under_investigation(조사 중)으로 나갑니다.
| 트리아지 처리 | VEX status | 의미 |
|---|---|---|
| 오탐 (false positive) | not_affected | 이 취약점은 영향을 주지 않음 |
| 위험 수용 (accepted risk) | affected | 영향은 받지만 (조치 없이) 위험을 수용함 |
| 조치완료 (재스캔에서 더 이상 발견되지 않음) | fixed | 이미 조치되어 발견되지 않음 |
| 미조치 · 조사 중 | under_investigation | 아직 판단하지 않음 |
위험 수용은 not_affected 가 아닙니다
"위험 수용"은 영향이 없다는 뜻이 아니라, 영향을 인지하고도 조치하지 않기로 한 결정이므로 affected 로 나갑니다. 영향이 없다는 판단은 "오탐"으로 처리해야 not_affected 가 됩니다.
not_affected 근거(justification)
not_affected(오탐) 항목에는 "왜 영향이 없는가"를 밝히는 표준 근거 코드를 함께 담을 수 있습니다. 받는 쪽이 판단을 신뢰할 근거가 됩니다.
| 코드 | 의미 |
|---|---|
component_not_present | 컴포넌트 미포함 |
vulnerable_code_not_present | 취약 코드 미포함 |
vulnerable_code_not_in_execute_path | 취약 코드가 실행 경로에 없음 |
vulnerable_code_cannot_be_controlled_by_adversary | 공격자가 제어 불가 |
inline_mitigations_already_exist | 완화책 이미 존재 |
내보내기 범위
VEX 카드에서 두 가지 범위 중 선택합니다.
- 전체 : 조사 중(
under_investigation)인 항목까지 모두 포함합니다. - 트리아지됨 : 결정을 내린 항목만 포함하고, 조사 중인 항목은 제외합니다.
형식
- OpenVEX (JSON) : VEX 만을 위한 경량 표준입니다.
- CycloneDX (JSON) : SBOM과 같은 계열이라 구성요소 명세와 함께 다루기 좋습니다.
- PDF : 사람이 읽는 보고용 형식도 제공합니다.
VEX 로 노이즈 줄이기
고객이나 감사자에게 "이 CVE 는 영향 없음(not affected)"임을 근거와 함께 전달하면 문의와 재확인이 줄어듭니다.