"CVSS 10.0"이나 "CVSS 9.8 RCE" 같은 숫자는 거의 모든 취약점 기사 제목에 등장합니다. 이 숫자는 지어낸 것이 아니라, 정의된 지표 집합과 공식에서 나옵니다. 그 읽는 법을 바닥부터 살펴봅니다.
점수 가이드
| 점수 | 등급 | 체감 |
|---|---|---|
| 9.0 – 10.0 | Critical | 즉시 조치; 흔히 장악 등급 |
| 7.0 – 8.9 | High | 곧 대응 |
| 4.0 – 6.9 | Medium | 계획에 포함 |
| 0.1 – 3.9 | Low | 주시 |
CVE가 취약점의 이름이라면, CVSS는 그 심각도 점수입니다. "CVSS 10.0 RCE"는 최고 등급의 원격 코드 실행을 뜻합니다 — 최악 등급.
CVSS의 채점 기준
CVSS 점수는 세 가지 지표 그룹으로 구성됩니다. "CVE-XXXX는 9.8"처럼 공개되는 값은 거의 항상 Base 점수입니다.
Base
취약점 그 자체. 공개되는 값.
Threat
익스플로잇 가용성에 따라 시간이 지나며 보정.
Environmental
내 환경과 우선순위에 맞게 재계산.
① 익스플로잇 용이성
② 영향
Base 점수는 대략 **"① 익스플로잇이 얼마나 쉬운가" × "② 영향이 얼마나 큰가"**입니다. 다음 두 표가 그 지표들입니다.
① 익스플로잇 용이성(얼마나 쉽게 공격되는가)
| 지표 | 값 | 최악(점수를 높임) |
|---|---|---|
| 공격 벡터(AV) | Network / Adjacent / Local / Physical | Network(인터넷 너머)가 가장 위험 |
| 공격 복잡도(AC) | Low / High | Low(특별 조건 불필요)가 위험 |
| 필요 권한(PR) | None / Low / High | None(로그인 불필요)이 위험 |
| 사용자 상호작용(UI) | None / Required | None(피해자가 아무것도 안 함)이 위험 |
② 영향(성공하면 무슨 일이 일어나는가)
CIA = 보안의 세 기둥: 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability).
| 지표 | 값 | "High"의 의미 |
|---|---|---|
| 범위(S) | Unchanged / Changed | Changed = 침해가 원래의 권한 경계를 넘음 |
| 기밀성(C) | High / Low / None | 데이터를 통째로 읽을 수 있음 |
| 무결성(I) | High / Low / None | 데이터를 마음대로 변조할 수 있음 |
| 가용성(A) | High / Low / None | 서비스를 완전히 멈출 수 있음 |
'Scope: Changed'가 점수를 끌어올린다
예를 들어 컨테이너 안에 갇힌 피해(Unchanged)와 거기서 호스트나 다른 서비스로 번지는 경우(Changed)의 차이입니다. 그 경계를 넘느냐가 다른 조건이 동일할 때 점수를 크게 움직입니다.
벡터 문자열: 점수의 내역을 한 줄로
모든 CVSS 점수에는 벡터 문자열이 따라옵니다 — 어떤 지표를 골랐는지의 기록, 즉 그 숫자의 이유입니다.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H → 10.0 (Critical)분해해 보면 모두 "가장 위험"으로 설정되어 있습니다:
| 구간 | 의미 | 이 예시 |
|---|---|---|
AV:N | 공격 벡터 = Network | 인터넷 너머로 공격 |
AC:L | 공격 복잡도 = Low | 성공시키기 쉬움 |
PR:N | 필요 권한 = None | 인증 불필요 |
UI:N | 사용자 상호작용 = None | 피해자 행동 불필요 |
S:C | 범위 = Changed | 경계를 넘음 |
C:H / I:H / A:H | CIA = 모두 High | 읽히고, 쓰이고, 멈춤 |
10.0과 9.8을 가르는 것
그 예시에서 범위를 "Unchanged"(S:U)로 바꾸면 같은 조건이 9.8이 됩니다. 경계를 넘느냐(S:C)가 최대치 10.0에 도달하게 합니다. 즉 9.8 vs 10.0 = "둘 다 최악 등급이지만, 피해가 한 단계 더 넓게 번짐"입니다.
v3.1 vs v4.0: 지금은 둘 다 유통 중
현재 버전은 v4.0(2023)이지만, 대부분의 CVE는 여전히 **v3.1(2019)**로 채점되므로 둘이 당분간 공존합니다.
| CVSS v3.1 | CVSS v4.0 | |
|---|---|---|
| 출시 | 2019 | 2023 |
| 표기 | 점수 + 벡터 | CVSS-B / BT / BE / BTE, 목적 명시 |
| 사용자 상호작용 | None / Required (2) | None / Passive / Active (3) |
| 범위 | Scope(S), 단일 지표 | "취약 시스템"과 "후속 시스템" 영향으로 분리 |
| 추가 | 없음 | 보충 지표 추가(자동화 가능성, 복구, 안전성…) |
사례: 잘 알려진 취약점의 실제 점수
NVD에 실린 실제 점수입니다. 숫자가 실제 피해와 항상 일치하지는 않는다는 점, 그리고 평가자나 CVSS 버전에 따라 점수가 달라질 수 있다는 점을 보여 줍니다.
| 취약점 | CVSS v3.1 | 벡터의 특징 | 알 수 있는 것 |
|---|---|---|---|
| Log4Shell (CVE-2021-44228) | 10.0 Critical | 모든 지표가 최악, S:C | 널리 쓰이는 구성요소 안의 전형적인 10.0 |
| Apache Struts (CVE-2017-5638) | 9.8 Critical | S:U(범위 변경 없음) | 예전 v2에서는 10.0 — 버전에 따라 숫자가 달라진다 |
| 어느 VPN 장비의 취약점 (CVE-2018-13379) | NVD 9.8 / 제품 벤더 9.1 | 평가자마다 무결성 I를 다르게 평가 | 같은 CVE라도 출처에 따라 점수가 다르다. 일본 한다 병원 사고(영문)의 침입 경로로 보고됨 |
| Heartbleed (CVE-2014-0160) | 7.5 High | 기밀성 C:H만, 변조·중단 없음 | Critical이 아니었지만 개인 키가 노출될 수 있는 대형 사고가 되었다 |
네 건 모두 미국 CISA의 "악용이 확인된 취약점" 카탈로그(KEV)에 올라 있습니다. 7.5인 Heartbleed도 실제로 악용되었습니다. 점수만으로 "미뤄도 된다"고 판단할 수 없는 이유입니다.
점수 외에 확인할 것
기준이 있다는 점이 CVSS를 강력하게 만듭니다. 하지만 점수는 최악의 이론값입니다. 실무에서는 두 가지 요소를 곱하세요.
악용되고 있는지 확인(KEV)
실제 공격이 관측된 취약점(KEV — Known Exploited Vulnerabilities)은 점수와 무관하게 최우선입니다. "지금 공격받고 있음"이 이론적 숫자보다 중요합니다.
해당 기능을 쓰는지 확인
해당 구성요소를 쓰지 않는다면 CVSS 10.0도 실제 영향이 작고, 운영에서 그것을 건드린다면 중간 점수가 최우선입니다. 실제로 구동 중인 버전으로 판단하세요.
공개된 CVSS 10.0을 "내 문제 아님"으로 치부한 것이 부정 과금 사고로 이어졌습니다. 점수는 결코 방치의 이유가 될 수 없습니다. → 방치된 CVSS 10.0
내 환경에서 확인하는 방법
사용 중인 제품의 CVE와 점수를 찾는다
벤더의 보안 권고, NVD, JVN에서 확인합니다. CVE 번호를 알고 있다면 이 사이트의 CVE / KEV 조회에서 CVSS·EPSS·KEV를 한 번에 볼 수 있습니다.
벡터를 읽고 내 환경에 해당하는지 따져 본다
AV:N(네트워크 너머)이라도 해당 기능이 인터넷에 노출되어 있지 않다면 위험은 낮아집니다. PR:L(로그인 필요)이라면 누가 로그인할 수 있는지 확인하세요. 벡터를 CVSS 계산 · 벡터 해석에 붙여넣으면 각 항목의 의미를 볼 수 있습니다.
의존성 대조는 기계에 맡긴다
직접 만든 웹 앱이라면 lockfile을 의존성 취약점 스캐너나 Dependabot으로 검사해 해당하는 CVE와 점수를 목록으로 뽑습니다. 눈으로 일일이 추적하는 것보다 확실합니다.
출처(1차 자료)
- FIRST, "CVSS v3.1 Specification Document" — first.org(지표와 심각도 등급)
- FIRST, "CVSS v4.0 Specification Document" — first.org
- NIST NVD, "CVE-2014-0160" — nvd.nist.gov(CVE-2021-44228, CVE-2017-5638, CVE-2018-13379의 점수와 벡터도 같은 방식으로 각 NVD 페이지에서 확인)
- CISA, "Known Exploited Vulnerabilities Catalog" — cisa.gov
- FIRST, "Exploit Prediction Scoring System (EPSS)" — first.org
다음으로 읽기
- 판단: 어떤 CVE부터 고칠까 — CVSS·EPSS·KEV
- 도구: CVSS 계산 · 벡터 해석(벡터 문자열을 붙여넣으면 점수와 각 항목의 의미를 표시)
- 용어집: CVE란 · RCE란
- 방어: CVE/CVSS를 워크플로에 녹이기