보안 취약점의 식별과 평가, CVE·CWE·CVSS 용어 정리
들어가며
소프트웨어 보안을 다루려면 취약점을 어떻게 식별하고, 어떤 유형인지, 얼마나 위험한지 말할 수 있어야 합니다. 이번 글에서는 그 기준이 되는 CVE, CWE, CNA, CVSS 같은 용어를 간단히 정리했습니다.
CVE: 취약점의 고유 번호
CVE(Common Vulnerabilities and Exposures)는 소프트웨어 보안 결함에 대한 표준화된 식별자 목록입니다. 1999년 9월 공개되었고, 미국 MITRE가 국토안보부(DHS) 지원 아래 CVE 시스템을 개발했습니다. 목적은 서로 다른 보안 DB·도구 간에 데이터를 공유하고 취약점을 명확히 가리키기 위함입니다. CVE 자체에는 리스크·영향도·패치 같은 기술 정보는 없고, 상세 내용은 NVD, CERT/CC 등 다른 사이트에서 찾을 수 있습니다. 각 취약점에는 CVE ID가 부여되며 형식은 `CVE-YYYY-NNNN`입니다. 접두사 CVE-, 연도(할당·공개 연도), 최소 4자리 일련번호(2014년부터 5자리 이상 확장 가능)로 이루어집니다. CVE 항목에는 간단한 설명과 참조 링크가 들어가며, 아직 상세가 공개되지 않은 경우 "RESERVED" 상태로 둘 수 있습니다.
CWE: 취약점 유형의 사전
CWE(Common Weakness Enumeration)는 소프트웨어·하드웨어에서 나타나는 보안 취약점의 근본 원인(유형)을 모아 둔 사전입니다. DHS 지원으로 MITRE가 관리하며, 매우 넓은 개념부터 코드 수준의 실수까지 트리 구조로 분류됩니다. 예를 들어 CWE-79(XSS), CWE-89(SQL Injection), CWE-78(OS Command Injection), CWE-20(부적절한 입력 검증), CWE-119(버퍼 오버플로우) 등이 있습니다. 매년(또는 주기적으로) 가장 많이 악용되고 피해가 큰 취약점 유형 25개를 순위 짓는 'CWE Top 25' 리스트가 발표됩니다.
CNA: CVE 번호를 부여하는 기관
CVE 번호는 CNA(CVE Numbering Authority)라고 불리는 승인된 기관들이 부여합니다. MITRE 외에 Microsoft, Oracle, Red Hat, Google 등 주요 벤더와 연구 기관이 CNA로 지정되어 자체 제품이나 발견한 취약점에 CVE를 부여할 수 있습니다. CVE가 부여되려면 해당 결함이 독립적으로 수정 가능해야 하고, 벤더가 인정하거나 문서화해야 하며, 하나의 코드베이스에 영향을 미쳐야 합니다. 취약점이 CNA에 보고되면 검토 후 CVE ID가 할당되고, 패치 준비 동안 비공개(엠바고)로 두었다가 해결책이 나오면 공개됩니다.
CVSS: 심각도 점수 체계
CVSS(Common Vulnerability Scoring System)는 보안 취약점의 심각도를 평가해 수치로 나타내는 개방형 표준입니다. CVE가 취약점의 '이름(번호)'이라면 CVSS는 '얼마나 위험한지'를 알려주는 점수입니다. 0.0~10.0으로 표시하며 숫자가 클수록 더 위험하고, Low·Medium·High·Critical 같은 등급으로도 쓰입니다. CVSS 4.0은 2023년 11월 공식 공개되었습니다. 기본 지표는 환경·시간에 무관한 취약점 고유 위험(익스플로잇 가능성, 영향도)을, 위협 지표는 시간에 따라 변하는 실제 공격 현황(확인된 공격·PoC·미보고·미정의)을, 환경 지표는 조직·방어책을 반영한 조정 점수를, 보충 지표는 v4.0에서 추가된 대응 맥락(점수에는 미반영)을 담습니다. 익스플로잇 가능성은 공격 벡터(원격·인접·로컬·물리), 공격 복잡성(낮음·높음), 공격 요구사항(없음·존재), 필요 권한(없음·낮음·높음), 사용자 상호작용(없음·수동·능동) 등으로 세분됩니다.
맺음말
CVE로 취약점을 고유하게 식별하고, CWE로 유형을 파악하며, CNA가 번호를 관리하고, CVSS로 심각도를 비교할 수 있습니다. 보안 공부나 대응 우선순위를 정할 때 이 용어들이 기준이 됩니다.